Actionscript 3 从一个类中访问带有ENTER_FRAME事件的函数,并将更新发送到AS3中的另一个类
我想开始一个项目。但是,在做文书工作时,我意识到一种情况如下: 比如说,我们有三节课Actionscript 3 从一个类中访问带有ENTER_FRAME事件的函数,并将更新发送到AS3中的另一个类,actionscript-3,air,enterframeevent,Actionscript 3,Air,Enterframeevent,我想开始一个项目。但是,在做文书工作时,我意识到一种情况如下: 比如说,我们有三节课 梅因·阿斯 答: B.A 这里,“Main.as”是创建a和B实例的中心类 类有一些函数,比如“updatePosition(e:Event)”和ENTER_FRAME事件 类B需要通过“Main.as”从类A获取此“updatePosition(e:Event)”的更新 如何仅使用一个ENTER\u FRAME事件和仅在A.as类中的ENTER\u FRAME事件实现这一点?为什么不在main.as中放置一个
如何仅使用一个ENTER\u FRAME事件和仅在A.as类中的ENTER\u FRAME事件实现这一点?为什么不在main.as中放置一个ENTER\u FRAME处理程序,然后从那里调用其他类的更新
public class Main extends Sprite
{
private var _a:A = new A();
private var _b:B = new B();
public function Main()
{
if(stage) init();
else addEventListener(Event.ADDED_TO_STAGE,init);
}
private function init(e:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE,init);
stage.addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
_a.updatePosition();
_b.updatePosition();
}
}
这里有一个简单的方法,但我相信还有很多更好的方法(例如使用自定义事件或AS3信号库): 梅因
private function eFrame(e:Event)
{
a.runEvents();
b.runEvents();
}
A.as。B.A
public function runEvents()
{
// Run whatever events you need to run
}
这将使您获得与3个ENTER_FRAME事件相同的效果,但没有开销,但是大量函数调用会带来开销。您必须在构造函数中检查stage,因为它可以为空。@Baris-在类A中必须有ENTER_FRAME事件。这是我将要构建的框架的需要。@Pixel-是,我认为定制活动可以完成这项工作,谢谢你的建议。