flash AS3翻译小段AS2的代码 高分

来源:百度知道 编辑:UC知道 时间:2024/07/07 08:19:06
这是一个我以前参考网上写的一个缓冲跟随的AS2代码
现在AS3很强大我不怎么会,请教一下大家
代码如下:
onClipEvent(mouseDown){
targetx=_root._xmouse;
targety=_root._ymouse;
}
onClipEvent(enterFrame){
distx=targetx-_x;
movex=distx/10;
_x+=movex;

}
绝对正确

场景中只需随便创建一个MC 在MC上加以上代码就可以用

AS2代码可以基于元件
AS3基于整体 只能在frame上加

我把我写的AS3代码放上来
但是 没有onClipEvent(enterFrame)的循环效果

虽然也是按MOUSE_OVER Mc的方向 但是没有连续移动效果。

场景中有三个元素 over1 和over2是两个按钮 flow是要跟随鼠标移动的物体

frame上的代码如下:

over1.mc.addEventListener(MouseEvent.MOUSE_OVER,move);
over2.mc.addEventListener(MouseEvent.MOUSE_OVER,move);
function move(me:MouseEvent){
var a = mouseX - flow.x
var b = a/10;
flow.x+=b;
}

主要是不能产生连续移动的效果,只能鼠标rollover一次 移动一次。
我想解决连续移动的问题。

//flow为你的影片实例名
//随鼠标左右连续移动
stage.addEventListener(Event.ENTER_FRAME,move);
function move(me:Event) {
var a = mouseX - flow.x;
var b = a/10;
flow.x+=b;
}

你确认,你上面那段是正确的吗?

用与点击活动(鼠标按下)
目标X=根 X鼠标
目标Y=G根 Y鼠标

用与点击活动(进入框架)
县X=目标X-X
移动X+县X/10
X+=移动X

。。。我也翻译过来也有点看不懂

AS3程序动画
Event.ENTER_FRAME事件做动画的原理

每当Flash运行器执行一次预定屏幕更新检查的时候它调度Event.ENTER_FRAME事件。注册以接收Event.ENTER_FRAME通知的任何函数都被反复执行,在由当前Flash运行器帧速率决定的一个频率下。由任何Event.ENTER_FRAME事件监听器做出的可见变化在它退出之前被描绘,这就是Event.ENTER_FRAME做动画的原理。

Event.ENTER_FRAME事件做动画的缺陷

1,每当想要改变指定的帧速率的时候,我们必须更新基于该帧速率计算速度的所有代码(除非使用基于速度的动画)

2,Flash运行器不总是能到达指定的帧速率,动画变慢。这种变慢甚至因系统负载而不同,帧速率可能只在短时期下降后恢复到它的正常速率。

在一般情况中,用稍有差别的速度播放一个动画是可以接受的,但是,当要求精确控制或者可见精度是有影响的时候,我们必须考虑帧速率的缺陷。此时,我们用基于逝去的时间而不是关联于指定帧来计算移动一个移动的距离更合适(即基于速度的动画)

用Timer做动画的原理

Timer类是一个一般的实用程序类,用于在一个特定的时间间隔后执行代码。每个Timer对象在一个程序员指定的