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

时间:2018-11-18 21:15:10

标签: air game-development starling-framework

因此,我正在使用starling框架来开发手机游戏,并且我希望当我按下手机上的“主页” /“返回”按钮时游戏能够暂停,并且当然要在返回游戏时继续运行。我做了一些研究,并尝试了以下方法:

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

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

我必须添加一个名为FlashEvent的新类,该类扩展了flash.events.Event,因为我在同一类中使用了Starling Event和flash Event,并且当我使用flash.events.Event时出现此错误:

Error: Access of undefined property flash

与starling.events.Event相同。

所以我使用了上面的代码并在手机中对其进行了尝试,但是当我回击/回家时,游戏继续进行,音乐不断播放。

我的问题是:在空中移动应用中分配激活/停用事件的正确方法是什么?

2 个答案:

答案 0 :(得分:0)

在主要的启动类中使用。 (请注意,在此示例中,“ app:Main”是我称为Starling start方法的类。

请注意,您应该使用以下方法确定事件类别: 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(); 
}); 

});

答案 1 :(得分:0)

我的代码

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

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

if ( paused ) return;

如果您有动画,则使用一个杂耍杂耍者,并且如果您没有在杂耍杂耍者上调用AdvanceTime,则会暂停。