Flash编程本地到全局问题

时间:2011-07-21 14:21:43

标签: actionscript-3 flash-cs5

我有这个奇怪的问题,我只是想不通。 我正在使用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

1 个答案:

答案 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);