Как передать переменную в функцию Event.COMPLETE? - PullRequest
0 голосов
/ 06 февраля 2011

Я запускаю цикл, чтобы вытянуть большие пальцы в содержащий мувиклип из списка XML. Я хочу, чтобы родительский мувиклип большого пальца исчез после загрузки, но я не могу понять, как ссылаться на родителя после его загрузки.

Мой код (который сейчас работает не так, как я хочу):

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?

Ответы [ 2 ]

2 голосов
/ 06 февраля 2011
  1. Не используйте вложенные функции.Они, как правило, усложняют ситуацию.
  2. Я всегда буду иметь конечное значение (articleitem.length()-1) во всех создаваемых вами обработчиках событий, поскольку его область действия - внешняя функция, loadarticleHeadlines (она будет увеличиватьсяна 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);
    }
    
1 голос
/ 06 февраля 2011

Вам не нужно передавать переменную в showBox, используйте свойство target события , чтобы получить Loader:

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);
}
...