2013-02-18 2 views
1

Я пытаюсь добавить MovieClip с каждым циклом.динамически создает MovieClip в AS2 в цикле

Но мой скрипт перезаписывает каждый МС, за исключением последнего.

Я должен использовать AS2

var myXML:XML = new XML(); 
myXML.ignoreWhite=true; 
myXML.load("config.xml"); 
myXML.onLoad = function(success){ 

    if (success){ 
     var images = myXML.firstChild.childNodes; 

     for (i = 0; i < images.length; i++) { 
      var imageNumber = i+1; 
      var imageValue = images[i].firstChild.nodeValue; 
      var imageName = "image"+imageNumber; 
      trace(imageName); 

      _root.createEmptyMovieClip(imageName, this.getNextHighestDepth()); 

      trace(imageNumber+": "+imageName + i); 

      imageName.loadMovie(imageValue); 

      imageName.width=500; 
      imageName.height=500; 

      _root.imageName.loadMovie(imageValue); 


     } // for loop 
    } // if success 
    trace("________________"); 
    trace("1: "+image1); 
    trace("2: "+image2);  
    trace("3: "+image3); 
} 

Если я проследить MCs в петле он работает. MC находятся на сцене. НО, если я отслеживаю клипы вне цикла, на сцене остаются только последние MC. Все остальные не определены.

ответ

0

Я угадываю, что ловушка использует «это» внутри функции onLoad. если вы попробуете отслеживать «это» внутри загрузчика, вы увидите, что это будет не то, что yo uexpect. загрузчик действует иначе, чем обычный код на кадре.

я думаю, что ошибка происходит здесь:

_root.createEmptyMovieClip(imageName, this.getNextHighestDepth()); 

где this.getNextHighestDepth() дает постоянную высоту, так как в этом случае «это» всегда относится к тому же объекту, и новое MovieClips держать заменить старые на та же высота мувиклипа. вместо этого используйте _root.getNextHighestDepth().

Если вы действительно хотите использовать 'this' в функции onLoad, тогда назначьте его какой-либо переменной в том же фрейме, но не внутри события onLoad. например, например:

handle=this; 
myXML.onLoad = function(success){ 
    trace(handle); //what you expect 
    trace(this); //not what you expect 
} 
Смежные вопросы