Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash 在类内使用鼠标_Flash_Actionscript 3_Class_Mouse_Flash Cs4 - Fatal编程技术网

Flash 在类内使用鼠标

Flash 在类内使用鼠标,flash,actionscript-3,class,mouse,flash-cs4,Flash,Actionscript 3,Class,Mouse,Flash Cs4,我创建了一个简单的类,它不是从任何其他flash类扩展而来的。问题是,在这个简单的类中使用鼠标协调。这是我的课程代码 package src { public dynamic class guider{ public function move01(xxx:int, yyy:int , speed:int) { trace (mouseX); return true; } } } 编译后,

我创建了一个简单的类,它不是从任何其他flash类扩展而来的。问题是,在这个简单的类中使用鼠标协调。这是我的课程代码

package src { 

      public dynamic class guider{
      public function move01(xxx:int, yyy:int , speed:int) {
            trace (mouseX);
            return true;
        }
    }   
}
编译后,它会出现错误:“1120:Access of undefined property 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;
        }
    }
}
现在编译时没有任何错误,但当我使用它时,它会找出“未定义的”!我的问题是什么


注意:该类用于与鼠标的实时交互,我更倾向于简化以获得更高的性能。该函数的返回值将是一个基于鼠标x坐标和其他输入的数字。这里我使用“return true;”仅用于测试。

在类的构造函数中,您应该通过阶段(类型阶段),然后说:

stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);

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

不能使用对象(无扩展)如果您想知道鼠标相对于该对象的位置,请将其作为基类。要找到鼠标,您需要在舞台上显示该对象以找到鼠标所在的位置。因此,您可以使用DisplayObject的功能。因此,请扩展该功能而不是MovieClip。或者,您可以使用舞台再次找到鼠标。再次传递sta在构造函数中调用该类,并将其保存在私有或受保护的var中

public function move01(xxx:int, yyy:int , speed:int):void {
        trace (stage.mouseX);
}