Comunidad de diseño web y desarrollo en internet online

modificar texto en un string

Citar            
MensajeEscrito el 06 Jun 2011 02:15 pm
Buenas tardes a todos, haber si alguien me pudiera ayudar.

Como puedo cambiar un carácter especifico en un string (que ya tiene texto) con una serie de botones (tipo calculadora) y que automáticamente el próximo foco del texto sea el siguiente carácter y así sucesivamente ??

Tengo un texto dinámico con 123456 y al darle a uno de los botones numéricos creados por mí, el primer número cambiará a 5 por ejemplo, al darle a otro de los botones cambiará el siguiente número, así hasta cambiarlos todos.

No sé si me he explicado bien, estoy bastante desesperado , consigo cambiar únicamente un valor con

Código :

texto1_txt.replaceText(0,1,"1");

Muchas gracias por la ayuda,

Saludos

Por gavidia

15 de clabLevel



 

msie8
Citar            
MensajeEscrito el 06 Jun 2011 03:09 pm
Pues ya tienes el método, solo que hardcoded, los valores tiene que ser dinámicos, con este criterio

cont -> suma de a uno con cada pulsación
val -> el string que le asigna el botón

entonces

texto1_txt.replaceText(cont++,1,val);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Jun 2011 03:45 pm
muchas gracias, Jorge

Lo intentaré como dices.

Por gavidia

15 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Jun 2011 10:46 am

Código :

stop();

botonENT_btn.addEventListener(MouseEvent.CLICK ,compara);

var numGood:String = new String();

numGood = "1432612543";

numGood_txt.text = numGood;

function compara(e:MouseEvent):void {
   trace ("hola");
   if(texto1_txt.text == numGood_txt.text){
      this.gotoAndPlay("bien");
      trace ("como estas");
   } else {
      this.gotoAndPlay("mal");
      trace("hasta los mismísimos....");
   }
}


Todo funciona de coña , pero tengo otro problema no se ejecuta la sentencias gotoAndPlay de la función , por qué? , y por qué? , no lo entiendo.

Se ejecutan los “trace”, tanto si la respuesta es true o false, pero el “GoTo” nada de nada.

Por cierto las etiquetas están bien nombradas y si en vez de ejecutarla en la línea de tiempo del clip, lo hago en la principal funciona.

Si alguien supiese que ocurre y me lo dijera, estoy tirándome de los pelos.

Gracias y un saludo.

Por gavidia

15 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Jun 2011 01:36 pm
Si la etiqueta está en root y la programación en el MovieClip, debería ser

root.gotoAndPlay("bien");

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 Jun 2011 02:52 pm
Gracias Jorge,
el caso era que tenía una función EnterFrame con un "gotoAndStop(2);" que tenía en el frame anterior, era la que me estaba haciendo la puñeta.

Lo dicho, muchas gracias por tu ayuda.

Por gavidia

15 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Jun 2011 03:05 pm
Al final el cdigo me ha quedado así, funciona bién. Que os parece ?? un pelín lioso ??

Bueno el codigo....

En el primer Frame:

Código :

var miString1:String = new String;

marca_mc.alpha = 1;

miString1 = "4057245012";

texto1_txt.text = miString1;

addEventListener (Event.ENTER_FRAME, cuenta);

function cuenta(e:Event):void {
   if (count == 10){
   this.gotoAndStop(2);
   marca_mc.alpha = 0;
   } else if (count == 5){
   marca_mc.x = -17.85;
   marca_mc.y = -38;
   }
};

var count:int = 0;
var MovX:int = 6.5;

boton0_btn.addEventListener(MouseEvent.CLICK , pulsado0);

function pulsado0(e:MouseEvent){
   var valor:String = "0";
   texto1_txt.replaceText(count,(1 + count),valor);
   count++;
   marca_mc.x += MovX;
};

//Así con todos los botones, cambiando el valor 


En el segundo frame, el cual lo envía a un frame de acierto o fallo:

Código :

stop();

removeEventListener(Event.ENTER_FRAME, cuenta);

botonENT_btn.addEventListener(MouseEvent.CLICK ,compara);

var numGood:String = new String();

numGood="1432612543";

numGood_txt.text=numGood;

function compara(e:MouseEvent) {
   if (texto1_txt.text==numGood_txt.text) {
      this.gotoAndPlay("bien");
   } else {
      this.gotoAndPlay("mal");
   }
}

Por gavidia

15 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Jun 2011 03:15 pm
Estas 3 líneas se pueden resumir en una>

Código ActionScript :

var miString1:String = new String;
miString1 = "4057245012";
texto1_txt.text = miString1;

sería

texto1_txt.text = "4057245012";


Luego no hace falta un onEnterFrame para saber por donde va el contador, simplemente integras los if en la función pulsado0. Si haces lo mismo con muchos botones, deberías usar variables y un for de forma de no repetir código. En el segundo frame de nuevo usas tres líneas para un string que debería usar una sola.

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 Jun 2011 03:52 pm
Tienes toda la razón Jorge, ese código no hacía falta,... me lío un pelín con esto del código.

Por otra parte, como podría comprimir todas las funciones de los botones en una sola ?? M e imagino que mediante un Array, pero por más que miro ejemplos, no pillo el concepto y acabo destrozando el código, realmente lo único que cambia en la función de todos los botones es la variable "valor", que es 0, 1, 2,...

Este es el código de un botón la última vez que funciono.


Código :

boton0_btn.addEventListener(MouseEvent.CLICK , pulsado0);
boton1_btn.addEventListener(MouseEvent.CLICK , pulsado1);
boton2_btn.addEventListener(MouseEvent.CLICK , pulsado2);
boton3_btn.addEventListener(MouseEvent.CLICK , pulsado3);

//-------asi todos ------

function pulsado0(e:MouseEvent){
   var valor:String = "0";
   if(count == 0){
   }else if(count == 2){
      texto1_txt.replaceText(count,count+1,valor);
      marca_mc.x = -11;
      marca_mc.y = -21.5;
      count+=2;
   }else if(count == 3){
      count++;
   }else if(count == 1 || count == 4 ){
      texto1_txt.replaceText(count,count+1,valor);
      marca_mc.x += MovX;
      count++;
   }else if (count == 5){
      texto1_txt.replaceText(count,count+1,valor);
      this.play();
      marca_mc.alpha = 0;
   }
};


Muchas gracias de nuevo por tu ayuda.

Por gavidia

15 de clabLevel



 

msie8
Citar            
MensajeEscrito el 08 Jun 2011 04:15 pm
No, es un poco rebuscada tu lógica. Si solo cambia un valor en el callback y eso lo puedes reglar (por ejemplo se incrementa en 1), entonces un loop puede valerte. Si no lo ves, déjalo para la próxima, lo importante es que te funciona

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.