在Flash CS4 AS3中使用localToGlobal

时间:2015-08-21 12:10:27

标签: actionscript-3 flash

我正在使用AS3在Flash CS4中制作一个自上而下的射击游戏。

当我射击子弹时。我已将其起始位置设置为player.x和player.y。但这就是玩家movieclip的“头”所在的位置。我希望它是从Gun所在的地方创建的。

我在Player movieclip中制作了另一个名为“NewShootingPoint”的电影剪辑,并将其定位在枪的位置。

我找不到任何适当的localToGlobal参考建议我。我知道localToGlobal将一个movieclip的本地位置转换为全球位置。但是我该怎么做?

我试过这个:(新代码)

package {

import flash.display.MovieClip;
import flash.geom.Point;
import flash.display.Stage;
import flash.events.MouseEvent;
import flash.events.Event;

public class Main extends MovieClip {

    //var myPoint : Point = new Point(340.1, 232.2);
    var player : Player = new Player;
    var origin : Gun = new Gun();
    var bullet : Bullet = new Bullet();     

    public function Main() {

        stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler);
        player.x = stage.stageWidth/2;
        player.y = stage.stageHeight/2;
        stage.addChild(player);

    }

    function onMouseDownHandler(e:Event) {

        // I want this to happen.
        bullet.x = origin.x;
        bullet.y = origin.y;
        // But it's still stuck at (0,0)
        stage.addChild(bullet);
        bullet.addEventListener(Event.ENTER_FRAME, thingy);

    }

    function thingy(e:Event) {

        bullet.x += 10;
        bullet.y += 10;

    }

}

}

是。我知道我应该上课。我稍后会这样做。 请为此提出建议!

1 个答案:

答案 0 :(得分:0)

The documentation on localToGlobal is here.

关键是理解并使用该方法来对准正确的局部坐标空间和局部坐标,文档明确说明但仍然令人困惑。

根据我的经验,虽然使用目标对象的x,y作为局部点是本能的,但通常最简单的方法是将目标对象用作点0,0的局部坐标空间。例如,在您的情况下,这将是:

var bulletOrigin:Point = player.shootingPoint.localToGlobal(new Point(0, 0));