as3 - 如何访问孩子的孩子?

时间:2015-12-28 11:40:49

标签: actionscript-3

我发送一个子弹事件在页面上产生。然而,子弹应位于页面的子女应该在的区域。有一个Page One MovieClip,其中有一个名为播放器的孩子,而玩家的孩子是。所以我试图保持子弹的位置和旋转与玩家的枪相同。所以我需要访问Page One的孩子的孩子。玩家和炮塔使用的是实例名称,而不是变量。

我试过这段代码,但是子弹在页面中产生,但不会在炮塔的位置上产生自己。此事件位于PageOne类中。

function fire(e:Event)
{
    var b:Bullet = new Bullet();
    b.rotation = player.turret.rotation;
    b.x = player.turret.x + player.turret.width * Math.cos(player.turret.rotation / 180 * Math.PI);
    b.y = player.turret.y + player.turret.width * Math.sin(player.turret.rotation / 180 * Math.PI);
    addChild(b);
}

1 个答案:

答案 0 :(得分:0)

您可以访问炮塔儿童。问题是您需要将炮塔MovieClip内的坐标转换为PageOne MovieClip内的坐标:

var b: Bullet = new Bullet();

var turretpoint:Point = new Point(player.turret.width, 0);
var pagepoint: Point = this.globalToLocal(player.turret.localToGlobal(turretpoint));

b.rotation = (player.scaleX > 0) ? player.turret.rotation : 180 - player.turret.rotation;
b.x = pagepoint.x;
b.y = pagepoint.y;
addChild(b);