ActionScript 3.0中自定义光标的问题



我写了一个简单的游戏,我想添加自定义指针。我创建了名为Pointer的MovieClip,将其导出到AS3,并编写如下代码:

var pointer:Pointer = new Pointer();
pointer.scaleX=0.1; //that's because cursor turned to be MUCH bigger than needed
pointer.scaleY=0.1;
stage.addEventListener(MouseEvent.MOUSE_MOVE, redrawCursor); 
stage.addEventListener(Event.MOUSE_LEAVE, hideCursor); 
Mouse.hide(); 
function redrawCursor (event:MouseEvent):void { 
    pointer.visible = true; 
    pointer.x = event.stageX; 
    pointer.y = event.stageY; 
} 
function hideCursor (event:Event):void { 
    pointer.visible = false; 
} 

我想没什么好解释的——代码太简单了。在游戏中,在第74帧,一些物体被创建在舞台上。如果我在生成和添加其他MovieClip实例之前粘贴这段代码,光标实际上在这些对象的后面。如果我粘贴这段代码AFTER,鼠标在最上面,但是mousellistener根本没有反应。有什么问题吗?: SS

每次使用addChild方法时,它都会将DisplayObject置于目标显示列表中的其他所有内容的顶部。

制作两个DisplayObjects,将鼠标放在顶部,将其他所有内容放在底部,或者使用addChildAt方法将任何内容放在鼠标下方。

编辑:

普通的跟随游标是非常滞后的,通常不能提供如此好的用户体验。如果可以使用flash player 10.2+,则应该使用本机鼠标光标。

var cursorData:MouseCursorData = new MouseCursorData();
var bitmapDatas:Vector.<BitmapData> = new Vector.<BitmapData>();
var bitmap:Bitmap = new zoomCursor();
bitmapDatas[0] = bitmap.bitmapData;
cursorData.data = bitmapDatas;
Mouse.registerCursor("myCursor", cursorData);
Mouse.cursor = "myCursor";

在顶部添加一个容器。如果不确定,请使用:

var container : Sprite = new Sprite();
container.name = "pointer";
stage.addChild(container);

这应该可以使你的指针始终位于最顶端。这是因为默认情况下,主应用程序是该阶段的第一个(也是唯一的)子应用程序。将容器添加到舞台上,将把它放在主应用程序的正上方。

将指针添加到容器中

Sprite(stage.getChildByName("pointer")).addChild(pointer);

禁用指针的鼠标交互。否则,它可能会吞噬你的鼠标点击,它们永远不会到达下面的电影剪辑。

pointer.mouseEnabled = false;

最新更新