2013-05-14 2 views
0

이 문제에 대한 답을 찾을 수 없습니다. 내가 해결하려면 다음을 얻을 수 없습니다동일한 클래스의 다른 기능으로 MoviClip을 추가 했습니까?

public class Callbattle extends MovieClip 
    { 
import flash.display.MovieClip; 
import flash.display.Stage; 
import flash.display.InteractiveObject; 
import flash.events.MouseEvent; 
import global.Globalvar; 

    public var battlegraphics:Array = new Array(); 
    public function Battle() 
    { 



     var battlewindow:MovieClip = new Battlewindow() as MovieClip; 
     battlegraphics.push(addChild(battlewindow)); 
     battlewindow.x = 4; 
     battlewindow.y = 248; 

     var attackbutton:MovieClip = new Battlebutton() as MovieClip; 
     battlegraphics.push(addChild(attackbutton)); 
     attackbutton.x = 192; 
     attackbutton.y = 255; 

     attackbutton.addEventListener(MouseEvent.CLICK, Attackclicked); 


    } 

    public function Attackclicked(event:MouseEvent):void{ 
     battlegraphics[attackbutton].y = 248; 
    } 

}

내가 오류

납니다

battlegraphics [attackbutton] .Y = 248; 나도 같은 결과를 다음과 같이 그 일을했다 배열에 영화 클립을 추가하는이 방법을 시도하기 전에

:

public class Callbattle extends MovieClip 
     { 
    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.display.InteractiveObject; 
    import flash.events.MouseEvent; 
    import global.Globalvar; 
public function Battle() 
     { 



      var battlewindow:MovieClip = new Battlewindow() as MovieClip; 
      this.addChild(battlewindow); 
      battlewindow.x = 4; 
      battlewindow.y = 248; 

      var attackbutton:MovieClip = new Battlebutton() as MovieClip; 
      this.addChild(attackbutton); 
      attackbutton.x = 192; 
      attackbutton.y = 255; 

      attackbutton.addEventListener(MouseEvent.CLICK, Attackclicked); 

      while (Globalvar.battle == true){ 

       if (hero1turn == true){ 

       } 
      } 
     } 

     public function Attackclicked(event:MouseEvent):void{ 
      attackbutton.y = 248; 
     } 
    } 

나는 기본적으로 그냥 다른 함수에서 무비 클립에 액세스 할 수 있어야합니다.

덕분에 사람을 힙을, 어떤 도움 마가 복음

답변

1

당신이 배열의 내용을 참조하는 경우, 트릭, 당신은 유형 int의 인덱스를 사용한다, 또는 유형 String의 경우에, 동안 놀라운 것이다 당신의 attackbutton은 해당 함수에서 정의되지 않았습니다. 해결책은 아주 간단합니다 : Battle() 기능의 attackbutton 외부를 선언하고 attackButton을 시작에서 var를 제거합니다.

public class Battle extends MovieClip { 
    private var attackbutton:MovieClip; 
    private var battlewindow:MovieClip; 
    public function Battle() { 
     attackbutton=new Battlebutton(); 
     battlewindow=new Battlewindow(); 
     ... 
    } 
    public function attackClicked(event:MouseEvent):void { 
     attackbutton.y=248; // this is now valid 
    } 
} 
+0

매우 훌륭하게 작동했습니다. 지금도 이해합니다. 도움을 주셔서 대단히 감사합니다. –

1

battlegraphics [ attackbutton ] .Y = 248;

배열은 사용자가 지정한 변수 이름 번호와하지를해야한다. 그래서 것이다

battlegraphics [1] .Y = 248;

관련 문제