AS3: можно ли установить курсор x и y? - PullRequest
2 голосов
/ 02 сентября 2011

можно ли установить положение курсора мыши? Это то, что я хотел бы сделать: когда пользователь нажимает кнопку мыши над мувиклипом, мувиклип начинает перетаскиваться, и на внутреннем кадре курсор располагается в середине мувиклипа (не говорите мне о блокировке, потому что я не могу используйте его таким образом, поскольку точка регистрации моего мувиклипа находится в верхнем левом углу). По сути, я хотел бы иметь возможность заставить курсор достигать центра мувиклипа, когда пользователь щелкает по нему. Возможно ли это?

Ответы [ 4 ]

1 голос
/ 02 сентября 2011

У меня нет доказательств, но я думаю, что вы не можете так контролировать курсор.

Альтернативой может быть скрытие фактического курсора мыши и добавление вместо него пользовательского курсора, который можно расположить относительно реальной позиции курсора, или в центре вашей цели перетаскивания, если это будет проще.Проблема в том, что у вас нет возможности узнать точное появление курсора пользователя.

0 голосов
/ 05 сентября 2011

Расширение ответа 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();
        }

    }

}
0 голосов
/ 02 сентября 2011

Я не думаю, что это возможно. Координаты мыши доступны только для чтения.

Однако я бы предложил вместо этого:

  • Скрыть мышь, используя Mouse.hide();.

  • Создайте свой собственный указатель в месте расположения мыши.

  • Управляйте этим указателем по вашему желанию.

или

  • Когда кнопка мыши нажата, переместите сам мувиклип, если возможно.
0 голосов
/ 02 сентября 2011

Другими словами, вам нужна эта функция: SetCursorPos .

Вы не можете управлять курсором с помощью Flash.Вам придется решить это иначе - как насчет того, чтобы установить точку регистрации вашего мувиклипа в центр?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...