Comunidad de diseño web y desarrollo en internet online

Problemas con carga externa en un MovieClip

Citar            
MensajeEscrito el 09 Sep 2008 06:44 pm
Lo que me pasa es algo sencillo o almenos eso creo: :(

Cuando tengo dos peliculas en AS3 cada una y quiero cargar una en otra como en as2 (LoadMovieNum) lo intento de esta forma:

Código PHP :

function ir(carga:String):void{
var urlRequest:URLRequest = new URLRequest(carga);
var urlLoader:Loader = new Loader();
//Load the swf
//Carga el swf al objeto
urlLoader.load (urlRequest);
//Show the swf on the stage, also you can add the object to othe movieclip or sprite, just changing stage for the object of movieclip
//Lo despliega sobre el stage
var highest_depth: int = stage.numChildren;
stage.addChildAt(urlLoader,highest_depth);
}


Pero el texto no me carga con todos los efectos que quiero
para ver los dos archivos ejecutandose

Asi se debería ver: http://plasma4.com/clients/tissage/home.html
y asi se ve despues de separar el menú del home: http://www.plasma4.com/clients/tissage/prueba/home.html
Y no se porque no carga el efecto de los textos

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 09 Sep 2008 07:30 pm
No creo que tenga que ver con la carga sino en como está implementado el efecto de Blur (supongo que está hecho en AS3, sino es incompatible)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 09 Sep 2008 08:13 pm
No el efecto esta hecho en AS3, yo estoy usando el componente de texeff
http://www.txeff.com/ que es para AS3

Gracias

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 10 Sep 2008 12:40 am
Carga uno solo, prueba si anda, sospecho que tiene que ver con algo en la implementación de ese componente, que desconozco por completo, sorry

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Sep 2008 02:30 pm
Listo problema solucionado, en realidad era un problema básico me estaba saliendo un *warning (No le hice caso) que me decia que ya habia una instancia de ese componente simplemente en la pelicula principal borre de la libreria todo lo que estaba ligado a ese componente y funcionó, ahora mi duda es despues de cargado un swf en un nivel como hago para llamar funciones de otro nivel.

Mejor dicho como se hace el anterior _root._level3.hola(); en AS3

Muchas Gracias

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 10 Sep 2008 02:49 pm
El displayList no tiene _level, aunque claro mantiene el concepto de niveles. Mírate getChildAt() para tener una referencia a un objeto en root (singuión bajo)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Sep 2008 03:00 pm
Entonces la página inicial sigue estando en el nivel 0 (Cero)

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 10 Sep 2008 04:13 pm
loadMovieNum (y _level) ya no existe en AS3, si quieres mas detalles acerca de como funciona el DisplayList, mírate este pdf

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 10 Sep 2008 05:34 pm
Muchas gracias por tu respuesta, la verdad ya sabia qeu habian volado pero no tenia idea como se hacian ahora con AS3
ese pdf esta bien completo muchas gracias

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 01:44 pm
Una pregunta continuando con el hilo.

Mi caso es que tengo una página inicial que llama a todos los elementos, el primero que cargo es el menú y despues el home.

Lo que quiero es que cada vez que se le haga click a un item del menú este llame una función que esta en el archivo inicial y además quite el archivo del home para darle paso a los otros.

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 01:47 pm
Pues tienes que usar un Loader para cargar el contenido nuevo, el contenido cargado reemplazará al anterior

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2008 02:16 pm

solisarg escribió:

Pues tienes que usar un Loader para cargar el contenido nuevo, el contenido cargado reemplazará al anterior

Jorge


ok eso lo entiendo perfectamente, pero como hago desde el swf del menu llamar una función que este en el otro swf.

Gracias

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 02:35 pm
SI es el principal, por ejemplo

root.cargaOtraSeccion("algun.swf")

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2008 02:42 pm
No no yo me refiero al antiguo

_root._level6.mifuncion();

Como se haría esto en actionscript 3

Gracias de nuevo

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 03:15 pm
No entiendo para que quieres _level (que ya no existe) Si la función está en la peli principal, root es suficiente, si está dentro de algún contenedor, tendrñas que usar root.contenedor.loquesea

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2008 03:18 pm
Mira este post aca esta lo que me pasaba y al final escribi sobre el error que me sale

http://www.cristalab.com/foros/t48057_interactuar-con-peliculas-externas-cargadas-dentro-de-otra.html#411382

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 03:23 pm
Si se engancha con el tema de ese POST ya te contestarán los que lo siguen (es largo y yo muy vago para leer), sino mejor sigue aquí

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Sep 2008 03:32 pm

master_of_puppetz escribió:

mira como he obtenido una posible respuesta:
Tengo un .fla llamado main.fla con 5 frames, el 1 y el 5 son key frames.
En el 1, no hay nada en el stage, mas lo que va a cargar el Loader, tengo esto en acciones:

Código :

stop();
var carga:Loader = new Loader();
carga.load(new URLRequest("Untitled-1.swf"));
this.addChild(carga);


en el 5, tengo un cuadrito, para verificar que realmente llegó al 5 y tengo estas acciones:

Código :

stop();


ahora, el Untitled-1.fla, que ya exportado es Untitled-1.swf, tiene unos cuadritos en el unico frame que tiene y en el codigo tiene esto:

Código :

var contenedor:MovieClip = MovieClip(this.parent.parent);
contenedor.gotoAndPlay(2);


Esto va a hacer, que cuando cargue Untitled-1.swf, le haga un gotoAndPlay(2) a lo que vendría siendo el contenedor de todo esto. Este problema va mas con "niveles" que creo que ya no se les llama así en AS3, pues si te das cuenta, lo que hace flash, es crear un Contenedor Principal, en este caso el main.swf, luego con tu codigo, creas otro contenedor, que es la variable carga de tipo Loader, por lo que para poder llegar a la línea de tiempo de main, tienes que subir por dos niveles, esto se ve en el this.parent.parent, yo lo veo asi como: "a partir de aquí (this), sube uno (parent), sube otro (parent), y llegas".

Pues espero que me hayas entendido y esto te sirva para resolver tu problema.
Saludos! ^^



Peor a mi me sale es siguiente error cuando trato de hacer esto

no se puede convertir flash.display::Loader@329b3a1 en flash.display.MovieClip

Muchas Gracias

Por lopezquekk

44 de clabLevel



 

Medellin

firefox
Citar            
MensajeEscrito el 15 Sep 2008 04:23 pm
Para obtener una referencia a un objeto cargado, esperas al evento init (o complete) y la referencia es event.content
Aquí un tuto del amigo Zguillez para entender la precarga: http://www.cristalab.com/tips/30497/como-hacer-una-precarga-en-actionscript-3.html

Luego para obtener referencia al elemento cargado deberás usar root.getChildAt(nivel)
De todas formas mezclar code tirado en la línea de tiempo (como responde Master of puppetz) con acceso a objetos termina en todo tipo de cosas raras, ya que justamente el objetivo de AS3 es evitar que el code se ponga en línea de tiempo. Aquí un ejemplo de como llamo a una función sayHello definido en un archivo externo

Código ActionScript :

//En sayHello
function sayHello(){
   trace("Hola desde peli cargada")
}

//en el Document class de la peli que carga llamada Main
package 
{
   import flash.display.MovieClip;
   import flash.display.Loader
   import flash.events.Event
   import flash.net.URLRequest
   
   public class Main extends MovieClip 
   {
      private var cargador:Loader
      
      public function Main(){
         cargador = new Loader()         
         cargador.contentLoaderInfo.addEventListener(Event.INIT, initListener)
         cargador.load(new URLRequest("asset.swf"))
      }
      private function initListener(event:Event):void{   
         var swf:MovieClip = cargador.content as MovieClip         
         swf.sayHello()
      }
   }
   
}


Desde cualquier otro lugar puedes acceder a la instancia cargada via root.getChildAt()

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.