2017-09-20 10 views
1

메인 타임 라인의 프레임으로 연결되는 버튼을 만드는 방법을 묻는 질문을 많이 보았습니다. 그러나 특정 프레임 세트에서 임의의 프레임으로 이동하려면 다른가? 나는 AS3를 stop()과 같은 간단한 것들을 제외하고 사용하지 않았다. 또는 gotoAndPlay. I가 그것을 사용할 때기본 타임 라인의 임의의 프레임 (배열에서)으로 이동하는 버튼 만들기. 무비 클립으로하는 방법?

var frameB:Array=[1,28,45,56,71,91,106,126]; 
blue_circle1.addEventListener(MouseEvent.CLICK, choose); 

function choose1(event:MouseEvent):void { 
    var randomFrame:Number = frameB[Math.floor(Math.random() * frameB.length)]; 
    trace(randomFrame); 
    gotoAndPlay(randomFrame); 
} 

코드는 잘 작동 : 여기 Figure 1

내가 구글을 사용하여 지금까지있어 코드입니다 :

은 여기 내 기본 타임 라인이 순간의 모습입니다 메인 타임 라인의 회전 버튼. 그러나 무비 클립의 버튼에 넣으면 작동하지 않습니다. 작동하도록 변경해야합니다. 이 작업을 수행하는 더 좋은 방법이 있다면 시도해 볼 의향이 있습니다.

편집 : 나는 더 많은 것을 명확히해야합니다. 왼쪽에서 오른쪽으로 움직이는 휠에 직사각형이 있습니다. 이것은 무비 클립에서이를 수행합니다. 버튼이 함께 움직 이길 바래요. 그러나 버튼을 동영상 클립에 넣으면 버튼의 코드가 작동을 멈 춥니 다. 나는 물건을 더 혼란스럽게 만들지 않았 으면 좋겠다.

답변

1

버튼이나 코드를 무비 클립 내에 배치하면 gotoAndPlay()가 참조하는 무비 클립이 변경됩니다. gotoAndPlay()를 호출하는 무비 클립을 지정해야합니다.

parent.gotoAndPlay(randomFrame); 

또는이 같은 무비 클립에 부모의 유형을 설정해야 할 수도 있습니다 : 사항 gotoAndPlay()가 작동하는 기본 타임 라인의 경우,하지만 동영상 클립 안에 당신이 사용해야하지만

MovieClip(parent).gotoAndPlay(randomFrame); 

, 그것은 최선의 외부 .as 파일을 사용하면 코드를 최대한 제어 할 수 있습니다.

  • 저장라는 파일에 아래의 코드 'MyFlashAnimation.as'
  • 'mycodefolder'라는 폴더를 만들고 FLA에 같은 디렉토리/폴더에 넣어.
  • 'MyFlashAnimation.as'를 문서 클래스로 사용하십시오. 플래시/애니메이션 IDE에서 속성 패널을 찾아, 그 입력은 '클래스'라는 게시 섹션에서 섹션
  • 게시 : mycodefolder.MyFlashAnimation (.as 인을 추가하지 마십시오)

CODE :

package mycodefolder { 

    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 

    public class MyFlashAnimation { 

     private var animationClip:MovieClip; 
     private var blueCircle1:Button; 

     private var frameB:Array = [1,28,45,56,71,91,106,126]; 

     // constructor 
     public function MyFlashAnimation() { 

      // this your main robot/car animation 
      // this assumes animation_clip is on the main stage 
      animationClip = this.animation_clip; 

      // this is your button. this assumes blue_circle1 is a child of 
      // your animation_clip. update the path if necessary. 
      // for example, it might be: animationClip.robot_body.blue_circle1 
      blueCircle1 = animationClip.blue_circle1; 

      // add listener 
      blue_circle1.addEventListener(MouseEvent.CLICK, choose); 
     } 

     function choose1(event:MouseEvent):void { 
      var randomFrame:Number = frameB[Math.floor(Math.random() * frameB.length)]; 
      trace(randomFrame); 

      // tell animation clip to gotoAndPlay 
      animationClip.gotoAndPlay(randomFrame); 
     } 

    } 
} 

그래야합니다. 모든 무비 클립 경로가 올바른 경우.

0

"나는 기본 타임 라인에서 회전 버튼을 사용하면 코드는 잘 작동합니다.하지만이 무비 클립에서 버튼에 넣을 때 작동하지 않습니다."

버튼을 붙여 넣는 MClip의 인스턴스 이름은 무엇입니까? 해당 MC 이름은 버튼의 마지막 경로에 "추가"됩니다.

예 :

(1) blue_circle1 무대에서 (이미이 작업을 수행 할 수 있습니다) 경우

blue_circle1.addEventListener(MouseEvent.CLICK, choose); 

...

2) blue_circle1하는 경우 다른 MClip 안에 있습니다 (예 : thingMC) :

thingMC.blue_circle1.addEventListener(MouseEvent.CLICK, choose);