2013-12-09 2 views
0

버튼 역할을하는 내 메인 .fla 스테이지에 여러 개의 무비 클립이 btn1-btn7라는 이름으로 있습니다. Functions.as라는 클래스 파일이 있는데 버튼을 클릭하면 이벤트 리스너가 만들어집니다. onButtonClicked는 타임 라인의 프레임으로 이동합니다.무비 클립의 벡터 배열 만들기 AS3

obj.addEventListener(MouseEvent.CLICK, onButtonClicked); 

나는 모든 버튼의 buttonMode, visibility 등을 동시에 설정할 수있는 기능을 원합니다. 나는 이것을 몇 시간 동안보고 있었고 어떤 해결책도 찾을 수 없었다. 지금은 벡터에 추가하는 방법을 찾고 있는데 (이것은 새로운 개념입니다), 올바르게 실행하는 방법을 모르겠습니다. 이것은 내가 지금까지 가지고있는 것이다.

public var buttons:Vector.<MovieClip > = new Vector.<MovieClip >(); 


     function addButtons() 
     { 
      buttons.push(btn1,btn2,btn3,btn4,btn5,btn6,btn7); 

      for (var i:int; i<buttons.length; i++) 
      { 
       trace(buttons[i].name); 
      } 


     } 

예를 들어 모든 개체에 이벤트 수신기를 추가하면 어떻게됩니까? buttonMode를 true로 설정하고 동시에 모두 보이지 않게 할 것입니다. 나는 이것이 가능한지 알지 못한다. 제안 사항에 대해 미리 감사드립니다.

답변

0

, 이미 스테이지에 배치 된 버튼의 인스턴스를 예를 들면 : buttonMode가의 속성을 설정하는 방법입니다.

var _mc:MovieClip;//helper var 
for(var i:int=0,i<_btns.length;i++) 
{ 
    _mc = _btns[i]; 
    _mc.visible = false; 
    _mc.buttonMode = true; 
    _mc.addEventListener(MouseEvent.CLICK, onClick); 
} 

그런 다음 이벤트 처리기 :

function onClick(e:MouseEvent):void 
{ 
    for(var i:int=0,i<_btns.length;i++)//reset all the buttons 
    { 
    _btns[i].visible = false; 
    } 

    _mc = MovieClip(e.eventTarget); 
    _mc.visible = true; //make visible the clicked one 
} 
+0

당신에게 너무 감사

var _btns:Vector.<MovieClip> = new Vector.<MovieClip>; _btns.push(btn1,btn2,btn43....) //add all the buttons 

보다, 당신은 모든 버튼의 속성을 초기화하기 수 : 그래서, 먼저 벡터를 만들 이 문제를 해결할 수 있도록 도와 주셨습니다. 이제 제대로 작동합니다. – brianh

0

예제 코드에서 .name 속성을 사용하여 수행해야 할 작업 만 수행하면됩니다. 배열 (또는 원하는 경우 벡터)의 모든 단일 단추를 반복해야합니다. 난 당신이 타임 라인 코드를 사용하는 것이 asume거야

function setButtonMode(b:Boolean):void { 
    for(var i:int=0; i<buttons.length; i++) { 
     var btn:MovieClip = buttons[i]; //store the current reference in a var for faster access 
     btn.buttonMode = b; 
     btn.mouseChildren = !b; 
    } 
} 
관련 문제