Blog.Ks-Product.com

初音ミクの消失PV(特別編集版)が初音ミクVISION(DVD)に収録されます!詳しくはこちら! 設定不要!プリロード機能付きロールオーバープラグイン jquery.automaticRollover 有名動画サイトの動画の埋め込みが簡単に行える! jquery.createvideo

【AS3.0】 子swfのフレームスクリプトが動作しなくなる現象

 

AS3.0で親swfが子swfを読み込む作りになっている場合起きる不具合を発見。
このような作りは定番パターンなのでクラスベースで制作している人は要注意です。逆にタイムラインベースの人はまず影響ないと思うのでスルーして問題なさそうです。

クラスベース制作をされている方はドキュメントクラスを指定するかと思いますが、上記のような構造の場合、子swfにドキュメントクラスを指定して、親swfからそのクラスを参照すると、子swfのフレームスクリプトが動作しなくなります。
詳しくは下記コードを参照。

package  
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.net.URLRequest;
    /**
     * 親swfのドキュメントクラスです。
     * @author Ks-Product.com
     */
    public class Parent extends MovieClip
    {
        
        public function Parent() 
        {
            var l:Loader = new Loader();
            l.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
            l.load(new URLRequest("child.swf"));
        }
        
        private function completeHandler(e:Event):void 
        {
            //この部分を実行することで、子swfであるchild.swfのフレームスクリプトが動作しなくなる。何故?
            trace(e.target.content is Child)
            
            //以下のようなコードでも同様の現象が発生
            //trace(Child);
            //trace(Child(e.target.content));
            //trace(Child.getInfo());
        }
        
    }

}
package  
{
    import flash.display.MovieClip;
    /**
     * 子swfのドキュメントクラスです。
     * @author Ks-Product.com
     */
    public class Child extends MovieClip
    {
        
        public function Child() 
        {
        }
        
        //動作確認用メソッド
        public static function getInfo():String
        {
            return "class : Child";
        }
    }

}

一応サンプルを用意しました。 child.swf にフレームスクリプトが書かれているので
本来は"This class name is Child."と出力されるはずなのですが、
上記の記述のせいで出力されません。

これは仕様なのかはたまたバグなのか。
精通されている方はコメントして下されば幸いです。

コメント(0)

コメントが存在しません。

コメントを投稿する

※投稿されたコメントは管理人が承認するまで反映されません。
またHTMLタグはご利用できません。コメント上にHTMLタグを表示させたい場合は全角でご入力ください。

お名前
URL
コメント
名前:
kakeru ( twitter
職業:
フロントエンドエンジニア
生年月日:
1983年4月19日

HTML、CSS、JavaScript、ActionScript、デザイン、映像制作(After Effects、CINEMA 4D)で遊んでます。
最近はjQueryを使ったプログラミングに色んな意味ではまってます。ライブラリ作ってます。

好きなK-POPはf(x)、Brown eyed girls、4minute、B2ST、2PM、KARA、SNSD、Sunny hillということで、K-POPの話題を中心に発信中!

お問い合わせはこちらからどうぞ。
kakeru[at]ks-product.com
([at]を@に置き換えてください)