[AS3] 終了処理 fscommand("quit") を使ってみる。 [Edit]

いままでCD-ROMコンテンツのようにスタンドアロンで作る際の終了処理は、fscommandを使っていました。これがAS3ではどうなるのか試してみました。

[スクリプト概要]

画面をクリックすると終了する。

----

[外部クラスに記述]

まず最初に外部クラスで書いてみました。

AS3ではfscommandはflash.systemのクラスに
移動しているとのことなのでそのように書いてみます。

    package {
        
        import flash.display.Sprite;
        import flash.events.MouseEvent;
        
        // fscommandはflash.systemに移動しています。
        import flash.system.fscommand;
        
        public class Fscmd extends Sprite
        {
            
            public function Fscmd ()
            {
                // クリックを設定
                stage.addEventListener( MouseEvent.CLICK , onClick );
            }
            
            // クリックの動作 onClick
            public function onClick ( event:MouseEvent )
            {
                trace("デバッグプレイヤーだとquitは実行されないようです");
                fscommand( "quit" );
            }
            
        }
        
    }

----

[フレームに記述]

つづいて、フレーム記述だとどうなるかをやってみます。

まず、ためしにimport記述なしで1フレーム目に書いてみたところ、
注意もエラーもなく通りました。
もちろん、ちゃんと動作します。

    // クリックを設定
    stage.addEventListener( MouseEvent.CLICK , onClick );

    // クリックの動作 onClick
    function onClick ( event:MouseEvent )
    {
        trace("デバッグプレイヤーだとquitは実行されないようです");
        fscommand( "quit" );
    }

というわけで、 import flash.system.fscommand が
省略してもフレーム内では通るようです。

この件については野中さんの記事「importの使い方が変わった」の■スクリプト003で
タイムライン上の自動的なimportについて触れられています。

また、タイムライン上でどのクラスが継承されるかについては
import指示子:図■implicitImports.xmlの内容で、私も確認しまして、とても勉強になりました。
import flash.system系も自動でimportされてますね。

----

[今回気づいた点]

    ・AS3ではfscommandはflash.systemのクラスに移動している。
    ・外部クラスではしっかりと上記の場所からimportする。
    ・けれどフレーム記述では省略してよい。

----

サンプルも以下に置きます。

 >>fscommand終了ソースをダウンロード!

_____________________________________________________
参考文献

livedocs:AS3で引越したAS1/2クラス群

f-site.org:「importの使い方が変わった」

fumiononaka.com:import指示子:図■implicitImports.xmlの内容

その他の記事