Comunidad de diseño web y desarrollo en internet online

Problema con campo de texto dinámico

Citar            
MensajeEscrito el 18 Abr 2011 02:46 am
Hola,
Estoy teniendo un error que creo, es bastante sencillo de resolver solo que no doy con la solución. Lo que quiero es cambiar el texto dinámico llamado "texto" (nombre de instancia) cada que se hace click en un sitio determinado. El código es este:

Código ActionScript :

private function montar():void {
         
         var boton:ElementoMenu;
         for (var i:uint = 0; i < datos.elementos.elemento.length(); i++) {
            boton = new ElementoMenu();
            boton.Texto_txt.text = datos.elementos.elemento[i].titulo;
            boton.enlace = datos.elementos.elemento[i].enlace;
            boton.y = i * 25
            boton.buttonMode = true;
            boton.mouseChildren = false;
            boton.addEventListener(MouseEvent.CLICK, navegar);
            addChild(boton);
         }
      }
      
      private function navegar(e:MouseEvent):void {
         texto.text = boton.enlace; 
      }


Como han podido ver los datos los leo desde un XML, el problema es que no puedo acceder al campo de texto. Alguna idea? Gracias de antemano.

Por millyway

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2011 01:48 pm
Suena a tema de rutas, seguramente texto no est{a en el timeline donde declaraste la función navegar, corrige la 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 18 Abr 2011 02:16 pm
No he visto detalladamente pero que tal si cambias tu funcion a:

Código ActionScript :

 private function navegar(e:MouseEvent):void { 
         texto.text = e.target.enlace;  
 }

Es que boton no existe como tal, ya que cambia de valor tantas veces como elementos hay en datos.elementos.elemento.length().

Por Acreonte

Claber

1543 de clabLevel

5 tutoriales
6 articulos

Genero:Masculino  

Digital Scientist

firefox
Citar            
MensajeEscrito el 18 Abr 2011 08:36 pm
No me funciona lo que planteas. Sin embargo, estoy seguro que es un problema de ruta como dice Jorge, ya que al intentar poner cualquier texto en el campo texto simplemente el error es 1120: Acceso a una propiedad texto no definida.

Pero entonces como sería la ruta??. Como lo menciona Jorge, no está en el timeline donde declaré la función navegar. Es un .as aparte.

Saludos.

Por millyway

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2011 08:50 pm
Ese as seguramente es la clase de un MovieClip, ¿donde esta ese MovieClip? ¿que nombre de instancia tiene?

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 Abr 2011 08:58 pm
Te copio todo el .as aquí:

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.net.*

public class MenuDinamico extends Sprite
{

public var datos:XML;

public function MenuDinamico()
{
cargarDatos();
}

private function cargarDatos():void {

var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, cargado);
loader.addEventListener(IOErrorEvent.IO_ERROR, error);
loader.load(new URLRequest("datos.xml"));

}

private function error(e:IOErrorEvent):void {

trace("error al cargar el XML: " + e);

}

private function cargado(e:Event):void {

datos = new XML(e.target.data);
montar();

}

private function montar():void {

var boton:ElementoMenu;
for (var i:uint = 0; i < datos.elementos.elemento.length(); i++) {
boton = new ElementoMenu();
boton.Texto_txt.text = datos.elementos.elemento[i].titulo;
boton.enlace = datos.elementos.elemento[i].enlace;
boton.y = i * 25
boton.buttonMode = true;
boton.mouseChildren = false;
boton.addEventListener(MouseEvent.CLICK, navegar);
addChild(boton);
}
}

private function navegar(e:MouseEvent):void {
texto.text = "Cualquier Texto"; /// No coge el campo
}



}

}

En el otro archivo, en el primer fotograma se encuentra el campo de texto dinámico con le nomb re de instancia "texto". Gracias por tu ayuda.

Por millyway

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 18 Abr 2011 09:01 pm
Mira que MC es de la clase MenuDinamico, eso lo ves en la librería cuando la haces ancha, luego busca ese MC en el escenario, cuando lo encuentres mira en que timeline está y desde alli ya reconstruyes la 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 19 Abr 2011 05:20 pm
Disculpa Jorge, soy un total novato en AS· no doy con el problema. Lo único que se es que el campo texto esta en el primer fotograma de la escena, suelto dentro de ningún MC. Como seria la ruta??

Por millyway

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 19 Abr 2011 05:27 pm
Entonces es

_root.nombredeinstancia

En donde nombre de instancia es el que le hayas dado al campo de texto

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 20 Abr 2011 03:10 am
No funk, fue lo primero que intenté .....lo pude solucionar pero creando un campo de texto dentro del MC boton así:

e.target.texto.text = (e.target.enlace);

Pero nada que lo hago con el que esta en la escena principal. Podría ser una solución temporal. Que podrá ser?

Por millyway

3 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Abr 2011 05:11 am
Hola Espero que mi respuesta no sea tarde pero primero declara una variable de tipo textfield
Declaralo despues de tu variable public var datos:XML;

Código ActionScript :

public var texto:TextField =  new TextField();  

Código ActionScript :

private var texto:TextField =  new TextField();  

dependiendo como lo quieras declarar, con eso debe de funcionarte y no debes de tener problema

Código ActionScript :

texto.text = "Cualquier Texto"; 

Saludos cualquier cosa te ayudaremos a resolver tu problema

Por fuentessoft

6 de clabLevel



 

firefox

 

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