Comunidad de diseño web y desarrollo en internet online

problema con operador MENOR/MAYOR QUE

Citar            
MensajeEscrito el 24 Feb 2010 10:29 pm
Hola

No me gustaria pasar aqui por una pregunta como estas pero ando medio confundido...

Estoy haciendo X funcion, dentro de la cual hay una condicion, del resultado de esa condicion, ya sea verdadero o falso.. hay una condicion mas segun sea el caso.

En esta ultima condicion tengo un simple operador menor que.

por alguna extraña razon, flash me esta dando el resultado como indefinido, hago un par de pruebas simples como:

Código ActionScript :

trace (i+" < "+this.total);
trace (i < this.total);


y me da un resultado como esto :?

Código ActionScript :

0 < 3

undefined


si utilizo el <= si me funciona, pero necesito que no sea menor que o igual, necesito que la condicion sea simplemente menor que..

ya hice tercer trace fuera de mi funcion algo como esto:

Código ActionScript :

a  = 1;
b  = 2;
trace(a < b);

true


pero no entiendo por que dentro de mi funcion, no trabaja el operador.. el primer y segundo trace que puse lo hago dentro de mi funcion y no entiendo por que me da indefinido, si ambas variables estan bien.

aqui va mi funcion completa a ver si alguien tiene idea de por que sea

Código ActionScript :

i = 0;
outputDir = 1;

function cargar_imagen(inputDir)
  {   
  alert.text = "cargando";
  cargar = new LoadVars();
  cargar.sendAndLoad("http://www.musicandtalent.com.mx/tempvar.php",cargar, "POST");
  cargar.onLoad = function() 
    {    
    function carga_contenedor(i,galeria)
      {
     u = i-1;
      o = i+1;
     ruta = "http://www.musicandtalent.com.mx/gallery/"+galeria+"/";
     rn = Math.round(Math.random()*1000000);
     alert.text = "";
     loadMovie(ruta+u+".jpg?random="+rn,_root.contenedor_raiz.contenedor_izquierdo);
      loadMovie(ruta+i+".jpg?random="+rn,_root.contenedor_raiz.contenedor_central);
      loadMovie(ruta+o+".jpg?random="+rn,_root.contenedor_raiz.contenedor_derecho);
     }   
    if(inputDir == 0)
      {  
         trace (i+" < "+this.total);    // trace: 1 < 3
    trace (i < this.total);         //  trace: indefinido
     i--; if(i > 1) { carga_contenedor(i,this.galeria); };  // LUGAR DONDE NO FUNCIONA MI OPERADOR
      }
      else
      {
     trace (i+" < "+this.total);   // trace: 1 < 3
     trace (i < this.total);        //  trace: indefinido
     i++; if(i < this.total){ carga_contenedor(i,this.galeria); };    // LUGAR DONDE NO FUNCIONA MI OPERADOR
     };
   };
  };
  
cargar_imagen(outputDir);

btn_1.onRelease = function () { cargar_imagen(0); }
btn_2.onRelease = function () { cargar_imagen(1); }



espero alguien pudiera aclarar mi duda, muchas gracias de antemano

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 25 Feb 2010 07:45 am
Hola,
creo que el problema es que this.total no es una variable numérica, sino un string, y por eso no puedes compararlas

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox
Citar            
MensajeEscrito el 25 Feb 2010 04:29 pm
me sono bastante logico aunque intento crear una variable numerica y me sigue dando indefinido

Código ActionScript :

var max:Number = this.total;
if(i < max){ i++; carga_contenedor(i,this.galeria); };   
trace (i+" < "+max);   // trace: 1 < 3 
trace (i < max);       // undefined


alguna otra idea? o estoy declarando mal ? no estoy tan familiarizado con la sintaxis de as

Por jOina

Claber

359 de clabLevel

2 tutoriales

 

Guadalajara, Mexico

firefox
Citar            
MensajeEscrito el 25 Feb 2010 07:44 pm
La verdad es que me ha costado media hora darme cuenta xD , pero el problema es que this.total, aparte del caracter "3" también está cogiendo un salto de línea, y por eso no funciona la conversión a Number. Para solucionarlo puedes quitar ese salto de línea con:

Código ActionScript :

Number(this.total.slice(0, -1));

De todos modos, veo que estás anidando las funciones dentro del onLoad. No hace falta que hagas eso, puedes ponerlas fuera:

Código ActionScript :

var i:Number = 0;
var outputDir:Number = 1;

function cargar_imagen(inputDir:Number):Void
{
   alert.text = "cargando";
   var cargar:LoadVars = new LoadVars();
   cargar.sendAndLoad("http://www.musicandtalent.com.mx/tempvar.php",cargar,"POST");
   cargar.onLoad = onLoadHandler;
}

function onLoadHandler(success:Boolean):Void
{
   var aux:Number = Number(this.total.slice(0, -1));
   if (inputDir == 0)
   {
      i--;
      if (i > 1) carga_contenedor(i, this.galeria);
   }
   else
   {
      i++;
      if (i < aux) carga_contenedor(i, this.galeria); 
   }
}

function carga_contenedor(i, galeria):Void
{
   u = i - 1;
   o = i + 1;
   ruta = "http://www.musicandtalent.com.mx/gallery/" + galeria + "/";
   rn = Math.round(Math.random() * 1000000);
   alert.text = "";
   loadMovie(ruta + u + ".jpg?random=" + rn, _root.contenedor_raiz.contenedor_izquierdo);
   loadMovie(ruta + i + ".jpg?random=" + rn, _root.contenedor_raiz.contenedor_central);
   loadMovie(ruta + o + ".jpg?random=" + rn, _root.contenedor_raiz.contenedor_derecho);
}

cargar_imagen(outputDir);

btn_1.onRelease = function():Void
{
   cargar_imagen(0);
}

btn_2.onRelease = function():Void
{
   cargar_imagen(1);
}

Por isidoro

Claber

498 de clabLevel

2 tutoriales

Genero:Masculino  

firefox

 

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