Использование мыши внутри класса - PullRequest
0 голосов
/ 29 марта 2011

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

package src { 

      public dynamic class guider{
      public function move01(xxx:int, yyy:int , speed:int) {
            trace (mouseX);
            return true;
        }
    }   
}

После компиляции выдает ошибку: « 1120: доступ к неопределенному свойству mouseX «, что очевидно. Я пытаюсь понять это с помощью импорта некоторых классов, связанных с мышью. Поэтому я переписываю свой код так:

package src {
    import flash.utils.getDefinitionByName;     
    public dynamic class guider{
        public function move01(xxx:int, yyy:int , speed:int) {
            trace (getDefinitionByName("flash.ui.Mouse").mouseX);
            return true;
        }
    }
}

Теперь нет любой ошибки при компиляции, но когда я ее использую, она обнаруживает « undefined »! В чем моя проблема здесь?

Примечание. Этот класс используется для взаимодействия с мышью в режиме реального времени, и я предпочитаю упростить его для повышения производительности. Возвращаемое значение этой функции будет числом, основанным на координации мыши и других входных данных. Здесь я использую « return true;» только для тестирования.

1 Ответ

1 голос
/ 29 марта 2011

в конструкторе класса вы должны пройти этап (типа Stage) и сказать:

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);

private function mouseMoveHandler(event:MouseEvent):void {
        trace(event.stageX + " " + event.stageY);
}

РЕДАКТИРОВАТЬ 1:

Вы не можете использовать Object (расширение none) в качестве базового класса, если хотите знать, где находится мышь относительно этого объекта. Чтобы найти мышь, вам нужно показать этот объект на сцене, чтобы найти положение, в котором находится мышь. Для этого вы можете использовать функцию MouseX объекта DisplayObject. Так что расширяйте это вместо MovieClip. Или вы можете снова найти мышь, используя сцену. Снова передайте сцену классу в конструкторе и сохраните его в закрытой или защищенной переменной.

public function move01(xxx:int, yyy:int , speed:int):void {
        trace (stage.mouseX);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...