AS3 - 如何使用Event.EnterFrame?

时间:2014-02-20 01:54:41

标签: actionscript-3

所以,我最近问了一个关于我的一个游戏的问题,我认为一个答案有一些潜力,但我不知道如何使用它。这是代码: Pedestrian Run 如果改变窗户大小,岩石似乎只是继续走出窗外。有什么方法可以解决这个问题并让它回到起跑线?

2 个答案:

答案 0 :(得分:0)

不确定这是否是您唯一的问题,但循环中的850 - = 15永远不会== 0.您可以尝试将代码更改为。

if (rock.x < 0) {}

答案 1 :(得分:0)

好的,我已经回答了你之前的问题,我也会回答这个问题,因为这个建议仍然是类似的。虽然我的答案不仅提供了实现并且适合您当前的设置,但是如果您要使用输入框架,则speed变量存在一些固有问题,因为它会为事件框架减少大量数量。请注意,如果这些答案可以解决您的问题,请将其标记为正确,以便其他用户可以从中受益。

如果您要更改窗口大小,请记住您不断设置:

rock.x = 850;

在您的函数moveRock( e:Event )中,如果您的窗口大小明显小于850像素,那么您将{rock}对象设置在该窗口大小之外rock.x = 0。正如@Andrew Sellenrick所述,moveRock函数if语句:

if (rock.x == 0)

也可能会导致问题,因为你要翻译-15可能是你的摇滚乐的x值为0.因此将你的if语句更改为:

if (rock.x <= 0)

是最好的路线。

同样,正如我在上一个问题中所指出的那样,您正在不必要地移除moveRock()中的事件框架。它看起来应该是这样的:

function moveRock(event:Event):void {
    rock.x -= speed;
    if (rock.x <= 0) {
        rock.x = 850;
        rock.y = 520;
    }
}

没有理由在那里添加和删除事件监听器。