Comunidad de diseño web y desarrollo en internet online

COMO ENVIAR DATOS A FLASH CON XML

Citar            
MensajeEscrito el 07 Oct 2011 02:41 pm
Hola, necesito saber si hay algún tutorial por allí donde pueda cargar en flash un menú en xml, y que cada botón del xml me envíe un dato a un campo dinámico dentro del swf.
Por ejemplo:

Código XML :

<menu>
<item>Inicio</item>
<item>Galeria</item>
</menu>


Y en flash un campo dinámico con una instancia, entonces al apretar sobre uno de los botones del menú xml en el campo dinámico se me escriba la palabra según el botón apretado. Espero que se entienda. Gracias.

Por chunilp

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Oct 2011 03:14 pm
Usualmente los menúes que hay por allí mueven de fotograma o cargan un swf, pero puedes tomarlos de base para tu objetivo, que no creo que haya porque no es algo para lo que comunmente se usen los menúes

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Oct 2011 07:02 pm
Encontré algo que me puede ayudar, pero tengo un problema a la hora de escribir en el campo dinámico el texto.
Este es el codigo en el frame:

stop()

var loader : URLLoader = new URLLoader ();
loader.addEventListener (Event.COMPLETE, xmlComplete);
loader.load(new URLRequest ("datos.xml"));

function xmlComplete(e:Event):void
{
var myXML: XML = new XML (e.target.data);
var menu:Sprite= new Sprite();
addChild(menu);

for (var i:int= 0 ; i< myXML.boton.length(); i++)
{
var tmp:Boton = new Boton();
tmp.titulo.texto_txt.text= myXML.boton[i].@texto;
tmp.y=(tmp.height + 5) * i;
tmp.ruta= myXML.boton[i].@seccion;
tmp.addEventListener(MouseEvent.CLICK, onClick);
menu.addChild(tmp);
}
}

function onClick(e:MouseEvent):void
{
trace(e.target.ruta);
}

El error que me sale por ejemplo es:
No se encontró la propiedad ruta en flash.text.TextField y no hay ningún valor predeterminado.
at cargarxmlenas3_fla::MainTimeline/onClick()

Los botones que se crean toman las eventos de una clase, llamada BotonBasico.

Alguna idea? :P

NOTA: Si en esta parte: trace(e.target.ruta); escribo: campo.text="hola"; lo escribe, lo que quiero es que dentro del campo dinamico con instancia "campo" se escriba el dato del texto del boton que apreto.
Gracias.

Por chunilp

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Oct 2011 07:05 pm
ruta tiene que ser una propiedad pública de la clase Boton

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Oct 2011 07:27 pm
Serias tan amable de mostrarme un ejemplo?

Por chunilp

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Oct 2011 07:36 pm
Claro, no se que tiene tu clase Boton, pero la propiedad seria esta

Código ActionScript :

package{
  class Boton extends Sprite{
      public var ruta:String;
      (....)     
      function Boton(){
             ...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 07 Oct 2011 07:42 pm
Mira esta es la clase:

Código ActionScript :

package
{
   import flash.display.Sprite;
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.Event;
   import flash.text.TextField;
   

   public class BotonBasico extends MovieClip
   {
         
      public function BotonBasico()
      {
         this.stop();
         this.buttonMode = true;

         this.addEventListener(MouseEvent.ROLL_OVER, onRoll);
         this.addEventListener(MouseEvent.ROLL_OUT, onOut);
         

      }
      private function onRoll(event:MouseEvent):void
      {
         this.removeEventListener("enterFrame", onRetroceder);
         this.addEventListener(Event.ENTER_FRAME, onAvanzar);
      }
      private function onOut(event:MouseEvent):void
      {
         this.removeEventListener("enterFrame", onAvanzar);
         this.addEventListener(Event.ENTER_FRAME, onRetroceder);
      }
      
      private function onAvanzar(event:Event):void
      {
         if(this.currentFrame < this.totalFrames){
            this.nextFrame();
         }else{
            this.removeEventListener("enterFrame", onAvanzar);
         }
      }
      private function onRetroceder(event:Event):void
      {
         if(this.currentFrame > 1){
            this.prevFrame();
         }else{
            this.removeEventListener("enterFrame", onRetroceder);
         }
      }
   }
}


Gracias por responder ;)

Por chunilp

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 07 Oct 2011 07:45 pm
Pues lo dicho, agrega esa variable

Código ActionScript :

public class BotonBasico extends MovieClip 
   { 
     public var ruta:String; 
     ...


De esa forma puedes hacer miBoton.ruta = "loquesea"

Y luego puedes acceder por evt.target.ruta

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 08 Oct 2011 12:35 am
jeje sigo sin entender, pruebo de miles manera pero no... en realidad no se si tengo que crear una clase aparte o agregar lo que me pasaste al código, y no se en el AS del frame que poner, porque modifico uno y me sale error en el as del frame y viceversa. :( SORRY

Por chunilp

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 08 Oct 2011 12:39 pm
Tienes que agregar lo que te dije al código. Si es un code que te pasaron y del que no tienes NPI, dilo, seguramente entonces no sirve mucho que explique

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 18 Oct 2011 04:45 am

chunilp escribió:

Encontré algo que me puede ayudar, pero tengo un problema a la hora de escribir en el campo dinámico el texto.
Este es el codigo en el frame:

stop()

var loader : URLLoader = new URLLoader ();
loader.addEventListener (Event.COMPLETE, xmlComplete);
loader.load(new URLRequest ("datos.xml"));

function xmlComplete(e:Event):void
{
var myXML: XML = new XML (e.target.data);
var menu:Sprite= new Sprite();
addChild(menu);

for (var i:int= 0 ; i< myXML.boton.length(); i++)
{
var tmp:Boton = new Boton();
tmp.titulo.texto_txt.text= myXML.boton[i].@texto;
tmp.y=(tmp.height + 5) * i;
tmp.ruta= myXML.boton[i].@seccion;
tmp.addEventListener(MouseEvent.CLICK, onClick);
menu.addChild(tmp);
}
}

function onClick(e:MouseEvent):void
{
trace(e.target.ruta);
}

El error que me sale por ejemplo es:
No se encontró la propiedad ruta en flash.text.TextField y no hay ningún valor predeterminado.
at cargarxmlenas3_fla::MainTimeline/onClick()

Los botones que se crean toman las eventos de una clase, llamada BotonBasico.

Alguna idea? :P

NOTA: Si en esta parte: trace(e.target.ruta); escribo: campo.text="hola"; lo escribe, lo que quiero es que dentro del campo dinamico con instancia "campo" se escriba el dato del texto del boton que apreto.
Gracias.


Hola me parece que hay 2 errores, el primero tiene toda la razòn el master Jorge, tienes que agregar una variable pùblica dentro de tu Clase que se llame ruta de otra manera... no hay forma de acceder a ella y te enviarà ese error, pues la propiedad no existe...

el segundo creo que esta dentro de tu XML esta intentando acceder al atributo secciòn y no lo veo dentro de tu XML tmp.ruta= myXML.boton[i].@seccion; tu xml deberìa tener algo asì

Código XML :

<menu>

<item secciòn="AQUI TU SECCIÒN">Inicio</item>

<itemsecciòn="AQUI TU SECCIÒN" >Galeria</item>

</menu>


saludos y creo que esto te puede servir http://www.decabeza.net/2008/12/22/menu-dinamico-en-xml-y-actionscrip-3/ espero no infringir las reglas del foro publicando tutoriales de otro lado pero creo que el fin es contribuir a la comunidad !!! saludos!!!

Por vicoy

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 18 Oct 2011 01:58 pm
Siempre que aporten al tema no hay restricción para poner links :)

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.