2013-08-18 1 views
0

J'ai un ennemi qui ajoute un clip d'attaque. Plus précisément, ce clip d'attaque (que nous appellerons masterAttack) est un clip vierge qui agit comme une super classe, qui tiendra d'autres attaques comme une attaque faible et forte. Donc, quand mon ennemi attaque en utilisant une minuterie, il ajoute le masterAttack sur un point global à local.globaltoLocal dans addchild

est inférieure à la minuterie ennemi attaque une tuile le joueur est sur:

if (Main.tileset[k].tileMiddle.hitTestObject(Main.player.visionPoint)) 
{ 
     this.addChild(masterAttack); 
     var pt:Point = this.enemymagic.globalToLocal(new Point(Main.tileset[k].x, Main.tileset[k].y)); 
     masterAttack.masterEnemyAttackTimer.start(); 

     this.masterAttack.x = (pt.x); 
     this.masterAttack.y = (pt.y); 
} 

Et Voici la minuterie masterAttack:

function mastertimer(event:TimerEvent) { 
        addChild(sludgeball); //This is one of the many attacks pickable by the masterAttack 
           sludgeball.enemyattackTimer.start(); 
           if (this.sludgeball.currentLabel == "End") { 
             this.sludgeball.gotoAndPlay(1); 
             masterEnemyAttackTimer.stop(); 

           if (masterEnemyAttackTimer.running == false) 
           { 
             attackStop = true; 
             this.parent.removeChild(this); 
             removeChild(sludgeball); 
           } 
        } 

Mon problème est, dans la première manche, le masterAttack sera attaquer le joueur où que ce soit, puis retirer lui-même, ce qui est bon. Ensuite, la prochaine fois que cela se passe, le masterAttack ne frappe pas le joueur. C'est comme si globaltoLocal ne fonctionnait pas après la première exécution.

Répondre

0
this.addChild(masterAttack); 

var pt:Point = this.enemymagic.globalToLocal(new Point(Main.tileset[k].x, Main.tileset[k].y)); 

Vous ajoutez le masterAttack à cela, mais vous avez obtenu en utilisant pt globalToLocal

changer donc la ligne comme celui-ci

var pt:Point = this.globalToLocal(new Point(Main.tileset[k].x, Main.tileset[k].y)); 
+0

Oops désolé de enemymagic. Je l'ai changé pour masterAttack juste pour un exemple. Le premier code, qui se trouve dans l'ennemi, est exécuté via une minuterie. – Bindlestick

+0

J'ai éditer la réponse – Pan

+0

Donc je supprime l'enemymagic/masterAttack du pt var. Je vais essayer. Merci. – Bindlestick