Actionscript 3 as3-如何访问子&x27;谁的孩子?

Actionscript 3 as3-如何访问子&x27;谁的孩子?,actionscript-3,Actionscript 3,我在页面上发送了一个项目符号生成事件。但是,项目符号应位于页面子项所在的区域。有一个第一页MovieClip,其中有一个名为player的子项,该子项是gun。所以我试着保持子弹的位置和旋转方向与玩家的枪相同。所以我需要访问页面一的孩子的孩子。玩家和炮塔使用的是实例名,而不是变量 我试过这个代码,但是子弹会在页面中生成,但不会在炮塔的位置上生成。此事件位于PageOne类中 function fire(e:Event) { var b:Bullet = new Bullet();

我在页面上发送了一个项目符号生成事件。但是,项目符号应位于页面子项所在的区域。有一个第一页
MovieClip
,其中有一个名为player的子项,该子项是gun。所以我试着保持子弹的位置和旋转方向与玩家的枪相同。所以我需要访问页面一的孩子的孩子。玩家和炮塔使用的是实例名,而不是变量

我试过这个代码,但是子弹会在页面中生成,但不会在炮塔的位置上生成。此事件位于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);
}

您可以访问转塔子级。问题是您需要将转台
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);

我不知道我是否了解你。但你的问题是子弹不是在炮塔口的位置产生的?是的,因为我似乎无法访问玩家。炮塔的位置是因为它不允许我以某种方式访问孩子的孩子。你可以访问玩家内的任何实例孩子
MovieClip
。你有什么错误吗?请记住,如果您使用不同的作用域,则需要翻译坐标。然后,您可以访问该子对象。错误的位置是由于坐标转换造成的。请看我的答案。对不起,我按照你的步骤做了,但它似乎仍然不起作用。我不确定到底是什么问题。。。子弹似乎在错误的方向上繁殖,也没有在炮塔的炮口上繁殖。发布一点代码来查看问题。如果炮塔旋转,你需要转换炮塔内部的坐标。是的,这就是原因,你需要转换炮塔内部的坐标。另一方面,您需要通过
scaleX
player属性更改角度导向。见版本。