Comunidad de diseño web y desarrollo en internet online

problemas con stage y setChildIndex

Citar            
MensajeEscrito el 11 Oct 2010 06:36 pm
Hola a todos

Tengo el siguiente problema: tengo una clase en as3 que me permite clonar movieclips y lo hace bastante bien, el problema es que cuando intento darle una nueva profundidad a los clones con "setChildIndex" me aparece el siguiente mensaje de error

Error #2025: El objeto DisplayObject proporcionado debe ser un elemento secundario del llamador.
at flash.display::DisplayObjectContainer/setChildIndex()

sé que el "setChildIndex" funciona porque tengo otros movieclip que usan las mismas líneas de codigo y funciona bien, así que sospecho que el problema esta en cómo creo a los clones a traves de "stage".
Aqui esta un resumen del código

Código :

function clonador(evt:MouseEvent):void{
   var obj = evt.target;
   var temp = stage.addChild(clonDisplayObject(obj, true));
   taked(temp);
   sellTaked = true;
}

function taked(obj):void{
   setChildIndex(obj, this.numChildren-1);
   obj.startDrag();
}

si alguien me explica cómo puedo usar el "setChildIndex" con clones creados en el "stage" o si hay algo que debo cambiar, me ayudarían mucho ^_^

Gracias, chau

PD: ya intenté usar otro objeto que haga el llamado al creador de clones, algo asi
var temp = fondo.addChild(clonDisplayObject(obj, true));
donde fondo era un movieclip, pero tampoco funcionó.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Oct 2010 03:45 pm
Dado que un addChild automáticamente agrega en el último lugar del DisplayList, no veo que setChildIndex en taked sea necesario (en AS3 no pueden quedar lugares vacíos en el DisplayList)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Oct 2010 05:12 pm
Gracias por contestar :)

pero el problema no es sólo con el "setChildIndex" sino tambien con el "getChildIndex" que esta en otra parte del programa, y esos movieclip pasan varias veces por ambas funciones, no sólo dejándolo al final de la lista.

Código :

var tempIndex = 2;
function overMovie(obj):void{
    popUp.visible = false;
    tempIndex = getChildIndex(obj);
    setChildIndex(obj, this.numChildren-1);
}

// en otra parte del programa se usa "tempIndex" para volver a dejar el objeto donde estaba inicialmente
function trak(target_):void{
   if(target_ == null) 
              setChildIndex( obj, tempIndex );
        obj.stopDrag();
}


ademas uso el "setChildIndex" en otras partes más, asignándole valores enteros, como por ejemplo "setChildIndex(obj, 4);" , por lo que no puedo no usar alguna de estas funciones :(

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Oct 2010 05:15 pm
En la función que te apunto lo puedes prescindir, agrega unos traces para ver donde sale el error, que en líneas generales es cuando alguien que está por debajo en el DisplayList quiere cambiar la profundidad de un elemento que está en un nivel superior.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Oct 2010 06:57 pm
Bueno, un problema es que no puedo prescindir de esa función, porque los clones no son los únicos que usan esa función ( la que es sólo un resumen de lo que hace realmente en mi programa). Y por supuesto ya había intentado lo de traces para verificar que el error estuviera alli :(
Estoy casi segura que el hecho de que lo haya creado con stage, lo deja en un nivel que no puede ser observado por los "set y get childindex", pero no entiendo tan profundamente flash para identificar un problema como ese.
He visto que el mismo mensaje de error aparace con "removeChild", pero la solución de ese error no me sirve directamente, creo. Aquí encontré la solución para ese problema, pero no sé cómo podría adaptarlo para mi problema:

[url=http://lassieadventurestudio.wordpress.com/2008/09/29/common-as3-errors/][/url]

^_^

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Oct 2010 07:09 pm
In other words, an object cannot remove a child that it does not contain


Eso quise decir cuando dije que quiere remover un objeto que está por arriba de su DisplayList
En principio, no uses stage, mete todo en un MC.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Oct 2010 07:32 pm
Mmm... puede que lo este haciendo mal, pero ya había intentado lo de meter todo en un MC, y me aparece el mismo mensaje de error (en la misma línea) :cry:
Básicamente hice lo siguiente:

clon = fondo.addChild(clonDisplayObject(obj, true));

donde "fondo" es un MC (que creé a partir de un rectángulo al que convertí en clip de película).
¿Tendré que usar ".parent" o algo así?

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Oct 2010 07:33 pm
¿fondo está en la misma línea de tiempo?
¿Si haces trace(clon) te tira algo?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 12 Oct 2010 07:45 pm
Sí, esta en la misma línea de tiempo, y cuando hago un trace(clon) tira: [object boot] donde "boot" es la clase (que también es un MC) de la que hereda el clon.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Oct 2010 08:11 pm
Estuve revisando un ejemplo más sencillo que encontré, que tiene basicamente lo mismo y le agregué el "setchildIndex" y no funcionó, pero cuando al clon le coloqué ".parent" funcionó. El ejemplo quedó así:

var clon= fondo.addChild(duplicateDisplayObject(mc));//donde fondo es MC
setChildIndex(clon.parent, 0);

yo había intentado usar el .parent con el stage, pero no había funcionado... así que voy a ver que puedo hacer con mi monstruo de programa a ver si así funciona :S

Muchas gracias :D

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 12 Oct 2010 08:12 pm
stage no tiene parent ;)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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