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ódigo | Mensaje | Descripció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.
|
| | 1013 | Las 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.
|
| | 1031 | Problema 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.
|
| | 1035 | Uso 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.
|
| | 1039 | Problema 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.
|
| | 1045 | Problema 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.
|
| | 1059 | Problema 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.
|
| | 1061 | Problema 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. | |
| | 1067 | Problema 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.
|
| | 1071 | Problema 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.
|
| | 1073 | Problema 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.
|
| | 1083 | Problema 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.
|
| | 1087 | Problema 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.
|
| | 1089 | Có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.
|
| | 1091 | Problema 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.
|
| | 1093 | Se 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.
|
| | 1097 | Comparació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.
|
| | 1099 | Comparació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
|
| | 1101 | Asignació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."); }
|
| | 1103 | Se 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.
|
| | 1105 | No 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.
|
| | 1111 | La constante no se ha inicializado. | |
| | 1113 | Array(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). | |
| | 1115 | La 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.
|
| | 3552 | Añ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.
|
| | 3554 | Se 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.
|
| | 3556 | El operador instanceof ha quedado desfasado, utilice el operador is. | |
| | 3574 | Problema 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.
|
| | 3576 | Date(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). | |
| | 3582 | Al importar un paquete con el mismo nombre que la clase actual, se ocultará el identificador de dicha clase en este ámbito. | |
| | 3584 | Se han especificado varios argumentos con el nombre '_'. Las referencias a dicho argumento siempre se resuelven en el último. | |
| | 3590 | Se ha utilizado un valor no booleano en un lugar en el que se esperaba un valor booleano. | |
| | 3591 | Se 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.
|
| | 3597 | Definició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
}
|
| | 3598 | El 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. | |
| | 3599 | El 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.
|
| | 3600 | Posible intento de eliminación de una propiedad fija. | |
| | 3601 | La 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. |