打印

[编程] 如何用as控制一个mc顺时针旋转270度?

希望实现的效果是,鼠标移到按钮上,MC就mc顺时针旋转270度。
AS怎么写?我直接设定MC转270度,效果就乱了。
this.onEnterFrame=function(){
mc._rotation+=10;
if(mc._rotation<=-90){
delete this.onEnterFrame
}
};
FLASH计算一个圆周角度值是 -180~180  而不是 0~360
引用:
原帖由 Abner 于 2008-8-7 09:23 发表
this.onEnterFrame=function(){
mc._rotation+=10;
if(mc._rotation
如果我要加个缓冲效果呢?

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!
缓冲公式 你不知道?

TOP

复制内容到剪贴板
代码:
my_mc.onRollOver = function() {
    this.onEnterFrame = function() {
        my_mc._rotation += (270-my_mc._rotation)/5;//这个是缓冲的
        //my_mc._rotation += 10;//这个是匀速的
        if (my_mc._rotation<=-90) {
            delete this.onEnterFrame;
        }
    };
};

TOP

OK。谢谢

TOP

我也发一个,呵呵
复制内容到剪贴板
代码:
var rember:Number = new Number();//记忆变量
var target:Number = -90;//目标角度
var max:Number = 3;//最大旋转圈数
var speed:Number = 30;//旋转速度
mc.onEnterFrame = function() {
    if (rember<max) {
        this._rotation += speed;
    } else {
        this._rotation -= (target+this._rotation)/10;
    }
    if (this._rotation == 0) {
        rember++;
    }
    if (this._rotation>Math.abs(target)-0.1 & rember>=max) {
        delete this.onEnterFrame;
    }
};

TOP

其实,最好拿一个变量来存储旋转值,不要直接在旋转角度上操作。
var targetRotation=270;
var rotate=0;
onEnterFrame=function(){
  rotate-=0.4*(rotate-targetRotation);
  mc._rotation=rotate;
}

TOP

回复 HBrO 在 9# 的帖子

哦,这有何奥妙在里头?
AS is in my heart

TOP

引用:
原帖由 liaoruilu 于 2008-8-7 20:37 发表
哦,这有何奥妙在里头?
让onEnterFrame里计算的资源尽量最少,提高效率。

TOP

楼上的错了.
这个不是为了省资源.相反,还会更浪费(不过这还可以优化下的,懒得做了).主要是为了不要让物体旋转到180度之后变成-180,导致运行错误.

TOP