我创建了一个不从任何其他flash类扩展的简单类。问题是,在这个简单的类中使用鼠标协调。这是我的课程代码。
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 ”!我的问题在这里是什么?
注意:此类用于与鼠标的实时交互,我更喜欢简化以获得更高的性能。此函数的返回值将是基于鼠标x协调和其他输入的数字。在这里,我使用“ return true;”仅用于测试。
答案 0 :(得分:1)
在类的构造函数中,您应该传递阶段(类型为Stage),然后说:
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
private function mouseMoveHandler(event:MouseEvent):void {
trace(event.stageX + " " + event.stageY);
}
编辑1:
如果您想知道鼠标相对于该对象的位置,则无法使用Object(extend none)作为基类。要找到鼠标,您需要在舞台上显示该对象以找到鼠标所在的位置。因此,您可以使用DisplayObject的MouseX功能。所以扩展那个而不是MovieClip。或者您可以使用舞台再次找到鼠标。再次将阶段传递给构造函数中的类,并将其保存在私有或受保护的var。
中public function move01(xxx:int, yyy:int , speed:int):void {
trace (stage.mouseX);
}