Home > Flash > progression Archive

progression Archive

SceneObjectから子swfでLinkageしてるクラスをnewする

  • Posted by: ぢゃぃ
  • 2009年3月 9日 12:18
  • progression

最近は、Progressionでお願いします。と、
はじめから言われる事もあるような今日この頃ですが、
あるシーンで、子swfを読み込んで、その子swfにリンケージしてあるクラスをnewしようとして、
少しはまったので、メモ。

はじめは、
何となく_onLoadの中でaddCommandでコマンド処理走らせればいけるだろーとやんわり思ってました。

こんな感じ。


protected override function _onLoad():void {
     _container = CastSprite(progression.container.getChildByName("contentsContainer"));    
     var page:ContentsPage=newContentsPage(_name);    
     addCommand(          
          new AddChild(_container,page),          
          new LoadChild(page, new URLRequest("child.swf")),          
          new AddChild(page, new ChildLinkagedClass())     
    )
}


するとハァ━(-д-;)━ァ...
何も表示されません、、、

よくよく考えると当然で、
new ChildLinkagedClass()のコンストラクタが実行されるときには、まだ、子swfは読み込まれておらず、
currentのApplicationDomainに子swfにリンケージされたクラスがない、ってことです、、、よね?

とういわけで、
この流れの中で処理するためには、
new AddChild(page,new ChildLinkagedClass())コマンドをswfが読み込まれた後に、実行、というか、
execute()するという意味ではなく、newする必要があります。

というわけで、
こんな感じにするとうまく行きました。

実際に、Commandが作られる時を意識しておかないと、実際execute()される時の事だけ考えると少し混乱しますね。




protected override function _onLoad():void {
     _container = CastSprite(progression.container.getChildByName("contentsContainer"));    
     var page:ContentsPage=newContentsPage(_name);    
     addCommand(          
          new AddChild(_container,page),         
          new LoadChild(page, new URLRequest("child.swf")),           
          new Func(function():void               
               insertCommand(
                    new AddChild(page, new ChildLinkagedClass())
               )
          )     
    )
}

Index of all entries

Home > Flash > progression Archive

Search
Feeds
         
Tag Cloud

Return to page top