gpt4 book ai didi

actionscript-3 - ENTER_FRAME 事件超过 ENTER_FRAME 事件

转载 作者:行者123 更新时间:2023-12-03 22:44:14 25 4
gpt4 key购买 nike

假设我们在 Flash 库中有一个动画片段“Enemy”,并且有一个类“Enemy.as”与之相关联,它监听 ENTER_FRAME 事件,如下所示,

public function Enemy():void
{
//constructor of this "Enemy.as" class
addEventListener(Event.ENTER_FRAME, move);
}

private function move(evt:Event):void
{
x += 5;
}

现在我的问题是这个“Enemy.as”是否在其他类中实例化,例如“Main.as”,它再次在同一个实例化的 Enemy 对象上使用 ENTER_FRAME 事件,如下所示,

public function Main():void
{
//constructor of this "Main.as" class
enemy1 = new Enemy();
enemy1.addEventListener(Event.ENTER_FRAME, checkCollision);
}

private function checkCollision(evt:Event):void
{
if(enemy1.x == mainObj.x)
{
//do something
}
}

这是优化方面的好方法吗?或者根本不应该使用这种方法?

最佳答案

从性能的角度来看,最好只在一个位置(例如在您的主应用程序类中)监听 ENTER_FRAME,然后在所有对象上调用自定义 update() 方法需要更新。例如,对于游戏来说,这是一种非常常见的方法。

从性能的角度来看,这是非常优越的一个原因是不需要创建新的 Event 实例。如果您有 100 个监听器(这在使用您概述的方法时并不少见),则意味着每帧有 100 个 Event 类的新实例,并且实例化类是您在 Flash 中可以做的最繁重的事情之一。

您实际上很少需要 ENTER_FRAME 处理程序中的 Event 对象,因此使用 update() 方法更有意义。如果可以,请尝试将其他事件以及游戏等性能关键型应用集中起来。

关于actionscript-3 - ENTER_FRAME 事件超过 ENTER_FRAME 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7263300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com