2010-10-20 62 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