Flash Actionscript 3.0鼠标光标重复

时间:2014-11-10 17:43:23

标签: actionscript-3 flash flash-cs6

我写了一个简单的游戏,我想添加自定义鼠标光标。我创建了名为Pointer的MovieClip,将其导出到AS3并编写了这段代码:

/* Custom Mouse Cursor
Replaces the default mouse cursor with the specified symbol instance.
*/

stage.addChild(movieClip_2);
movieClip_2.mouseEnabled = false;
movieClip_2.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor_3);

function fl_CustomMouseCursor_3(event:Event)
{
    movieClip_2.x = stage.mouseX;
    movieClip_2.y = stage.mouseY;
}
Mouse.hide();

//To restore the default mouse pointer, uncomment the following lines:
//movieClip_2.removeEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor_3);
//stage.removeChild(movieClip_2);
//Mouse.show();

以下是截图:enter image description here

每当我玩游戏(ctrl enter)时,它会停止播放并复制自定义光标。无论如何,我可以让它不重复这是非常烦人的,我不知道如何解决它。

~EDIT 2~

好的我已将代码更改为但现在问题是它同时向我显示常规光标和自定义光标。

movieClip_1.mouseEnabled = false; movieClip_1.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor); function fl_CustomMouseCursor(event:Event) { movieClip_1.x = stage.mouseX; movieClip_1.y = stage.mouseY; } stage.removeChild(movieClip_1) Mouse.hide()

enter image description here

~EDIT 3~

感谢@LDMS帮助我。我不得不删除第一行stage.addChild(movieClip_1);并且它有效。 :)

1 个答案:

答案 0 :(得分:1)

最有可能的是,你的问题来自这一行:

stage.addChild(movieClip_2);

当您将在时间轴上创建的影片剪辑添加到另一个显示对象(如舞台)时,除了通过代码外,它不会从该新显示对象中删除。

如果您的时间轴循环,那么每个循环都会创建一个新的影片剪辑并将其添加到舞台上(但不会删除旧的影片剪辑)。

要解决此问题,请执行以下操作之一:

  1. 不要循环你的时间线(所以代码只发生一次),例如在你的时间轴上加stop()

  2. 在时间轴循环之前从舞台手动删除影片剪辑(例如,时间轴末尾的stage.removeChild(movieclip_2)

  3. 不要将它添加到舞台上。 (只需取出stage.addChild(movieClip_2);行)