ACTIVATE/DEACTIVATE 事件不适用于使用 Starling 框架的手机游戏应用程序

ACTIVATE/DEACTIVATE events don't work for a mobile game app using starling framework

所以我正在使用框架 starling 开发一款手机游戏,我希望游戏在我按下 phone 上的 home/back 按钮时暂停,当然,当我去的时候游戏会继续回到游戏。我做了一些研究并尝试了以下方法:

this.addEventListener(FlashEvent.DEACTIVATE, stopGame);
this.addEventListener(FlashEvent.ACTIVATE, continueGame);

private function continueGame(event:FlashEvent):void 
{
    ...
}
private function stopGame(event:FlashEvent):void 
{
    ...
}

我必须添加一个名为 FlashEvent 的新 class 扩展 flash.events.Event,因为我在同一个 class 中使用 starling Event 和 flash Event,并且当我使用 [=26] =] 我得到这个错误:

Error: Access of undefined property flash

starling.events.Event也是如此。

所以我使用了上面的代码并在我的 phone 中进行了尝试,但是当我点击 back/home 时,游戏继续进行并且音乐继续播放。

我的问题是:在 air 移动应用程序中发送 activate/deactivate 事件的正确方法是什么?

用于您的主要启动 class。 (注意在这个例子中 'app:Main' 是 class 我调用 Starling 启动方法。

请注意,您应该通过以下方式确定事件 classes: starling.events.Event.XXX flash.events.Event.XXX

_mStarling.addEventListener(starling.events.Event.ROOT_CREATED, 
function onRootCreated(event:Object, app:Main):void
{

_mStarling.removeEventListener(starling.events.Event.ROOT_CREATED, onRootCreated);

app.start(assets);

_mStarling.start();

NativeApplication.nativeApplication.addEventListener(
flash.events.Event.ACTIVATE, function (e:*):void { 

_mStarling.start(); 

try {
//  optionally call some other methods
} catch(e:Error) {

}
});

NativeApplication.nativeApplication.addEventListener(
flash.events.Event.DEACTIVATE, function (e:*):void { 

try{
//  optionally call some other methods before stopping
} catch(e:Error) {

}
_mStarling.stop(); 
}); 

});

我的代码

public function Main()
{
  stage.addEventListener(flash.events.Event.DEACTIVATE, onDeactivate);
  stage.addEventListener(flash.events.Event.ACTIVATE, onActivate);
}

然后您设置了一个暂停的布尔值并在游戏循环的顶部检查它:

if ( paused ) return;

如果您有动画,则使用 juggler,如果您不在 juggler 上调用 advanceTime,它就会暂停。