[Flash2Android] コンパイルの通らない終了処理を無理やり実装する方法

by clockmaker
wonderfl は Web 向けのビルドのため、AIR 特有の機能をコンパイルすることができません。そのため、Flash2Android であっても AIR 特有の API を利用できません。

例えば、 flash.desktop.NativeApplication という AIR 用のクラスを参照すると、コンパイルエラーになります。

このデモは動的にクラスを参照することで、コンパイルエラーを回避してしまおうという TIPS で、「AIR アプリケーションがバックグランドに移動した時に自動終了する」という機能を実装したものです。

私の Android タブレットで動作を確認しました。
♥14 | Line 20 | Modified 2010-12-31 17:37:34 | MIT License
play

ActionScript3 source code

/**
 * 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);}
        }
    }
}