2011-08-04 54 views
1

我寫了一個簡單的遊戲,我想添加自定義指針。我創建影片剪輯稱爲指針,它出口到AS3寫了這樣的代碼:ActionScript 3.0中的自定義光標問題

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實例之前粘貼此代碼,則遊標實際上是BEHIND這些對象。如果我在此後粘貼此代碼,鼠標位於最上方,但MouseListeners根本不反應。有什麼問題? :SS

+0

你在哪裏添加'指針'到舞臺上? – shanethehat

+1

+1 //'那是因爲光標變得比需要的大得多 ' –

+0

@shanethehat你是什麼意思?在行動o.O – nicks

回答

1

在頂部添加容器到您的影片。如果不確定如何使用:

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

這應該能讓你的指針始終放在最頂端。這是因爲你的主應用程序默認是舞臺的第一個(也是唯一的)孩子。將容器添加到舞臺上會使其位於主應用程序的正上方。

添加指向此容器的指針。

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

禁用指針的鼠標交互性。否則,它可能會吞下你的鼠標點擊,並且它們永遠不會到達下面的影片剪輯。

pointer.mouseEnabled = false; 
+0

這應該適用於什麼?我應該在哪裏粘貼此代碼,之前或之後? :SS – nicks

+0

> pointer.mouseEnabled = false; 那是什麼? :SS – nicks

+1

喲好吧。將添加解釋。 –

2

每次使用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"; 
+0

其實這就是我正在做的。但在這種情況下,正如我所說的,mouselisteners不起作用... – nicks

+0

如果Flash Player 10.2是選項,爲什麼不使用本地鼠標光標,它具有更好的性能。 http://www.adobe.com/devnet/flashplayer/articles/native-mouse-cursors.html 否則把pointer.mouseEnabled = false;正如延斯所說。 –

+0

我添加了用於創建本機遊標的代碼(從http://adobe.ly/eXLDeJ修改) –