Los mensajes de advertencia del compilador identifican el código que es válido y que se compila correctamente, pero que es posible que no responda a lo que el autor deseaba. Para activar la detección de estos posibles problemas, compile los proyectos de ActionScript en modo de advertencia.

Algunas de estas advertencias (por ejemplo, "Falta la declaración de tipo.") son opciones de estilo de codificación que usted puede decidir si aplicar o no. Otras (por ejemplo, "Asignación imposible de null.") indican sentencias que son válidas pero que es improbable que se comporten de la manera prevista por el usuario. Una tercera clase de advertencias abarca los problemas que puede encontrar al traspasar código de ActionScript 2.0 a ActionScript 3.0.


 CódigoMensajeDescripción
 1009_ '_' no tiene declaración de tipo. No declarar un tipo de datos es una preferencia de estilo de codificación. Un tipo de devolución de función, un parámetro o una variable carecen de declaración de tipo. Sin embargo, la utilización de declaraciones de tipo permite al compilador escribir un código más eficiente y detectar más errores en tiempo de compilación. Active esta advertencia si desea que se le recuerde cuando no haya utilizado una declaración de tipo.
 1013Las variables de tipo _ no pueden ser undefined. El valor undefined será obligado a adoptar el tipo _ antes de la comparación. Sólo las variables de tipo * pueden ser undefined. Salvo algunas excepciones, las variables no inicializadas tienen el valor predeterminado null en lugar de undefined. Entre dichas excepciones figuran éstas: Variables Boolean, que tienen el valor predeterminado false. Variables Number, que tienen el valor predeterminado NaN, y las variables int o uint, que tienen el valor predeterminado 0.
 1031Problema de migración: El resultado de la nueva _ será el valor de devolución de _ y no una nueva instancia de dicha función. Esta es una advertencia de migración de código. El código detectado se comporta de forma diferente en ActionScript 3.0 en comparación con ActionScript 2.0, como se muestra en el siguiente ejemplo:
function f(){
       this.b = 22;
       this.a = new Array(2); 
       this.a[0] = 33;
       this.a[1] = 44;
       return a;
       }
       // devuelve una nueva instancia de f en ActionScript 2.0 y una nueva matriz de 2 elementos en ActionScript 3.0
       var d = new f();  // Advertencia
       trace(d.a);       // undefined en ActionScript 3.0, [33,44] en ActionScript 2.0.
    
 1035Uso de Boolean() sin argumentos. Esta es una advertencia de migración de código. La función Boolean() devuelve false en ActionScript 3.0, pero undefined en ActionScript 2.0.
 1039Problema de migración: Cuando se llama a la función Number('') con un argumento de cadena vacía, ésta devuelve 0 en ActionScript 3.0 y NaN en ActionScript 2.0. Esta es una advertencia de migración de código. La llamada al método Number() con un argumento String omite todo el espacio en blanco de la cadena y devuelve el valor predeterminado 0 si no se detectan dígitos. En ActionScript 2.0, cualquier espacio en blanco existente en la cadena provoca que el resultado sea NaN.
 1045Problema de migración: La manipulación de los elementos null y undefined en Array.toString() ha cambiado. Esta es una advertencia de migración de código. En ActionScript 2.0, los elementos de matriz null se convierten en null y los elementos undefined se convierten en undefined. En ActionScript 3.0, tanto los elementos null como los elementos undefined se convierten en una cadena vacía ''. Si tiene código que analiza la salida toString() desde un Array, es posible que tenga que ajustar el código para dar cabida a esta diferencia.
 1059Problema de migración: La propiedad _ ya no se admite. _. Esta es una advertencia de migración de código. La propiedad que está intentando utilizar no existe en ActionScript 3.0.
 1061Problema de migración: El método _ ya no se admite. _. Esta es una advertencia de migración de código. El método que está intentando utilizar no existe en ActionScript 3.0.
 1066__resolve ya no se admite. 
 1067Problema de migración: __resolve ya no se admite. Utilice la nueva clase Proxy para obtener una funcionalidad similar. Esta es una advertencia de migración de código. Consulte Proxy en esta referencia del lenguaje para obtener más información sobre la sustitución de __resolve.
 1071Problema de migración: _level ya no se admite. Para más información, consulte el paquete flash.display. Esta es una advertencia de migración de código. La propiedad que está intentando utilizar no existe en ActionScript 3.0.
 1073Problema de migración: _ no es una clase dinámica. No es posible añadir miembros a las instancias dinámicamente. Esta es una advertencia de migración de código. En ActionScript 2.0, muchas clases, como Number, son dinámicas, lo que significa que pueden añadirse nuevas propiedades a instancias de dichas clases en tiempo de ejecución. Esta advertencia se origina a partir del código que intenta añadir una propiedad a una instancia de una clase no dinámica.
 1083Problema de migración: El método _ se comporta de forma distinta en ActionScript 3.0 debido al cambio en el ámbito de la palabra clave this. Consulte la entrada de la advertencia 1083 para obtener más información. Esta es una advertencia de migración de código. Esta advertencia se genera cuando un método de un objeto se utiliza como valor, normalmente como función callback. En ActionScript 2.0, las funciones se ejecutan en el contexto desde el que se llaman. En ActionScript 3.0, las funciones se ejecutan siempre en el contexto en el que se han definido. Por consiguiente, los nombres de variables y métodos se resuelven en la clase de la que forma parte la función callback, en lugar de en relación con el contexto desde el que se llama, como en el siguiente ejemplo:
class a
    {
       var x;
       function a() { x = 1; }
       function b() { trace(x); }
    }

    var A:a = new a();
    var f:Function = a.b; // se activa una advertencia
    var x = 22;
    f(); // imprime 1 en ActionScript 3.0, imprime 22 en ActionScript 2.0
 1085_ tendrá como ámbito el espacio de nombres predeterminado: _ interno. No será visible fuera de este paquete. No declarar un espacio de nombres es una preferencia de estilo de codificación. Active esta advertencia si desea que se le recuerde cuando olvide declarar un espacio de nombres o especificador de acceso para una definición. Sin éste, la definición no es visible para el código situado fuera de este archivo. Para hacerla visible al código situado fuera de este archivo, declárela con el especificador de acceso public o con una declaración de espacio de nombres. Para conservar la definición como local de este archivo y evitar esta advertencia, declare la definición como private.
 1087Problema de migración: ActionScript 3.0 repite las propiedades de un objeto dentro de una sentencia "for x in target" en orden aleatorio. Esta es una advertencia de migración de código. En ActionScript 2.0, el orden en que se procesaban las propiedades de un objeto era siempre el mismo. En ActionScript 3.0, el orden es aleatorio y puede cambiar dependiendo del equipo. Si se produce un comportamiento de orden inesperado, compruebe este bucle para determinar si este cambio de comportamiento puede afectar al código.
 1089Código de error: _. Esto se debe a un archivo de origen dañado o a un error en el código del compilador. Póngase en contacto con Adobe, Inc. para registrar el error.
 1091Problema de migración: _ Esta es una advertencia de migración de código. En ActionScript 2.0, la declaración de un método mediante un nombre especial (como, por ejemplo, onMouseDown) provocaba que Flash llamara a dicho método cuando se produjera un determinado evento. En ActionScript 3.0, debe llamar a addEventListener() con un método con el fin de registrarlo para recibir dicho evento. Consulte addEventListener en esta referencia del lenguaje para más detalles.
 1093Se ha utilizado un valor negativo donde se esperaba un valor uint (no negativo). La asignación de un valor negativo a un tipo de datos uint da como resultado un valor positivo extremadamente grande. var x:uint = -1; trace(x); // 4294967295.
 1097Comparación ilógica con null. Las variables de tipo _ no pueden ser null. Las instancias de Boolean, int, uint y Number no pueden ser null. El tipo de operador de comparación convierte null en false antes de compararlo con Boolean, o en 0 antes de compararlo con un tipo de datos Number, int o uint.
 1099Comparación ilógica con NaN. Esta sentencia siempre se evalúa como false. NaN tiene una propiedad matemática exclusiva por la que cualquier comparación en la que participe se evalúa como false. Utilice la función global isNaN() para detectar un valor NaN en su lugar, como en el siguiente ejemplo:
trace(NaN == NaN); // ¡false!
    trace(NaN != NaN); // ¡de nuevo false!
    trace(isNaN(NaN)); // true
    
 1101Asignación dentro de la condición. ¿Quiso decir == en lugar de =? El resultado de una sentencia de asignación = es el valor de la parte derecha de la sentencia =. Puede utilizar una sentencia de asignación como prueba condicional, pero no es recomendable hacerlo. Normalmente es el resultado de un error ortográfico en el que se deseaba escribir la prueba de igualdad ==, como se indica en el siguiente ejemplo:
var x:Boolean = false;
    var y:Boolean = true;
    // es difícil saber si la siguiente línea establece intencionadamente el valor de x en el de y o si se trata de un error
    if (x = y) { trace("x is assigned y's value of true, making the conditional test evaluate as true."); }
    
 1103Se ha utilizado null en un lugar en el que se esperaba un valor _. Boolean, Number, int y uint son variables a las que no se les puede asignar null como valor. El valor null se convierte implícitamente en false cuando se asigna a tipo de datos Boolean, y en 0 cuando se asigna a un tipo de datos int, uint o Number.
 1105No se ha especificado ninguna función constructora para la clase _. No especificar una función constructora es una preferencia de estilo de codificación. Active esta advertencia si desea declarar siempre los constructores para las clases. Esta advertencia tiene como objetivo ayudar a localizar aquellos casos en los que un nombre de clase haya cambiado pero el nombre de su constructor no. Las condiciones como ésta no se indican como problemas sin esta advertencia, el constructor anterior parece ser una función normal.
 1111La constante no se ha inicializado. 
 1113Array(x) tiene el mismo comportamiento que el nuevo Array(x). Para convertir un valor al tipo Array, utiliza la expresión x as Array en lugar de Array(x). 
 1115La sentencia super() se ejecutará antes de entrar en este constructor. Añada una llamada a super() dentro del constructor si desea controlar explícitamente el momento de su ejecución. Añadir una llamada a super() dentro del constructor es una preferencia de estilo de codificación. Active esta advertencia si desea ser siempre explícito en relación con el momento de la llamada a super(). Esto puede ayudar a capturar casos en los que su intención fuera llamar a super() tras algún código de inicialización local y finalmente se olvidó de añadir dicha llamada.
 3552Añadir texto a un TextField empleando += es mucho más lento que utilizar el método TextField.appendText(). Consulte el método appendText() de la clase TextField en esta referencia del lenguaje para obtener información sobre esta importante optimización del texto.
 3554Se ha utilizado un valor de función en un lugar en el que se esperaba el tipo _. Es posible que falten los paréntesis () después de esta referencia a una función. Puede utilizar las propias funciones como valores en ActionScript. El código en cuestión utiliza un valor de tipo Function en un lugar en el que se esperaba un tipo distinto de Function, Object o *. Normalmente, esto indica un error ortográfico en el que se han omitido los paréntesis () después del nombre de la función.
 3556El operador instanceof ha quedado desfasado, utilice el operador is. 
 3574Problema de migración: El nombre de la clase XML de ActionScript 2.0 ha cambiado a XMLDocument. Esta es una advertencia de migración de código. XML es en ActionScript 3.0 una clase diferente a la que era en ActionScript 2.0. En ActionScript 3.0, la clase XMLDocument es el equivalente a la clase XML en ActionScript 2.0. La clase ActionScript 3.0 XML ofrece funcionalidad mejorada con una API más sencilla y potente. Consulte XML en esta referencia del lenguaje ActionScript para más detalles.
 3576Date(x) tiene el mismo comportamiento que el nuevo Date().toString(). Para convertir un valor al tipo Date, utilice x as Date en lugar de Date(x). 
 3582Al importar un paquete con el mismo nombre que la clase actual, se ocultará el identificador de dicha clase en este ámbito. 
 3584Se han especificado varios argumentos con el nombre '_'. Las referencias a dicho argumento siempre se resuelven en el último. 
 3590Se ha utilizado un valor no booleano en un lugar en el que se esperaba un valor booleano. 
 3591Se ha utilizado _ en un lugar en el que se esperaba un valor booleano. La expresión será obligada a adoptar el tipo Boolean. 
 3593_ no es una propiedad reconocida de la clase dinámica _. El modo de compilación estricta no comprueba las propiedades no definidas en instancias de clases dinámicas. Los tipos Date, RegExp y Error son dinámicos para conseguir compatibilidad retroactiva con ECMAScript. Esta advertencia encuentra usos de propiedades no definidas en instancias de dichas clases. Un problema habitual consiste en intentar obtener o establecer una propiedad year inexistente en un valor Date. El nombre correcto de la propiedad es fullYear.
 3595_ no es un método reconocido de la clase dinámica _. El modo de compilación estricta no comprueba los métodos no definidos en instancias de clases dinámicas. Los tipos Date, RegExp y Error son dinámicos para conseguir compatibilidad retroactiva con ECMAScript. Esta advertencia encuentra usos de métodos no definidos en instancias de dichas clases.
 3597Definición de variable duplicada. El compilador ha detectado una definición duplicada de una variable. Esto puede originar resultados inesperados. ActionScript no admite ámbitos de variables a nivel de bloques. Todas las variables definidas dentro de un cuerpo de función existen dentro del mismo ámbito, aunque se definan dentro de una sentencia if, una sentencia while, una sentencia for, etc: Por ejemplo, el código siguiente repite la declaración de la variable x dos veces:

    function test() {
    	var x:Number = 10;
    	if (true) {
    	    for (var x=0; x < 5; x++)  // advertencia, es la segunda definición de x
    	    trace(x);
    	}
    	trace(x); // 5, no 10.  El último valor definido por el bucle anterior es el valor actual de x
    }
 3598El nombre de la definición es el mismo que el del paquete importado. Las referencias incompletas a dicho nombre se resolverán en el paquete y no en la definición. 
 3599El nombre de la definición es el mismo que el del paquete importado. Las referencias incompletas a dicho nombre se resolverán en el paquete y no en la definición. Si una definición tiene el mismo nombre que un paquete que se encuentra en el ámbito, todas las referencias incompletas a dicho nombre se resuelven en el paquete y no en la definición. Esto puede originar resultados inesperados al intentar hacer referencia a la variable. Todas las referencias a la definición deben ser completas para que se resuelvan en la definición en lugar de hacerlo en el paquete.
 3600Posible intento de eliminación de una propiedad fija. 
 3601La propiedad declarada _ no puede eliminarse. Para liberar la memoria asociada, establezca su valor como null. La eliminación borra de un objeto las propiedades definidas dinámicamente. Las propiedades declaradas de una clase no se pueden eliminar; la operación simplemente produce errores sin mensaje. Para liberar la memoria asociada con esta variable, establezca su valor como null en su lugar.


 

Enviarme un mensaje de correo electrónico cuando se añadan comentarios a esta página | Informe de comentarios

Página actual: http://livedocs.adobe.com/flash/9.0_es/ActionScriptLangRefV3/compilerWarnings.html