Actionscript 3 与addChild的问题';sx和Y值

Actionscript 3 与addChild的问题';sx和Y值,actionscript-3,flash-cs5,Actionscript 3,Flash Cs5,我有一个对付怪物移动和攻击的敌人职业。在这个类中,我有另一个叫做enemyMagic的类,它是一个空白的movieclip,作为我将制作的不同movieclip的主类 所以在enemyMagic类中,我添加了一个名为attack1的movieclip public var attack1:Attack1 = new Attack1; public function EnemyMagic() { ////////////CREATE THE T

我有一个对付怪物移动和攻击的敌人职业。在这个类中,我有另一个叫做enemyMagic的类,它是一个空白的movieclip,作为我将制作的不同movieclip的主类

所以在enemyMagic类中,我添加了一个名为attack1的movieclip

public var attack1:Attack1 = new Attack1;    
       public function EnemyMagic() {
                ////////////CREATE THE TIMER//////////
                masterEnemyAttackTimer.addEventListener(TimerEvent.TIMER, mastertimer);

                ////////////ATTACKS/////////
                //TIER 1//
                addChild(attack1);

            }
在敌人类中,当敌人攻击某个位置时,我添加了敌人魔法

for (var k:int = 0; k < Main.tileset.length; k++)
            {

                if (! Main.tileset[k].tileMiddle.hitTestObject(this.enemyVisionPoint))
                {
                    if (Main.tileset[k].tileHP !== 0)
                    {
                        attackoptions.push(Main.tileset[k]);
                    }
                    if (Main.tileset[k].tileMiddle.hitTestObject(Main.player.visionPoint))
                    {
                        addChild(enemymagic);
                        Main.tileset[k].outline.gotoAndStop("attack");
                        this.enemymagic.x = (Main.tileset[k].x);
                        this.enemymagic.y = (Main.tileset[k].y);
                        trace(enemymagic.x, enemymagic.y, Main.tileset[k].x, Main.tileset[k].y); 
for(变量k:int=0;k
出于某种原因,enemymagic追踪的数字与磁贴的x和y完全相同,但它没有将其添加到磁贴上。它将其添加到屏幕之外。我认为可能是因为它从敌人的x和y开始,然后计算


所以我的问题是,如何才能让enemymagic电影剪辑准确地显示在磁贴的位置上?

您可以做两件事。首先,当您执行普通的
addChild()时
子对象的基本坐标系是其父对象的坐标系,它是您的
敌人
实例,当然它位于非零的某个位置。然后您将
Main.tileset[k]
的坐标分配给它,该坐标系具有不同的父对象(很可能是
Main
的实例)。这会创建您所说的距离。因此,为了在确切的磁贴上找到您的魔力,可以使用
This.globaltocol(Main.tileset[k].localToGlobal(PZERO))
其中
PZERO
是一个
new Point()
常量(或write
new Point())
而不是
PZERO
,但这将创建另一个空的
对象并将快速升级),或者执行
addChild()<代码>直接到瓦片,你用不变的坐标进行攻击。

谢谢你的回答。为了澄清,我必须创建一个新的点。我应该放一个特定的x和y值吗?同样,我得到一个隐含的强制错误,我猜想这意味着魔法的x值与p0不好。我确实考虑添加C。hild对Tile类本身很感兴趣,但我认为理想的做法是将所有与敌人相关的东西都放在敌人身上。谢谢伙计!
public static const PZERO:Point=new Point();
这就是声明零点的方式。诀窍是,你的Tile的零点(在设计时等于锚定点)通常是磁贴的左上角或死点。如果是前者,则声明
PCENTER
等于磁贴的中心。关于添加到敌人-想象你投掷一个魔法,然后将敌人向左旋转90度。砰,你的魔法不再位于所选磁贴上。一旦有任何东西从敌人身上分离,你的魔法就会消失(子弹、魔法、破碎的部分等),最好不要
addChild()
将它们添加到敌人,而是添加到一个包含所有元素的类中。好的。我确实让敌人每10秒移动一次,所以魔法会受到影响。我的最佳选择是将其添加到平铺上,甚至主类上?