Comunidad de diseño web y desarrollo en internet online

duda de boton

Citar            
MensajeEscrito el 11 Mar 2009 02:50 am
Hola comunidad. Como andan?
pues si, sigo teniendo problemas con esta clase y son siempre los mismos.

he creado algunos botones, pero basicamente siempre es la mismo funcion, o sea, crear dinamicamente para cada TextField un boton, y que al accionar el boton realize un formato.

lo que he realizado hasta ahora es:

Código :

//bold es un mc, en el .fla, donde hay una imagen.
//o sea, los botones lo muestra bien, solo que al clickear sale error #1009 y no hace lo que tiene q hacer

public var negrita:bold;
      
      public function datos(resultado:Object):void 
      {
t = resultado.serverInfo.initialData;
      for(i=0; i<t.length; i++)
         {
/**
          * creacion de los TextField donde se visualizara los textos
          */
         outputText = new TextField();
         //idem para el outputText 
         outputText.name="output"+i.toString();
         outputText.width = Number(t[i][1]);
         outputText.height = Number(t[i][2]);
         outputText.selectable = false;
         outputText.border=true
         outputText.x = cargarImagen.x+Number(t[i][3]);
         outputText.y = cargarImagen.y+Number(t[i][4]);
         outputText.text = "campo de texto: " + t[i][0];
         outputText.mouseEnabled = false;
         outputText.multiline = true;
         outputText.wordWrap = true;
         addChild(outputText);



negrita = new bold();
         negrita.name = "negrita" + i.toString;
         negrita.x = (50 * i) + 5;
         negrita.y = 50;
         negrita.buttonMode=true;
         addChild(negrita);
negrita.addEventListener(MouseEvent.CLICK, textoNegrita);
}
}
function textoNegrita(evt:MouseEvent)
      {
            var negrita = bold (evt.target)
         var outputText = TextField(getChildByName("output" + negrita.name.substr(7)));
            //por tanto la variable outputText "apunta" a TextField output#
         formato.bold = true;
            outputText.setTextFormat(formato); 
      }

Le problema es que me crea el boton, lo pone donde tiene q poner y todas las caracteristicas, pero cuando le doy click le sale "error #1009" y no realiza ninguna accion.
Tendria q crearse un boton por cada TextField y hacer que segun el boton se modifique el text field correspondiente.

espero puedan ayudarme a solucionarlo.
desde ya muchas gracias
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 11 Mar 2009 01:16 pm
Ese error lo tira cuando hay algun objeto nulo, o no declarado, por lo q vi en esta parte del codigo:

Código :

function textoNegrita(evt:MouseEvent)
      {
            var negrita = bold (evt.target)
         var outputText = TextField(getChildByName("output" + negrita.name.substr(7)));
            //por tanto la variable outputText "apunta" a TextField output#
         formato.bold = true; // <-------------------------------------------------------------------
            outputText.setTextFormat(formato); 
      }


formato no esta decalrado ni nada, puede ser eso. (donde esta la flecha), tendria q ser var formato:........

Proba con eso, sino anda comentando cada linea para ver cual es la q tenes mal en la funcion textoNegrita

Saludos, y espero lo soluciones

Por agucapobianco

32 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 01:33 pm
hola. gracias por tu ayuda.
he probado lo que me dijsite:
la funcion queda asi:

Código :

function textoNegrita(evt:MouseEvent)
      {
            var negrita = bold (evt.target)
         var outputText = TextField(getChildByName("output" + negrita.name.substr(7)));
        /*AGREGUE EL TIPO DE VARIABLE QUE ES FORMATO*/    
         var formato:TextFormat=outputText.getTextFormat();  
         formato.bold = true;
            outputText.setTextFormat(formato); 
      }

sin embargo el resultado fue el mismo, es decir, continua tirando error #1009, y no ejecuta lo q tiene q hacer.

desde ya gracias por tu ayuda y espero poder solucionarlo.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 11 Mar 2009 01:44 pm
Bubudrc, haz es "cast" simplemente sobre MovieClip, a ver si es eso

Código ActionScript :

//en lugar de 
//var negrita = bold (evt.target)
var negrita:MovieClip = MovieClip(evt.target)

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 01:54 pm
Eliseo2, siempre tan certero con tus respuestas.
lamentablemente esta vez no funciona. la funcion queda como sigue, sin embargo continua tirando el error #1009 y no realiza ninguna accion:

Código :

function textoNegrita(evt:MouseEvent)
      {
            var negrita:MovieClip = MovieClip(evt.target)
         var outputText = TextField(getChildByName("output" + negrita.name.substr(7)));
            var formato:TextFormat=outputText.getTextFormat();  
         formato.bold = true;
            outputText.setTextFormat(formato); 
      }


Espero poder solucionarlo.
desde ya muchas gracias.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 11 Mar 2009 02:27 pm
Pon traces a manta

Código ActionScript :

function textoNegrita(evt:MouseEvent)
      {
         var negrita:MovieClip = MovieClip(evt.target)
         trace(negrita)
         trace(negrita.name)
         var outputText:TextField = TextField(getChildByName("output" + negrita.name.substr(7)));
        trace(outputText)
            var formato:TextFormat=outputText.getTextFormat();  
        trace(formato)
         formato.bold = true;
            outputText.setTextFormat(formato); 
      }

A ver si averiguamos qué es lo que es nulo

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 02:34 pm
bueno....
lo que dieron los trace fueron:

Código :

trace(negrita) ------>[object bold]
trace(negrita.name)------>negritafunction Function() {}
trace(outputText)------>null  //SUPONGO QUE ACA ESTA EL ERROR
TypeError: Error #1009: No se puede acceder a una propiedad o a un método de una referencia a un objeto nulo.
   at com.as3::personalizarTarjeta/textoNegrita()[C:\AppServ\www\tarjeteria\com\as3\personalizarTarjeta.as:313]

//ESTE TRACE NO LO LLEGA A HACER:
trace(formato) 


esos son los trace marcados lo q me dieron.
saludos...gracias

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 11 Mar 2009 02:52 pm
¡¡MIERDA!!. Fijaté en la línea

Código ActionScript :

negrita.name = "negrita" + i.toString;

Deberías ser

Código ActionScript :

negrita.name = "negrita" + i.toString();  //<---unos paréntesis

De ese modo el trace(negrita.name) debería salirte, p.e. "negrita1"

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 03:10 pm
jajaj...efectivamente....
ese era el error...mira q simple q era y yo pensaba q estaba haciendo alguna macana. ya esta, funciona perfecto.
ahora te hago hago una pregunta:
puse un combobox para q funcione de la misma forma que todos los botones, pero en este caso, la funcion no me tira ni error ni nada y tapoco hace nada.

y no se porque, y aque de no funcionar tendria q tirarme error, pero no hace nada:

Código :

//DENTRO DEL FOR
/**
          * creo el combo que contendra los datos de los tamaños de fuentes
          */
         tamanioFuente = new ComboBox();
         tamanioFuente.name = "tamanioFuente" + i.toString();
         tamanioFuente.x = picker.x - 120;
         tamanioFuente.y = picker.y;
         tamanioFuente.editable = false;
         for (k= size_min; k < (size_max+1); k++)    
         { 
            tamanioFuente.addItem( { label:k} );
         };
         addChild(tamanioFuente);

tamanioFuente.addEventListener(Event.CHANGE, cambiarTamanioTexto);
//FUERA DEL FOR
function cambiarTamanioTexto(evt:Event):void 
      { 
         //recogemos el formato que tuviera
         var tamanioFuente:ComboBox = ComboBox(evt.target);
         var outputText = TextField(getChildByName("output" + tamanioFuente.name.substr(13)));
         var formato:TextFormat=outputText.getTextFormat();  
         formato.font = evt.target.selectedItem.label;
            outputText.setTextFormat(formato);
      }


Te agradezo infinitamente tu ayuda y que siempre estes respondiendome correctamente todas mis dudas.
gracias.

saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 11 Mar 2009 03:30 pm
supongo que es "size" y no "font".

Código ActionScript :

formato.size= Number(evt.target.selectedItem.label); //<--le pongo Number porque precisa un número y 
                                        //una label es un STRING

en esta página de Adobe tienes las propiedades de los objetos de la Clase TextFormat

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 03:42 pm
claro...efectivamente...otra vez, volandome la cabeza por el simple hecho de un nombre....
que mal lo mio, encima haciendo perder el tiempo a los demas, jejeje.

te hago una ultima consulta y con esto no molesto mas.
si vemos en la respuesta anterior, de la negrita, yo al presionar el boton le ponfo la propiedad de

Código :

formato.bold=true


como puedo hacer para que al presionar el boton me detecte si el formato ese esta en true o false.

es decir yo pense:

Código :

function textoNegrita(evt:MouseEvent) 
      { 
         var negrita:MovieClip = MovieClip(evt.target);
         var outputText:TextField = TextField(getChildByName("output" + negrita.name.substr(7)));
            var formato:TextFormat=outputText.getTextFormat(); 
if (formato.bold=="true")
{
         formato.bold = false;
}
else
{
         formato.bold = true; 
}
            outputText.setTextFormat(formato);  
      } 

pero no me funciona. simplemente quiero hacer, que si el texto esta nomal y presiono lo ponga en negrita, pero si esta en negrita lo detecte y lo ponga normal.

gracias por toda tu ayuda.
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox
Citar            
MensajeEscrito el 11 Mar 2009 04:26 pm
Lo pensastes bien pero....
La propiedad "bold" ¿qué es? un STRING ¿un Booleano? ¿un Object?
Bueno, el la ayuda (es el link que te puese) pone que es un Objeto, que puede tener los valores true o null . Observa que no van entre comillas

Código ActionScript :

if (formato.bold){....}
//ó bien
if (formato.bold==true) {...} //<--NO lleva comillas puesto que no es un STRING

NOTA:De hecho, para que deje de ser negrita deberíamos igualarlo a null, no a false

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Mar 2009 06:45 pm
gracias Eliseo2.
claro...siempre esos errores q solo hacen perder tiempo y romperme la cabeza.

finalmente pude hacerlo, pero me funciono con

Código :

formato.bold=flase

y no con =null.
pero bueno, la cosa es q funcione.
la funcion final quedo asi.

Código :

function textoNegrita(evt:MouseEvent) 
      { 
         var negrita:MovieClip = MovieClip(evt.target);
         var outputText:TextField = TextField(getChildByName("output" + negrita.name.substr(7))); 
         var formato:TextFormat = outputText.getTextFormat();
         
         if (formato.bold == true) 
         {
            formato.bold = false;
         }
         else
         {
            formato.bold = true;
         }
         
         //formato.bold = true;
            outputText.setTextFormat(formato);  
      }

Desde ya muchisisissiissimasssss gracias por todo tu ayuda y por explicarme tan bien
saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

firefox

 

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