2010-10-20 30 views
2

谷歌表示:如何使用hitTestPoint當影片縮放

displayObject.hitTest(stage.mouseX, stage.mouseY, true) 

是測試鼠標過度一個顯示對象的方式。如果我的電影以100%的比例顯示,這將起作用。但是,如果最大化我的瀏覽器窗口,以便Flash電影更改縮放比例,那麼這一切都會發生。

有沒有人有辦法解決這個問題?

非常感謝。

回答

2

我通常使用:

stage.addEventListener(MouseEvent.MOUSE_OVER, functionName); 

但是,如果你有使用則hitTest方法,可能比你想看看從全局轉換您的點到本地影片剪輯座標具體原因。縮放MovieClip後,它的x-y座標不再以1對1映射到舞臺座標。但是,你可以使Flash找出哪個座標你所談論的使用:

yourMovieClip.globalToLocal(yourTestPoint)); // [x=-10, y=0] 

這裏是所有文件的相關鏈接...

http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/flash/display/DisplayObject.html

您可能還需要看看與hitTestPoint做同樣事情的「hitTestObject()」方法,只使用整個對象...沒有點!

希望這有助於。

+1

感謝您的回答。正如你所說,問題是當電影放大時(在最大化的瀏覽器窗口中說),我最外面的影片剪輯的座標與舞臺的座標不匹配。因此,看起來與文檔相反,我需要使用我最外面的DisplayObject的座標空間作爲命中測試,如下所示: var point:Point = new Point(e.stageX,e.stageY); point = outerMostDisplayObject.globalToLocal(point); if(hitArea.hitTestPoint(point.x,point.y,true)){} – tarling 2010-10-21 08:52:51

+0

在這種情況下,文檔顯然是錯誤的。 x,y位於* root *座標空間中,NOT * Stage *! – 2015-04-13 16:11:04