2017-04-07 2 views
2

그래서 일주일 동안이 게임을하고 있었고 코딩 배경이 전혀 없으므로 여기저기서 튜토리얼을 찾으려고합니다. 그런 다음이 문제가 떠오릅니다. ..AS3 운동 대상 개체 특정 프레임에

그래서 내가 무엇을하고 싶은지 (CHARA, 중첩 된 movieClip이 99 프레임 btw 인) 프레임 80을 맞았을 때 오른쪽으로 객체 (CHARA)를 움직여야합니다. 그러면 원래 위치로 되돌립니다. 프레임 99 ... 문제는 내가하는 일은 내 객체 이동을 전혀하지 않는다는 것입니다 (movieClip은 여전히 ​​btw를 재생했습니다). 내가 뭘 잘못 했나요? 코드를 잘못된 위치에 넣었습니까? 여기

내 코드입니다, 죄송합니다 내가 그 혼란의 내 첫 번째 코드를 알고 (내가 x가 직접 프레임 (80)하지만 난 여기에 클래스를 사용하려고 내부 = 코드를 넣을 경우 CHAR 만 이동) 내가

package { 

    public class Main extends MovieClip { 

     public var CHARA:CHAR = new CHAR;//my main char 
     public var rasen:Rasen_button = new Rasen_button;//the skill button 
     public var NPCS:NPC = new NPC;// the npc 

     public function Main() { 
      var ally:Array = [265,296];//where me and my ally should be 
      var jutsu:Array = [330,180];// where the buttons should be 
      var enemy:Array = [450,294];//where the enemies should be 

      addChild(NPCS); 
      NPCS.x = enemy[0]; 
      NPCS.y = enemy[1]; 
      NPCS.scaleX *= -1; 

      addChild(rasen); 
      rasen.x = jutsu[1]; 
      rasen.y = jutsu[0]; 

      addChild(CHARA); 
      CHARA.x = ally[0]; 
      CHARA.y = ally[1]; 
      rasen.addEventListener(MouseEvent.CLICK, f2_MouseOverHandler); 
      function f2_MouseOverHandler(event:MouseEvent):void { 
       CHARA.gotoAndPlay(46); //here is the problem 
       if (CHARA.frame == 80) 
       { 
        CHARA.x = ally[1]; //just random possition for now 
       } 

      } 
     } 
    } 
} 
여기에 최선을 다할

제안 사항이 있으십니까?

답변

3

귀하의 if 문은 클릭 핸들러 (f2_MouseOverHandler) 내부에, 그래서 사용자가 재생 프레임 80에 도달 반드시 때, rasen 클릭 할 때 만 실행됩니다. 이것은 타이밍 및 코드 실행과 관련된 일반적인 초보자 실수입니다. 가장 곧장 앞으로 솔루션은 ENTER_FRAME 처리기를 사용하여 모든 프레임을 실행하는 몇 가지 코드를 작성하는 것입니다 : 여전히 움직이지

 rasen.addEventListener(MouseEvent.CLICK, f2_MouseOverHandler); 
     function f2_MouseOverHandler(event:MouseEvent):void { 
      CHARA.gotoAndPlay(46); //here is the problem 

      // add an ENTER_FRAME handler to check every frame 
      CHARA.addEventListener(Event.ENTER_FRAME, chara_EnterFrameHandler) 
     } 
     function chara_EnterFrameHandler(event:Event):void { 
      if (CHARA.currentFrame == 80) 
      { 
       CHARA.x = ally[1]; //just random possition for now 

       // remove the ENTER_FRAME after the condition is met 
       // so it stops executing each frame 
       CHARA.removeEventListener(Event.ENTER_FRAME, chara_EnterFrameHandler); 
      } 
     } 
+0

을 ... 내가 2 단계로 99 개 프레임을 영화 클립에 중첩이 내 CHARA 객체에 .so를 설명하자 iddle (1-42) and jutsu (43-99) 내가 버튼을 클릭했을 때 rasen 나는 프레임 80에서 내 char가 적의 정면으로 움직여야하고 프레임 99에 충돌 한 후 그 자리로 돌아 가야하는 jutsu를하고 싶다. 내 코드는 jutsu 애니메이션을 재생하게하지만 객체는 원래 위치에 있습니다. –

+0

만약 내가 (CHAR.frame == 1) {trace ("aadd")} 작동하지만 if 1을 다른 것으로 바꾸면 if not는 문제가 내 코드가 듣지 않는다고 생각할 때 쓰려고 할 때 내 목표물 프레임으로. 그 대신에 그것은 주요 무대를 듣는다. 그것은 단지 1 프레임이다. 그래서 어떻게 무대 프레임 대신 대상 프레임을 사용 했습니까 ?? thanks btw –

+0

따라하기가 어렵습니다. 내가 말할 수있는 것은 코드에서 객체를 움직이면 (예 :'Char.x ='그 객체에 대한 타임 라인 애니메이션은 더 이상 작동하지 않을 것입니다.) 하나만 다른 것을 할 수 있습니다 .. – Aaron