Comunidad de diseño web y desarrollo en internet online

AYUDA BOTONES AS3 Y XML

Citar            
MensajeEscrito el 14 May 2010 11:47 pm
Hola Amigos
Tengo 3 botones dibujados con sus respetivas instancias (boton1, boton2, boton3), en este foro encontre algo como lo que quiero, pero en vez de llamar una pagina web o ir a una escenas o frames quiero que llame datos desde el XML (Usando AS3).

El que encontre:

Código ActionScript :

//---Variables 
var urls:Array = new Array("http://www.google.com", "http://www.yahoo.com", "http://www.hotmail.com");
//---Acciones de los botones
for(var i:uint = 1; i <= urls.length; i++){
   this["boton" + i].addEventListener(MouseEvent.CLICK, gotoURL);
}
//---Función
function gotoURL(evt:MouseEvent):void{
   var nombre:String = evt.target.name;
   var numero:uint = Number(nombre.replace("boton", ""));
   navigateToURL(new URLRequest(urls[numero - 1]));
} 


Cuales datos irian en Var urls:Array = new Array(...);
Y como se llamarian con los botones

Les agradeceria mucho la ayuda.


El link donde encontre el code de arriba: link
Code por usuario: elchininet

Por darwinalcivar

1 de clabLevel



 

msie8
Citar            
MensajeEscrito el 15 May 2010 10:35 am
mmm. Haber si entendi bien tu pregunta tu quieres usar ese codigo que pusiste pero en vez de cambiar ese array a mano quieres que cargue desde un xml externo no?

Yo lo veo asi;

1. Creamos un xml basico para el manu, tal que asi:

Código :

<mymenu>
<link>http//**********</link>
<link>http//**********</link>
<link>http//**********</link>
<link>http//**********</link>
</mymenu>


En tu flash deberias cargar el xml. si no me equivoco puedes utilizar seccuencias como:

Código ActionScript :

myXML.mymenu[0]

por lo tanto esto puede simular el array que tienes ahi y solo tendrias que cambiar la variable del array por la del xml.

Respecto los nombres de los botones, se tienen que llamar boton1 , boton2, boton3, etc...

Saludos.

Por Atomsk

350 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 16 May 2010 12:26 pm
Que tipos de datos querés "llamar del xml"? Es decir, las acciones a realizar. En el caso del ejemplo es simple ya que cualquier botón simplemente utiliza el mismo handler para el evento que accede a una url. SI querés realizar diferentes acciones con cada botón, deberías poner un listener diferente para cada uno y handlers, por lo que habría que cambiar bastante el codigo del ejemplo.
Capaz que si das una idea más clara de lo que querés hacer, es más fácil ayudar. :)

Por cknu

1 de clabLevel



 

chrome
Citar            
MensajeEscrito el 27 May 2010 05:41 pm
Ya tengo los botones con sus instancias, lo que quiero hacer es que cada boton lea un dato del XML para cambiar el tamaño de unos mc. mi XML es mas o menos así:

Código XML :

<Root>
   <MC Id="1">
      <Opcion value="30"/>
      <Opcion value="76"/>
   </MC>
   <MC Id="2">
      <Opcion value="03"/>
      <Opcion value="68"/>
   </MC>
</Root

Entonces ejecutar los botones con el codigo de arriba y cada uno llame al grupo MC según el Id que corresponda.
Gracias amigos por la ayuda, lo que no se es como hacer el listener y juntarlo al de los botones.

Por darwinalcivar

1 de clabLevel



 

msie8
Citar            
MensajeEscrito el 28 May 2010 09:43 pm
en flex no es lo mismo que flash??

lo que haria yo es cargar el xml hacer un loop del tipo for each y luego optener como esta estructurado mediante el grupo
le paso el id que quiero y hago otro for each buscadno la opcion que corresponda

y luego paso la estructura como un array u otra para tener las instacias correspondiente y listo

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 07 Jun 2010 09:48 pm
Amigos, sigo con el problema y me lanza Error #1056
Estoy ahora probando llamando páginas web, creo que debería funcionar pero falla algo.

Tengo 3 botones con los nombres de instancia (boton0, boton1, boton2) en el escenario,
el código en el primer frame:

Código ActionScript :

var loader:URLLoader = new URLLoader();
var array:Array = new Array();
var objArray:Array = new Array();
loader.addEventListener(Event.COMPLETE,xmlLoaded);
loader.load(new URLRequest("demo.xml"));

function xmlLoaded(e:Event):void{
   var xml:XML = new XML(e.target.data);
   var lista:XMLList = xml.links.opcion;
   
   for each(var elemento:* in lista){
      var obj:Object = new Object();
      obj.id = elemento.@id;
      obj.link = elemento.@link;
      
      array.push(obj);
   }
   
   for(var i:int = 0 ; i < array.length; i++){
      objArray.push(getChildByName("boton" + i));
      objArray[i].url = array[i];
      objArray[i].addEventListener(MouseEvent.CLICK, clickWeb);
   }
}

function clickWeb(e:MouseEvent):void{
   var req:URLRequest = new URLRequest(e.target.url);
   navigateToURL(req);
}

El archivo demo.xml:

Código XML :

<data>
   <links>
      <opcion id="1" link="http://www.google.com"></opcion>
      <opcion id="2" link="http://wim.alcivar.net"></opcion>
      <opcion id="3" link="http://pitbrush.wim.ec"></opcion>
   </links>
</data>

Estoy obsesionado con el tema, espero que me ayuden

Por darwinalcivar

1 de clabLevel



 

msie8
Citar            
MensajeEscrito el 08 Jun 2010 06:42 am
Darwin, cuando tenemos "tres botones con nombre de instancia" NO tenemos "tres botones cuya propiedad name sea". Por eso no funciona

Código ActionScript :

//NO funciona
getChildByName("boton" + i)

El nombre de instancia NO tiene nada que ver con la propiedad "name" de un MC. Cuando tenemos un Mc con un nombre de instancia, Flash "lo traduce" como "una variable que hace referencia a"
Si no te lo crees haz una prueba, escribe

Código ActionScript :

trace(boton0.name) //<--supongo que saldrá algo como "instance1"


Así que podemos escribir al principio de todo tu código

Código ActionScript :

//Al principio de todo
boton0.name="boton0"
boton1.name="boton1"
boton2.name="boton2"
....el resto de tu código....


La otra opción sería usar la "notación de corchetes" y escribir en tu bucle

Código ActionScript :

objArray.push(this("boton" + i)); 

Por Eliseo2

710 de clabLevel



 

firefox

 

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