2013-07-28 4 views
0

몬스터가 움직이고 공격하는 Enemy 클래스가 있습니다. 그 클래스 안에서 나는 enemyMagic이라는 또 다른 클래스를 가지고 있습니다. 이것은 무비 클립이며 다른 무비 클립의 마스터 클래스 역할을합니다. 적들이 특정 위치를 공격 할 때 addChild의 X 및 Y 값과 함께

는 그래서 enemyMagic 클래스에, 나는

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

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

      } 

attack1 그리고 적 클래스라는 무비 클립을 추가, 나는 enemyMagic를 추가합니다. 어떤 이유

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); 

는 enemymagic는 타일의 x와 y와 동일한 번호를 추적되지만 타일에 추가되지 않습니다. 그것은 화면 밖으로 그것을 추가합니다. 나는 그것이 적의 x와 y에서 시작해서 계산 된 것이기 때문에 그것이 가능할 것이라고 생각한다.

제 궁금한 점은 enemymagic 무비 클립을 어떻게 타일의 위치에 정확히 올릴 수 있습니까?

답변

1

두 가지 작업을 수행 할 수 있습니다. 먼저, 평범한 addChild()을 할 때, 자식의 기본 좌표계는 부모 중 하나입니다. 즉 Enemy 인스턴스입니다. 물론 0이 아닌 다른 위치에 있습니다. 그런 다음 다른 부모가있는 Main.tileset[k] 좌표를 할당합니다 (가장 가능성이 높은 인스턴스는 Main). 이것은 당신이 말하는 거리를 만듭니다. 따라서 정확한 타일 위에 마법을 찾으려면 this.globalToLocal(Main.tileset[k].localToGlobal(PZERO)) (은 new Point()으로, PZERO 대신 new Point()으로 작성하십시오. 그러나이 경우 다른 Point 빈 개체가 생성되고 빠르게 확대됩니다) 또는 addChild()을 직접 수행하십시오. 당신이 변형되지 않은 좌표로 공격하고있는 타일.

+0

답변 해 주셔서 감사합니다. 명확히하기 위해 새로운 포인트를 만들어야합니다. 특정 x와 y 값을 넣어야합니까? 또한, 나는 암시 적 강제 변환 오류를 얻었는데, 나는 그것이 마법의 x 값이 PZERO와 잘 어울리지 않는다는 것을 추측합니다. 나는 아이를 Tile 클래스 자체에 추가하는 것을 고려했지만 적과 관련된 모든 것을 적에 넣는 것이 이상적이라고 생각했습니다. 고마워요! – Bindlestick

+0

'public static const PZERO : Point = new Point(); 그러면 영점을 선언하는 방법입니다. 트릭은 타일의 영점 (디자인 타임의 앵커 포인트와 동일)은 일반적으로 타일의 왼쪽 위 또는 사각 중 하나입니다. 전자의 경우 타일의 중심과 동일하게 'PCENTER'를 선언합니다. 그리고 적을 추가하는 것에 대해 - 당신이 마법을 던지면서 적을 90도 왼쪽으로 회전시키는 것을 상상해보십시오. Bam, 당신의 마법은 더 이상 선택된 타일에 없습니다. 적 (총알, 마법, 부서진 부품 등)에서 벗어나는 순간, 적에게 addChild()하지 말고 모든 것을 보유하는 클래스에 추가하는 것이 좋습니다. – Vesper

+0

확인. 나는 적을 매 10 초마다 움직 이도록 마술이 영향을받을 것입니다. 내 최선의 방법은 타일 또는 메인 클래스에 추가하는 것입니다. – Bindlestick