2012-06-09 7 views
0
public class GameEnter extends MovieClip 
{ 


    public function GameEnter() 
    { 
    addEventListener(MouseEvent.MOUSE_DOWN, shootBullet); 
    } 
    public var _bullet1:bullet = new bullet; 
    public var angleRadian = Math.atan2(mouseY - 300,mouseX - 300); 
    public var angleDegree = angleRadian * 180/Math.PI; 


    public function shootBullet(evt:MouseEvent) 
    { 
     _bullet1.x = 300; 
     _bullet1.y = 300; 
     _bullet1.angleRadian = Math.atan2(mouseY - 300,mouseX -300); 
     _bullet1.addEventListener(Event.ENTER_FRAME, bulletEnterFrame); 
     addChild(_bullet1); 
    } 


    public var speed1:int = 10; 
    public function bulletEnterFrame(evt:Event) 
    { 
     _bullet1.x += Math.cos(_bullet1.angleRadian) * speed1; 
     _bullet1.y += Math.sin(_bullet1.angleRadian) * speed1; 
     _bullet1.rotation = _bullet1.angleRadian*180/Math.PI; 
     checkHit(); 
     if (_bullet1.x < 0 || _bullet1.x > 600 || _bullet1.y < 0 || _bullet1.y > 600) 
     { 
      removeChild(_bullet1); 
      _bullet1.removeEventListener(Event.ENTER_FRAME, bulletEnterFrame); 
     } 
    } 



public function checkHit() 
{ 
    if(_bullet.hitTestObject(enemy)) 
    { 
      trace("Enemy hit"); 
    } 
} 

} 

} 는 본질적으로 무슨 일이 약 10 배 "를 적 명중"출력합니다입니다. 나는 궁금합니다. 어떻게 "적의 적중"을 한 번 추적 할 수 있을까요? 문제는 모든 프레임에 대해 총알이 적에 있다는 것인데, 그것을 인쇄한다는 것입니다. 단 한 번만 인쇄하도록 수정하는 방법은 무엇입니까?hitTestObject가 두 번 이상 출력합니까?

결국 "trace ("Enemy hit ");" 기능 또는 무엇인가.

답변

0

모든 프레임에서 checkHit()이 호출되고 총알은 게임 영역 밖에있을 때만 제거됩니까? 이것은 "적중"이 checkHit()이 true 인 모든 프레임을 추적한다는 것을 의미합니다. 히트가 발생하면 총알이 화면에서 사라지는 것과 마찬가지로 이벤트 리스너를 제거해야합니다.

관련 문제