[Flash2Android] コンパイルの通らない終了処理を無理やり実装する方法
wonderfl は Web 向けのビルドのため、AIR 特有の機能をコンパイルすることができません。そのため、Flash2Android であっても AIR 特有の API を利用できません。
例えば、 flash.desktop.NativeApplication という AIR 用のクラスを参照すると、コンパイルエラーになります。
このデモは動的にクラスを参照することで、コンパイルエラーを回避してしまおうという TIPS で、「AIR アプリケーションがバックグランドに移動した時に自動終了する」という機能を実装したものです。
私の Android タブレットで動作を確認しました。
/**
* Copyright clockmaker ( http://wonderfl.net/user/clockmaker )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/nexU
*/
package {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import net.hires.debug.*;
public class FlashTest extends Sprite {
public function FlashTest() {
// 適当なオブジェクトを配置
var s:Stats = new Stats();
s.scaleX = s.scaleY = 5;
addChild(s);
// Flashのデアクティブイベントを登録
stage.addEventListener( Event.DEACTIVATE , deactivateHandler );
}
private function deactivateHandler( e:Event ):void{
// try~catchでやさしく包んであげる
try{
// NativeApplicationクラス(AIRオンリー)を参照する
var cls:Class = getDefinitionByName("flash.desktop.NativeApplication") as Class;
cls.nativeApplication.exit(); //アプリの終了
}catch(err:Error){trace(err);}
}
}
}