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,它就会暂停。
所以我正在使用框架 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,它就会暂停。