我发现这很奇怪:
trace("typeof: ",typeof(sprite.x));
trace("getClassName: ,getQualifiedClassName(sprite.x));
// Output: typeof: number
getClassName: int
这是一个精灵的属性" x"一个号码? ......还是整数? ......都不是? ...都???
所以这就是:
private function spriteTest():void {
sprite = new Sprite;
sprite.graphics.beginFill(0xff0000, 1);
sprite.graphics.drawCircle(50, 50, 25);
sprite.graphics.endFill();
sprite.x = 0; sprite.y = 0; // default position
trace("typeof: ",typeof(sprite.x));
trace("getClassName: ",getQualifiedClassName(sprite.x));
stage.addChild(sprite);
sprite.addEventListener(MouseEvent.CLICK, moveit);
}
private function moveit(e:MouseEvent):void {
var spriteTempX:Number = sprite.x;
for (var i:int = 0; i < 1000; i++) {
sprite.x += .1;
spriteTempX += .1;
trace(i,sprite.x, spriteTempX);
}
}
// Output: i sprite.x spriteTempX
0 0.1 0.1
1 0.2 0.2
2 0.3 0.30000000000000004
3 0.4 0.4
4 0.5 0.5
5 0.6 0.6
6 0.7 0.7
7 0.75 0.7999999999999999
8 0.85 0.8999999999999999
9 0.95 0.9999999999999999
...
997 92.6 99.7999999999986
998 92.65 99.8999999999986
999 92.75 99.9999999999986
所以现在,我的精灵只移动了92(93?)像素,而不是99(100?)像素。
我可以通过将sprite.x值分配给spriteTempX的值来绕过这种创可贴风格,但我想知道是否有更优雅的解决方案。
显示对象的.x属性是什么?是否有更优雅的方式来完成我想要完成的事情?