Comunidad de diseño web y desarrollo en internet online

Problema con propiedad NAME y getChildByName() en AS3

Citar            
MensajeEscrito el 03 Dic 2012 06:19 am
Hola, verán he estado revisando varias publicaciones acerca del manejo de éstos y creo entenderlo bien, el problema está al implementarlo xD. Lo hago tal cual y me manda error, no se donde pueda estar el problema, por eso pido ayuda :( .
Este es el fragmento del código:

Código ActionScript :

var pjH:MovieClip=new MovieClip();
pjH.name="pjH1"; //Aquí todo bien, le pongo un nombre, pero al llamar al mc por dicho nombre me manda error.
//.....
//....
//....
MovieClip(getChildByName("pjH1"))=e.target.content; //Error aquí


Le intento pasar un SWF que he cargado en un Loader previamente, y si lo hago directamente con la variable "pjH" me funciona, pero llamandola por el nombre con getChildByName NO.
No se donde esté el error o como hago para ello....

El error que me envía al compilar es el siguiente:
1105: El destino de la asignación debe ser un valor de referencia.

Gracias.

Por sebasxs

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Dic 2012 02:13 pm
El target del evento es read only, por lo tanto supongo que lo que quisiste poner es

MovieClip(getChildByName("pjH1"))==e.target.content;

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Dic 2012 03:51 pm
Gracias Jorge por responder, pero lo que me dices menos que funciona, el "==" es de comparación y lo que necesito es asignarle el contenido de un Loader a dicho MovieClip, me explico mejor:
Éste código me funciona:

Código ActionScript :

var pjH:MovieClip=new MovieClip(); pjH.name="pjH1";
var ldrpjH:Loader=new Loader(); ldrpjH.name="ldrpjH1";
ldrpjH.load(new URLRequest("clips/pjs/11.swf"));
ldrpjH.contentLoaderInfo.addEventListener(Event.COMPLETE, pasarClip);

function pasarClip(e:Event):void{
   pjH=e.target.content;
   addChild(ldrpjH).name="ldrpjH";
        ldrpjH.x=ldrpjH.y=100;
}

ldrpjH.addEventListener(MouseEvent.CLICK, cambiar);
function cambiar(e:MouseEvent):void{
   pjH.gotoAndStop(2);
}


Pero éste código no me funciona:

Código ActionScript :

var pjH:MovieClip=new MovieClip(); pjH.name="pjH1";
var ldrpjH:Loader=new Loader(); ldrpjH.name="ldrpjH1";
Loader(getChildByName("ldrpjH1")).load(new URLRequest("clips/pjs/11.swf"));
Loader(getChildByName("ldrpjH1")).contentLoaderInfo.addEventListener(Event.COMPLETE, pasarClip);

function pasarClip(e:Event):void{
   MovieClip(getChildByName("pjH1"))=e.target.content;
   addChild(getChildByName("ldrpjH1")).name="ldrpjH";
       getChildByName("ldrpjH1").x=getChildByName("ldrpjH1").y=100;
}

Loader(getChildByName("ldrpjH1")).addEventListener(MouseEvent.CLICK, cambiar);
function cambiar(e:MouseEvent):void{
   MovieClip(getChildByName("pjH1")).gotoAndStop(2);
}


No se si esté abusando de ése método xD pero según la teoría que he leído también debería funcionar, no se si en ello me esté equivocando, espero me corrijas, lo que quiero hacer es poder usar varios Loader y asignarlos a un MC respectivo, pero para ahorrarme ese trabajo lo intentaba hacer con un bucle For, y pensaba llamarlos por su nombre... pero lo intento con 1 solo, es decir sin hacer bucle todavía y no me funciona :S lo intenté igual con "==" y me dijo que había error en sintaxis.
Gracias

Por sebasxs

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Dic 2012 03:54 pm
No entiendo bien lo que quieres hacer. No se asigna un contenido a un MC, se lo carga dentro de ese MC, es decir se crea el MC y se hace un addChild del loader, como te dije antes, no se puede asignar una propiedad que es read only, de allí el error

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Dic 2012 04:04 pm
Eso lo leí en alguna parte en internet y me funcionó :S .
Lo que quiero hacer es cargar un SWF externo y meterlo en un MC para poder controlarlo a mi gusto, navergar por sus fotogramas, etc... lo que entiendo es que la única forma de cargarlo es con un Loader y una vez cargado se le pasa al MC, ¿Como lo hago de otra forma entonces? y si necesito cargar varios SWF y hacer lo mismo.. hay alguna forma de hacerlo rápido con un For?

Por sebasxs

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Dic 2012 04:11 pm
No hace falta meterlo en un MC, de por si es un MC y tienes que poder manejarlo en tanto conozcas su estructura. Para referirte a lo que hay dentro de un Loader, usa Loader.content una vez que ha terminado de cargar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Dic 2012 04:25 pm
Wow que interesante, no sabía eso, ya lo hice así y me funcionó, aunque si me tocó informarle que es un MC:

(ldrpjH.content as MovieClip).gotoAndStop(2);

Hasta ahí todo muy bien, pero eso es para un SWF, y necesito cargar docenas de ellos! Debo hacerlo uno por uno y crear loaders nuevos para cada SWF? o hay algún método rápido? para asignarle rutas y nombres diámicos a cada loader? creí que se podía hacer con la propiedad "name" como ví aquí http://foros.cristalab.com/crear-variables-dinamicas-as3-t87211 pero no se como emplearlo entonces.

De antemano muchas gracias por las respuestas tan prontas hasta ahora, me ha sido de utilidad saber eso

Por sebasxs

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Dic 2012 06:20 pm
Si un contenido reemplaza a otro puedes reutilizar el mismo Loader, sino tienes que utilizar distintos. Si lo que quieres es hacer la misma acción sobre muchos Loaders distintos puedes guardar referencias a cada Loader en un Array

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Dic 2012 07:00 pm
Gracias por responder.
Si, son diferentes, bueno mas o menos me estoy defendiendo pasandolos a Sprites y a un Array...
Ahora si no es mucha molestia tengo otra duda (no se si sea necesario abrir un tema nuevo) acerca del Preloader. Necesito mostrar el progreso de la carga de todos los SWF, pero se cargan de a uno en uno en un For con el mismo Loader... es posible detectarlos todos?
No se si me haga entender, éste es el código:

Código ActionScript :

var pjsH:Array;
var loader:Loader;
for(i=1;i<numPj+1;i++){
   pjsH=new Array();
   loader=new Loader();
   loader.load(new URLRequest(rutaspjH[i]));
   loader.addEventListener(Event.COMPLETE, completa);
   pjsH[i]=new Sprite();
   pjsH[i].addChild(loader);
}
function completa(e:Event):void{
   loader.removeEventListener(Event.COMPLETE, completa);
   loader=null;
}

rutaspjH[i] es un array con las rutas de los SWF.
Sé hacer el preloader para la carga de un solo archivo.
Pero, ¿Como hago un Preloader que me muestre el progreso TOTAL de la carga de todos los SWF? Si están variando...
>.<
Gracias.

Por sebasxs

7 de clabLevel



 

chrome
Citar            
MensajeEscrito el 03 Dic 2012 07:43 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Dic 2012 08:07 pm
Muchas gracias por todo :)

Por sebasxs

7 de clabLevel



 

chrome

 

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