AS3:是否可以设置光标x和y?

时间:2011-09-02 16:29:19

标签: actionscript-3

是否可以设置鼠标光标的位置?这就是我想要做的事情:当用户在动画片段上按下鼠标按钮时,动画片段开始拖动,在动画片段中,光标位于动画片段的中间(不要告诉我有关锁定中心因为我不能这样使用它,因为我的movieclip注册点设置在其左上角)。基本上,我希望能够在用户单击时强制光标到达动画片段的中心。这可能吗?

4 个答案:

答案 0 :(得分:1)

我没有证据,但我认为你不能像那样控制光标。

另一种方法是隐藏实际的鼠标光标,并添加一个自定义光标,而不是相对于实际光标位置,或者如果更容易,可以在拖动目标的中心。问题是你无法知道用户光标的确切外观。

答案 1 :(得分:0)

换句话说,您正在寻找此功能:SetCursorPos

您无法使用Flash控制光标。否则你必须解决它 - 如何将你的movieclip的注册点设置到中心?!

答案 2 :(得分:0)

我认为这不可行。鼠标坐标是只读的。

但我会建议其中任何一个:

  • 使用Mouse.hide();隐藏鼠标。

  • 在鼠标位置创建自己的指针。

  • 根据您的意愿控制此指针。

  • 按下鼠标按钮时,移动动画片段本身,如果 可能的。

答案 3 :(得分:0)

扩展loxxy的回复:

不是使用lockCenter将鼠标光标移动到对象的中心,而是可以在对象上触发MouseEvent.MOUSE_DOWN事件时手动将对象移动到鼠标光标的中心位置(仅在对象上调用startDrag之前

这是一个简单的例子:

package  {
    import flash.display.Sprite;
    import flash.events.MouseEvent;

    public class Main extends Sprite{
        public function Main() {
            var drag_object:Sprite = new Sprite()
            drag_object.graphics.beginFill(0xFF0000, .5);
            drag_object.graphics.drawRect(0, 0, 50, 50);
            drag_object.graphics.endFill();

            drag_object.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown);
            drag_object.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);

            drag_object.x = 200;
            drag_object.y = 300;
            addChild(drag_object);
        }

        private function onMouseDown(e:MouseEvent):void {
            var obj:Sprite = e.target as Sprite;
            obj.x = e.stageX - (obj.width * .5);
            obj.y = e.stageY - (obj.height * .5);
            obj.startDrag();
        }

        private function onMouseUp(e:MouseEvent):void {
            var obj:Sprite = e.target as Sprite;
            obj.stopDrag();
        }

    }

}