Comunidad de diseño web y desarrollo en internet online

Componentes en un Swf no funcionan si cargo en swfloader

Citar            
MensajeEscrito el 31 Oct 2012 04:36 pm
Hola gente de Flex, tengo un menubar y un swfloader, y dependiendo de lo clickeado en el menubar, hago:
cargador.source = miarchivo.swf;

La carga funciona perfecto, pero en miarchivo.swf tengo buttons y un combo que NO funcionan cuando lo cargo en cargador.
Si lo ejecuto independiente, funciona perfecto.
El video, funciona siempre.

<mx:VideoDisplay x="10" y="0" id="myVid"/>
<mx:Button x="372.8" y="317.95" click="myVid.pause();" icon="@Embed(source='pause.png')"/>
<mx:Button x="426.8" y="317.95" click="myVid.play();" icon="@Embed(source='play.png')"/>
<mx:Button x="480.8" y="317.95" click="myVid.stop();" icon="@Embed(source='stop.png')"/>

Si alguien me puede ayudar, se lo agradeceré! gracias! :D

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 05:32 pm
Amplío: cuando paso sobre los buttons, se pone como si fuera texto, para seleccionar. Gracias!

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 05:44 pm
¿Buttons y un combobox de Flash o de Flex?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 05:46 pm
Gracias por responder, botones de Flex 3, lo acabo de compilar dentro del mismo proyecto por las dudas, pero sigue igual.

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 05:49 pm
Verifica si el combo carga datos externos, y en tal caso si lo hace después del creationComplete, si los botones usan skins, si las rutas son correctas, etc. El 90% de los errores de este tipo en Flex tiene que ver con los tiempos y ciclos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 06:02 pm
El combo no tiene datos externos, solo una string cualquiera en un array como dataprovider pero ni siquiera abre "vacío".

Directamente no abre. Tendrá algo que ver que al swf lo cargo entro de un swfloader?
Te recuerdo que si el swf lo corro solo, anda perfecto.

Gracias Jorge!

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 06:04 pm
Si lo que cargas es un MXML no entiendo por que usas un swfLoader, si el swf fue hecho en Flash, entonces no funciona porque Flex no tiene referencia a los componentes, conviene que lo hagas en Flex.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 06:11 pm
Todo está hecho en Flex, no uso Flash. Lo único que hago, es poner un swf dentro del swfloader.

O sea, lo que hago es ir cambiando el source del swfloader.

El swf funciona correcto si lo ejecuto solo. Cuando lo pongo dentro del swfloader no andan ni botones ni combo. o sea, hago: cargador.source = miarchivo.swf; ahi es cuando se "traban" los botones y no abre el combo. Gracias Jorge

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 06:13 pm
Entonces no tienes que usar un SWFLoder, simplemente agregas una nueva instancia de tu componente al contenedor. Supongamos que se llama miPanel (lo tienes que haber creado como componente personalizado), harías

var panel:miPanel = new miPanel()
miCanvas.addChild(panel)

Tienes que adaptarlo a los contenedores que usas, pero el swfLoader lo usas cuando cargas contenido de Flash, s es de Flex (a menos que sea de otro modulo) lo que se hace es usar componentes personalizados

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 06:18 pm
Ah....entonces, si mi archivo previamente compilado es "Cargas.swf", cómo sería?
No entiendo bien donde va incluido el swf

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 06:21 pm
Ok, estamos con un problema de terminologías, volvamos a eso
Un archivo swf puede ser generado por Flash o Flex. Tu tienes Cargas.swf y dices que lo has generado con Flex. Entonces yo digo: no lo cargas como swf, lo instancias por código de la forma en que te puse anteriormente. ¿Se entiende la idea? SWFLoader NO, new miComponente() , esa es la forma óptima a menos que me des una razon por lo que quieres cargarlo como swf externo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 06:39 pm
A ver si entiendo....creo un componente personalizado, por ejemplo un panel llamado miPanel basado en canvas (ya lo hice), y luego por código, hago:

// creo una variable de la clase de mi componente
var panel:miPanel = new miPanel()

// agrego la variable dentro de un canvas creado en la aplicación y con id="miCanvas" ?
miCanvas.addChild(panel)

lo que no entiendo es dónde instanciar que dentro del componente esté el cargas.swf
Graias Jorge, y disculpas por la lentitud para entender....

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 06:41 pm
Ok, seguimos con problemas de concepto
Dime que es "cargas.swf", donde lo generaste, que tiene dentro

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 06:48 pm
cargas.swf es un mxml hecho en Flex 3, luego generado el swf. Es bien corto.

private function CambioCombo(evento:Event):void {
myVid.source = evento.currentTarget.selectedItem.data;
myVid.play();
}

<mx:VideoDisplay autoPlay="false" x="10" y="0" id="myVid" width="880" height="310"/>

<mx:Button x="372.8" y="317.95" click="myVid.pause();"icon="@Embed(source='pause.png')"/>
<mx:Button x="426.8" y="317.95" click="myVid.play();" icon="@Embed(source='play.png')"/>
<mx:Button x="480.8" y="317.95" click="myVid.stop();" icon="@Embed(source='stop.png')"/>

<mx:ComboBox id="ComboTemas" change="CambioCombo(event)">
<mx:ArrayCollection>
<mx:Object label="Elija un tema" data="A.flv"/>
<mx:Object label="Trabajo en equipo" data="B.flv"/>
</mx:ArrayCollection>
</mx:ComboBox>

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 07:09 pm
Ok, igual no lo posteaste todo porque le falta la raíz o contenedor. Supongamos que es un Panel. Desde Flex haces File->New->MXML Component, cuando te pregunta en que lo basas le dices Canvas y cuando lo genera le pones el codigo que pusiste. Luego en donde sea que lo cargas tienes dos opciones: hardcodeas la instancias o la creas por AS3. Para saber esto, la pregunta a responder es: el video y su combo aparecen por defecto o lo cargas frente a alguna condición?

Si aparece por defecto, y el componente personalizado lo guardaste como miVideo,mxml puedes usar directamente el tag (asumo que lo pusiste en una carpeta comp, el espacio de nombres puede ser cualquiera que hayas elegido)

<comp:miVideo id="miVideo" />

Si no aparece por defecto sino frente a determinada condición, entonces debes poner el código anterior como callback del evento que dispare la aparición del video y lo instancias como dijimos antes

Código ActionScript :

import comp.miViideo
(....)
var visor:miVideo = new miVideo();
contenedor.addChild(miVideo)


Conenedor es cualquier componente capaz de recibir hijos, por ejemplo un canvas, un panel, etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 07:29 pm
Ahi voy entendiendo.....ya lo hice, y funciona perfecto!!!!!!, te agradecería si me pasas algún link o parecido, tengo que estudiar bastante por lo lo visto.

Gracias!!!! Increible la ayuda que me has brindado! :D :D

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 31 Oct 2012 07:46 pm
Es un mecanismo básico de Flex, lo que pasa es que no resulta evidente que un MXML es simplemente una clase ... la idea detrás de Flex es poder usar un lenguaje declarativo (MXML) que pudiera ser trackeado por SVN o culquier otro sistema de tracking de código ya que el binario (swf) no funciona asi. En fin, un buen lugar para encontrar todo tipo de info sobre Flex es http://www.adobe.com/devnet/flash-builder.html

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 31 Oct 2012 07:48 pm
Muchas gracias!

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Nov 2012 05:53 pm
Jorge, disculpa la molestia, dos últimas preguntas:

Ya hice dos componentes, perfecto, en uno coloco el video y en otro, debo colocar siempre en un canvas, un swf.

1) En el componente basado en canvas pongo un swfloader y ahi el swf en cuestión. esto funciona con el source=nombre.swf. Es correcto así? Andar, anda.

Si es correcto......
2) El componente así puesto serviría para varios swf, como le indico el nombre del swf, asi no hago n componentes ?

el nombre del archivo swf lo traigo en opcion.text
y luego
var panel:miVideo = new miVideo();
miCanvas.addChild(panel)

Bueno, espero que esto sea lo último, muchas gracias!

Por grodrig61

Claber

223 de clabLevel



 

chrome
Citar            
MensajeEscrito el 01 Nov 2012 06:13 pm
Listo, lo pude resolver, estudiando un poco más.
Paso la soluc.
en el componente miTelefono:
[Bindable]
public var miParametro:String;

y en el cód AS3:
var telef:miTelefono = new miTelefono();
telef.miParametro = "nombre.swf";
miCanvas.addChild(telef)

Gracias!

Por grodrig61

Claber

223 de clabLevel



 

chrome

 

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