Comunidad de diseño web y desarrollo en internet online

Problemas con addChild de objetos existentes(ya añadidos a displayList

Citar            
MensajeEscrito el 25 Mar 2011 10:52 am
Hola,

Tengo un array de de objetos propios SwfElement (adjunto una versión resumida de la clase). Básicamente funcionará como una estructura de datos...

Dentro de cada posición del Array tengo un objeto del tipo SwfElement, en el campo element previamente en otra case he cargado Swf's externos (sin problema). En cada posición hay un Mc distinto exceptuando en las 4 últimas que en este caso el Mc es el mismo

Resulta que quiero posteriormente recorrer el Array y añadirlo a un sprite que se añadirá posteriormente a la lista de visualización. Resulta que solo me añade y muestra los elementos no repetidos. He mirado de hacer una copia de los elementos ya contenidos al Sprite que los contiene, por si venía de ahí el problema y no hay manera. No lo entiendo porque las copias 'fisicas' de los clips existen en el array (debugando lo he comprobado)

Por favor, alguna solución?!?!?!? Garcias!

Código ActionScript :

var swfHolder : Sprite=new Sprite(); 
var currentSwf:swfElement; 
for(var i:int=0; i<swfArray.length; i++){
currentSwf=swfArray[i];
placeSwf(currentSwf); 
}
private function placeSwf(_swf:swfElement):void{
   var _swfCopy:SwfElement; 
         
   if (swfHolder .contains(_swf.getElement())){
   _swfCopy = new SwfElement(); 
   _swfCopy = _swf;
   swfHolder .addChild(_swf.getElement()); 
   }else {
   swfHolder .addChild(_swf.getElement());
}
}


Código ActionScript :

   public class SwfElement extends MovieClip 
   {
      //Variables declaration
      private var screenPosition:Point;//it defines swf position on the screen
      public var element:MovieClip; 
                //....

      public function SwfElement():void {
         screenPosition = new Point(); 
         element = new MovieClip();
      }
      //------------------Getters & setters--------------------------------
      public function getScreenPosition():Point { return(screenPosition); }
      public function setScreenPosition(_screenPosition:Point):void {
         //Save current position
         screenPosition.x = _screenPosition.x; 
         screenPosition.y = _screenPosition.y; 
         //Asign that position to the element
         element.x = screenPosition.x;
         element.y = screenPosition.y;
      }
      public function getElement():MovieClip { return element; }
      public function setElement(_element:MovieClip):void { element = _element; }
            
   }//end 'class'

Por emedmaria

73 de clabLevel



 

chrome
Citar            
MensajeEscrito el 28 Mar 2011 07:49 am
El problema es que en el array lo que estás haciendo es tener diversas variables que hacen referencia al mismo MC. Vamos, imagina que tenemos un MC llamado "mimc" y escribimos
var Array:miArray=new Array()
miArray.push(mimc)
miArray.push(mimc)
miArray.push(mimc)
//si escribimos
miArray[0].x=100
//es lo mismo que
miArray[2].x=100
[/as]
Otra cosa es que tengamos algo como

Código ActionScript :

var Array:miArray=new Array()
for (var i=0;i<10;i++){
   var mc:MovieClip=new MovieClip()
   miArray.push(mc)
}

Aquí, cada elemento de un array es distinto MC
No sé si el problema vendrá por ese lado

Por Eliseo2

710 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.