2011-02-06 7 views
0

私はループを実行して、親指をxmlリストからムービークリップを含むものにプルします。親のムービークリップが読み込まれた後に親のムービークリップがフェードインされるようにしたいのですが、読み込まれた親を参照する方法はわかりません。変数をEvent.COMPLETE関数に渡すにはどうすればよいですか?

私のコード(現在は私がそれを望むように動作しません):私は、全体のムービークリップをフェードインすることができますので、

var vsThumb:articleBox; 
var currentarticleX:Number = 0; 
var articleLinkURL:String; 
var articleImageURL:String; 
var articleText:String; 
var vsThumbLoader:Loader; 
var next_x:Number; 
next_x = 9; 
var thumbAlphaTween:Tween; 
var articlevsThumb:Array = new Array(); 

function loadarticleHeadlines():void 
{ 
    for (var i:int = 0; i < egarticleXml.articlelist.articleitem.length(); i++) 
    { 
     vsThumb = new articleBox(); 
     vsThumb.alpha = 0; 
     vsThumbLoader = new Loader(); 
     vsThumbLoader.load(new URLRequest(egarticleXml.articlelist.articleitem[i].articlethumbnail)); 
     articleListContainter.addChild(vsThumb); 
     vsThumb.articleImage.addChild(vsThumbLoader); 
     vsThumb.articleTitle.text = egarticleXml.articlelist.articleitem[i].articletitle; 
     titleAutosize(vsThumb.articleTitle); 
     vsThumb.x = next_x; 
     next_x += 260; 
     articlevsThumb[i] = vsThumb; 
     vsThumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showBox); 
     vsThumb.clickBtn.buttonMode = true; 
    } 
    function showBox(event:Event):void 
    { 
     thumbAlphaTween = new Tween(articlevsThumb[i],"alpha",None.easeNone,0,1,.25,true); 
    } 
} 

は、どのように私は戻って、ローダの親に指すのですか? showBox関数に変数を渡すことはできますか?

+0

はを通じて追加のパラメータを渡しますイベントでは、(できれば)パブリック変数を持つカスタムイベントクラスを作成し、そのイベントをディスパッチする必要があります。あなたが興味を持っているなら、私は簡単な例を挙げることができます。 –

答えて

2
  1. ネストされた関数を使用しないでください。彼らは物事をより複雑にする傾向があります。
  2. スコープが外部関数loadarticleHeadlines(すべての反復で1ずつ増えます)であるため、作成するすべてのイベントハンドラには常に終了値(articleitem.length()-1)が表示されます。これはおそらくあなたのコードがうまくいかない理由です。
  3. イベントは、あなたのローダーのあるLoaderInfoに解雇されますので、あなたはevent.target.loader.parentを使用して、ローダーの親を見つけることができます。ためには

    function loadarticleHeadlines() : void 
    { 
        for (var i:int = 0; i < egarticleXml.articlelist.articleitem.length(); i++) 
        { 
         vsThumb = new articleBox(); 
         vsThumb.alpha = 0; 
         vsThumbLoader = new Loader(); 
         vsThumbLoader.load(new URLRequest(egarticleXml.articlelist.articleitem[i].articlethumbnail)); 
         articleListContainter.addChild(vsThumb); 
         vsThumb.articleImage.addChild(vsThumbLoader); 
         vsThumb.articleTitle.text = egarticleXml.articlelist.articleitem[i].articletitle; 
         titleAutosize(vsThumb.articleTitle); 
         vsThumb.x = next_x; 
         next_x += 260; 
         articlevsThumb[i] = vsThumb; 
         vsThumbLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, showBox); 
         vsThumb.clickBtn.buttonMode = true; 
        } 
    } 
    
    
    function showBox(event:Event):void 
    { 
        thumbAlphaTween = new Tween(event.target.loader.parent,"alpha",None.easeNone,0,1,.25,true); 
    } 
    
+0

ああ...私が間違っていたのは、event.target.loader.parentです。私はevent.target.parentをやろうとし続けていて、エラーが出ていました。今それは私がそれを望む方法で動作します。素晴らしいです、ありがとう! – Ghost9

1

あなたはLoaderを取得するためにEventtargetプロパティを使用し、あなたのshowBoxに変数を渡す必要はありません。

function showBox(event:Event):void 
{ 
    var li:LoaderInfo=LoaderInfo(event.target); 
    // be nice remove your listener when your are done 
    li.removeEventListener(Event.COMPLETE, showBox); 

    var ldr:Loader=li.loader; // here is your loader 
    // do whatever you want with loader 

    thumbAlphaTween = new Tween(articlevsThumb[i],"alpha",None.easeNone,0,1,.25,true); 
} 
関連する問題