Мероприятия ACTIVATE / DEACTIVATE не работают для мобильного игрового приложения, использующего Starling Framework - PullRequest
0 голосов
/ 19 ноября 2018

Итак, я разрабатываю мобильную игру с использованием скриншота фреймворка, и я хочу, чтобы игра приостановилась, когда я нажал кнопку «домой / назад» на моем телефоне, и, конечно же, возобновила работу, когда вернулась в игру. Я провел небольшое исследование и попробовал следующее:

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 голосов
/ 28 декабря 2018

Мой код

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

И вы устанавливаете приостановленное логическое значение и проверяете его в верхней части игрового цикла:

if ( paused ) return;

Если у вас есть анимация, вы используете жонглер иесли вы не вызываете advanceTime на жонглере, он приостанавливается.

0 голосов
/ 23 ноября 2018

Используется в вашем основном классе запуска.(обратите внимание, что в этом примере «app: Main» - это класс, который я вызываю методом запуска Starling.

Обратите внимание, что классы событий следует определять с помощью: 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(); 
}); 

});
...