2016-11-22 64 views
0

首先,我是一个总的noob as3和一般编码,我几乎没有运行代码片段之外。自定义鼠标光标删除重复的符号后,其中删除

我正在开发一个项目,其中的一部分是在进入场景后您会得到自定义鼠标光标的场景,当您离开场景时,自定义鼠标光标将被删除。我用来启动自定义光标的代码是:

stage.addChild(crsTemple); 
crsTemple.mouseEnabled = false; 
crsTemple.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor); 

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

其中crsTemple是自定义光标的实例名称。然后,当进入一个新的场景(通过滚动在一个对象),我在新的场景下面的代码:

stage.addChild(crsTemple); 
crsTemple.mouseEnabled = false; 
crsTemple.addEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor_4); 

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

crsTemple.removeEventListener(Event.ENTER_FRAME, fl_CustomMouseCursor_4); 
stage.removeChild(crsTemple); 
Mouse.show(); 

不幸的是,每当我进入了第二个场景,我再次拿到常规鼠标,但是当场景发生变化时,无论鼠标位于何处,它都会丢弃crsTemple,并且在文件运行的其余时间保持在那里。

任何帮助非常感谢,非常感谢帮助像我这样的noob!

回答

0

无需在新场景中编写相同的代码。您实际上可以使用第一个场景中的所有声明。在场景2中,以下代码片段MOUSE_MOVE处理函数(fl_CustomMouseCursor)也将在场景2中调用。自定义光标也可以通过其名称crsTemple访问。

import flash.display.MovieClip; 
import flash.events.MouseEvent; 

var crsTemple:Sprite = new CrsTemple(); 
crsTemple.mouseEnabled = false; 
addChild(crsTemple); 

// for smooth cursor movement MOUSE_MOVE instead of ENTER_FRAME 
stage.addEventListener(MouseEvent.MOUSE_MOVE, fl_CustomMouseCursor); 
stage.addEventListener(MouseEvent.CLICK, nextStage); // for test purpose, just to switch the stage 

function fl_CustomMouseCursor(event:Event):void 
{ 
crsTemple.x = stage.mouseX; 
crsTemple.y = stage.mouseY; 
trace(crsTemple.x); 
} 

function nextStage(e:Event):void { 
    gotoAndStop(1,"Scene 2"); 
} 

Mouse.hide(); 
stop(); 

这里是一个link to fla样品

+0

这个回答我的问题,并使其完美地工作!非常感谢@DigitalD的帮助,我真的很感激!你救了我的项目迟到了! –