The*_*978 5 mouse actionscript-3 coordinates
当跟踪显示对象mouseX / mouseY或localX / localY坐标时,为什么从0 x开始时从1 y开始?
例如,我在舞台上绘制了一个简单的400 x 400像素精灵,其中一个MouseEvent.MOUSE_MOVE事件监听器调用处理函数来跟踪鼠标的本地坐标.
第一个左上角像素返回{x:1, y:0},最后一个右下角像素返回{x:400, y:399}.不应该x和y开始和结束具有相同的值?我不确定哪个对第一个鼠标坐标(0或1)更有意义,但它们确实没有意义,它们是不同的?
[SWF(width = "1000", height = "600", backgroundColor = "0xCCCCCC")]
import flash.display.Sprite;
import flash.events.MouseEvent;
var darkBlueRect:Sprite = createSprite();
darkBlueRect.x = 23;
darkBlueRect.y = 42;
addChild(darkBlueRect);
darkBlueRect.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
function mouseMoveEventHandler(evt:MouseEvent):void
{
trace(darkBlueRect.mouseX, evt.localX, darkBlueRect.mouseY, evt.localY);
}
function createSprite():Sprite
{
var result:Sprite = new Sprite();
result.graphics.beginFill(0x0000FF, 0.5);
result.graphics.drawRect(0, 0, 400, 400);
result.graphics.endFill();
return result;
}
Run Code Online (Sandbox Code Playgroud)
小智 3
报告错误,您发现了一个:
http://bugs.adobe.com/flashplayer/
我想也许这是为了给精灵上的一条线腾出空间,但所有这些测试都证明情况并非如此。在我看来,这是一个错误。将其归档,我会附议,或者如果您不介意,请告诉我,我将归档它,因为它应该得到修复。
更新
我刚刚尝试了另一个测试,将 stageScaleMode 设置为允许缩放,然后将对象放大 2-3 倍,并尝试在 MOUSE_DOWN 上获取 0/0 读数。只是显然无法完成。我最终确实在 X 上得到了 0 读数,但随后 Y 就出来了。我认为这个问题可能归结为以下事实:flash 将 X/Y 指针位置返回为数字而不是整数,并且您可以在指针位置上获得小数值,正如您放大时会注意到的那样。也许是只是有错误的代码,或者归结为基于小数点计算方式的浮点精度问题,或者如果您没有放大并且对象没有缩放,则闪存会将该小数值舍入为整数,这也可以解释奇怪的行为。不知道只是猜测,我想我会添加这个额外测试的结果。
| 归档时间: |
|
| 查看次数: |
399 次 |
| 最近记录: |