我有这个奇怪的问题,我只是想不通。 我正在使用localToGlobal来获取我的角色的坐标,并在关卡剪辑上做一个hittestpoint。在Flash Player 10.1中一切正常。 R52
但是我在另一台运行flash player 10.0 r22的机器上打开完全相同的.swf,而且测试不起作用。我尝试了一切,追踪父母等。
设置:
Main Class,在Main Class中添加一个Game类(Sprite)。 在游戏类中,我添加一个Level Class(Sprite)和一个Character Class(Sprite)
'camera'跟随角色,Game类被移动到周围。
所以
主要(静态x& y)> 游戏(动态x& y)> 等级(静态x& y)&字符(动态x& y) 这是我的代码:
private function checkLanded():Boolean
{//this code runs on the character class, so 'this' = character
var localPoint:Point = new Point(this.x, this.y + this.myHeight / 2 + 1);
var globalPoint:Point = parent.localToGlobal(localPoint)
if (Settings.levelGround.hitTestPoint(globalPoint.x,globalPoint.y,true) || Settings.levelPlatforms.hitTestPoint(globalPoint.x,globalPoint.y,true))
{
return true;
}
return false;
}
所以这段代码在flash player 10.1中完美运行,但在10.0中没有 现在为10.0,而不是使用parent.globalToLocal,我尝试了parent.parent.globalToLocal,它在10.0中工作而不在10.1中。
如何确保此代码可以在所有Flash播放器中运行。
* *编辑 - 我修好了,我移动了主类arround,它以某种方式扰乱了闪光坐标系。然后我尝试移动游戏类arround,这似乎工作。仍然想知道为什么移动主类arround也不起作用..
请帮助我,
提前致谢,
Erik Sombroek答案 0 :(得分:0)
这是一种了解参考舞台
的显示对象坐标的方法public function getDisplayObjectsRootCoord(target:DisplayObject):Point{
var coords:Point = target.localToGlobal(new Point());
return coords;
}
或查看鼠标是否在项目上...
var target:MovieClip;
var stage:Stage;// make sure you have a reference to this
var mouseOverPanel:Boolean = target.hitTestPoint(stage.mouseX,stage.mouseY,true);