感谢您抽出宝贵时间回答我的问题。所以问题是跟随我的鼠标制作一个简单的矩形。我真的不明白为什么这段代码不起作用。 包类
{
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
public class watever extends MovieClip
{
var stageRef:Stage;
public function watever(x:Number, y:Number, stageRef:Stage)
{
this.x = x;
this.y = y;
this.stageRef = stageRef;
addEventListener(Event.ENTER_FRAME, moveMe, false, 0, true);
}
public function moveMe(e:Event):void
{
this.x = mouseX;
this.y = mouseY;
trace(mouseX);
}
}
}
对象只是在“奇怪”的地方,所以我试图追踪mouseX,我在输出中得到了愚蠢的数字
-1373
1790
-1373
1790
-1373
1790
-1373
1790
-1373
1790
-1373
1790
-1373
但是,如果我从父类声明它,它可以正常工作。请问代码有什么问题? (以下是它从父类开始的工作方式)
public function DocumentClass()
{
c = new watever(200, 200, stage)
stage.addChild(c);
addEventListener(Event.ENTER_FRAME, loop, false, 0, true);
}
private function loop(e:Event):void
{
c.x = mouseX;
c.y = mouseY;
}
答案 0 :(得分:1)
鼠标位置相对于DisplayObject(mouseX
与this.mouseX
相同,如果这样更清晰),那么如果您的watever
MovieClip位于(0,50)阶段,鼠标位于(0,60),watever.mouseY
将为10。
当您从文档类中读取它时,您将获得相对于舞台的mouseX
和mouseY
,这就是它正常工作的原因。你可以改变moveMe()来做到这一点:
public function moveMe(e:Event):void
{
this.x = stageRef.mouseX;
this.y = stageRef.mouseY;
}