Comunidad de diseño web y desarrollo en internet online

Cojer texto de botones creados desde xml

Citar            
MensajeEscrito el 24 Mar 2011 03:59 pm
Hola,
En mi actionscript creo botones desde xml siguiendo este código:

Código ActionScript :

var xmlPath:String = "data.xml";
 
var settingsXML:XML;
  
var loader = new URLLoader();
loader.load (new URLRequest(xmlPath));
loader.addEventListener (Event.COMPLETE, xmlLoaded)

function xmlLoaded (e:Event):void {
 
   if ((e.target as URLLoader) != null ) {
      settingsXML = new XML(loader.data);
      settingsXML.ignoreWhitespace = true;
      createMenu ();
   }
 
}

function createMenu ():void {
   var menuItem:MenuItem;
   var i:uint = 0;
 
   for each (var link:XML in settingsXML.links.link) {
 
      menuItem = new MenuItem();
 
      menuItem.menuLabel.text = link.@name;
 
      menuItem.menuLabel.autoSize = TextFieldAutoSize.LEFT;
 
      menuItem.x = 20;
      menuItem.y = 30 + i*40;
 
      menuItem.buttonMode = true;
      menuItem.mouseChildren = false;
 
       addChild (menuItem);
 
      i++;
   }
}


Tengo un campo de texto dinámico y quería que al pulsar un botón de los que acabo de generar se cambiara el texto del campo dinámico por el texto del botón.

Gracias de antemano por la ayuda

Por marticps

Claber

103 de clabLevel



Genero:Masculino  

Aprendiz de Todo

chrome
Citar            
MensajeEscrito el 25 Mar 2011 06:01 am
Si el campo de texto es fijo, es decir lo creas en tiempo de diseño agrega un listener de evento click cuando creas el boton:

Código ActionScript :

function createMenu ():void {   
 var menuItem:MenuItem;    
var i:uint = 0; 
/*Accede a todas las propiedades de links*/
for each (var link:XML in settingsXML.links.elements) {       
menuItem = new MenuItem();         
menuItem.menuLabel.text = link.@name;         
/*Para cambiar el color en base a que boton presiones puedes meter dentro del xml el color que desas y agregarlo como variable cuado creas el boton*/    
menuItem.vcolor=link.@color
menuItem.menuLabel.autoSize = TextFieldAutoSize.LEFT; 
/*Pones el listener aca*/     
menuItem.addEventListener(MouseEvent.CLICK, cambiarcolortexto);  
menuItem.x = 20;       
menuItem.y = 30 + i*40;        
menuItem.buttonMode = true;       
menuItem.mouseChildren = false;

     
addChild (menuItem);       
  i++;   
 } 
}

/*La funcion*/

function cambiarcolortexto(e:MouseEvent){
var color=e.target.vcolor /*Aca va tu color*/
var fuente='arial'
var tamanio=10
var formato:textFormat=new textFormat(fuente,tamanio,color);
nombre_del_texto.defaultTextFormat=formato;
}




Cuentas como te va, saludos.

Por cranecx

21 de clabLevel



Genero:Masculino  

Desarrollador Web

msie
Citar            
MensajeEscrito el 25 Mar 2011 02:56 pm
El campo de texto sí es fijo (he creado un MovieClip que contiene el rectángulo y el texto dinámico). He copiado el código tal cual lo has escrito, y me muestra los siguientes errores:
Escena 1, Capa 'accions', Fotograma 1, Línea 55
1046: No se encontró el tipo o no es una constante en tiempo de compilación: textFormat.
Escena 1, Capa 'accions', Fotograma 1, Línea 55
1180: Llamada a un método textFormat posiblemente no definido.
Escena 1, Capa 'accions', Fotograma 1, Línea 56
1120: Acceso a una propiedad nombre_del_texto no definida.

En consecuencia el resultado es que no se carga ningún botón.

No estoy familiarizado con textFormat (mis conocimientos de AS3 son muy reducidos y centrados en un tipo de cosas bastante básico) ya que no lo he utilizado nunca...
¿Alguna sugerencia?

Gracias por la ayuda, y espero no ser pesado...

Por marticps

Claber

103 de clabLevel



Genero:Masculino  

Aprendiz de Todo

chrome
Citar            
MensajeEscrito el 26 Mar 2011 08:41 am
Como no me salía con la mía me he pasado a AS2, que lo domino más. Gracias por tu ayuda

Por marticps

Claber

103 de clabLevel



Genero:Masculino  

Aprendiz de Todo

chrome
Citar            
MensajeEscrito el 28 Mar 2011 07:00 am
Lo siento estuve fuera por eso no había contestado, el error 1046 aparece porque erre en un letra, no es textFormat, es TextFormat y en el caso de 1120 mm pues ahi va el nombre de la instancia del texto a modificar.

Por cranecx

21 de clabLevel



Genero:Masculino  

Desarrollador Web

chrome
Citar            
MensajeEscrito el 28 Mar 2011 10:26 am
Gracias por responder, realmente fueron errores de novato.
El caso es que me pasé al AS2, que lo domino más, jeje....

Muchas Gracias, igualmente tendré presente esto en el futuro

Por marticps

Claber

103 de clabLevel



Genero:Masculino  

Aprendiz de Todo

chrome

 

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