【发布时间】:2012-10-22 21:43:27
【问题描述】:
我在简单的打砖块游戏中更新桨位置时遇到问题,我正在使用以下侦听器做出反应:
paddle.addEventListener(Event.ENTER_FRAME, movePaddle)
当movePaddle() 函数在Main 中定义时,一切正常,但是当我重构代码并将movePaddle() 函数放入Paddle 类并将侦听器更改为:
paddle.addEventListener(Event.ENTER_FRAME, paddle.movePaddle)
结果是桨叶在所需帧和其他值之间的每一帧改变位置
下面movePaddle()函数:
public function movePaddle(event:Event):void
{
// DEBUG
trace(this.x);
trace(this.y);
this.x = mouseX - this.width / 2;
if(mouseX < this.width / 2)
{
this.x = 0;
}
// To much to right
if(this.x >= stage.stageWidth - this.width)
{
// To much to left
this.x = stage.stageWidth - this.width;
}
}
第二个问题:
就游戏优化而言,使用ENTER_FRAME 事件是否有效?
【问题讨论】:
-
第二个问题:ENTER_FRAME 很好,但您也可以使用间隔为 0 的计时器。mouseX 位于本地坐标中(在这种情况下,相对于
paddle的左上角),其中可能是什么弄乱了运动。你可以调用localToGlobal来转换mouseX。
标签: actionscript-3