Problemas al posicionar DisplayObject (ej. Sprite) en una posición NaN

·

Uno de los cambios más sutiles con los que nos hemos encontrado entre las versiones 9 y 10 del player de flash es como se posiciona un DisplayObject cuando se le indica un valor NaN (Not a Number) como x ó y .

Hasta ahora el player posicionaba el objeto en la posición cero sin embargo con el nuevo player -que ya está presente en aproximadamente el 60 % de los navegadores- lo posiciona en un número negativo muy muy grande.

Realmente casi sería de agradecer que el player lanzara una excepción ya que parece raro que nadie quiera posicionar algo en la posición NaN sino que se dan cuando multiplica cero infinito (división por cero) o en caso de errores de casting etc.

Así este código muestra un cuadrado rojo en flash player 9 y nada en el 10 (salvo que hagas un scroll hasta la posición -107374182.4)


package {
import flash.display.Sprite;
public class Pruebas extends Sprite
{
public function Pruebas(){
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xFF0000);
sprite.graphics.drawRect(0,0,10,10);
sprite.graphics.endFill();
sprite.x = NaN;
addChild(sprite);
}
}
}



Así que si de pronto tu aplicación se ha quedado sin contenidos es una de las cosas que tendrás que verificar








Este hecho en adobe está reportado como bug, así que puede que nos encontremos con más cambios de comportamiento en el futuro

http://bugs.adobe.com/jira/browse/FP-612