In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

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

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

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

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

私の Android タブレットで動作を確認しました。
Get Adobe Flash player
by clockmaker 31 Dec 2010

    Talk

    clockmaker at 31 Dec 2010 12:43
    Android実機の「HOME」ボタンや「BACK」ボタンを押すとアプリケーションが裏側に移動しますが、その際に自動終了するようになっています。 ※AIR for Androidでは明示的に終了処理を入れない限り、バックグラウンドでアプリケーションが常に起動した状態となります。

    Tags

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