2013-12-17 3 views
0

최근 as3에서 프로그래밍을 시작했으며 최근에는 객체 지향 프로그래밍을 배우기 시작했습니다. 내 문제는 클래스 내의 함수에 액세스하는 것입니다. 나는 "main"코드가 그렇게하기에 적당하지 않다고 생각하지만, 코드의 모든 부분에 대해 조언을 구하는 것이 거의 필요합니다.actionscript 클래스 내의 타이머 액세스

홈페이지 번호 : (A 무비 클립으로 무비 클립 원에 연결된 내부 입력)

import flash.utils.Timer; 
import flash.events.TimerEvent; 

stage.addEventListener(MouseEvent.CLICK, makeCircle); 
function makeCircle(event:MouseEvent):void 
{ 
    var s = new Circle(); 
    addChild(s); 

    s.x = mouseX; 
    s.y = mouseY; 
} 

클래스 코드 :

package 
{ 

    import flash.display.MovieClip; 
    import flash.utils.Timer; 
    import flash.events.TimerEvent; 
    import flash.filters.BlurFilter; 
    import flash.geom.ColorTransform; 

    public class Circle extends MovieClip 
    { 

     private var t:Timer = new Timer(30,1000); 
     var time:Number = 0; 
     var size:Number; 
     var bf = new BlurFilter(); 
     var ct:ColorTransform = new ColorTransform(); 

     public function Circle() 
     { 

      // constructor code 
      t.addEventListener(TimerEvent.TIMER, updateCircle); 
      t.start(); 
      ct.color = 0xffffff * Math.random(); 
      fill.transform.colorTransform = ct; 

      fill.blendMode = "hardlight"; 

     } 

     public function updateCircle(event:TimerEvent):void 
     { 

      time = t.currentCount/10; 
      size = Math.pow(Math.E, - time) * Math.sin(5 * time) * (Math.log(time)); 
      width = (size * 20 + 100 - time * 5) * 2; 
      height = (size * 20 + 100 - time * 5) * 2; 
      bf.blurX = time; 
      bf.blurY = time; 

      filters = [bf]; 
      alpha = 1 - time/20; 

     } 

    } 

} 

내가하고 싶은 것은 S의 자식을 제거하는 것입니다 (주 코드) t.currentCount (클래스 코드)가 설정 값 (알파 값이 0 일 때)입니다.

미리 감사드립니다.

답변

0

원하는 작업은 타이머가 완료 될 때 (알파 == 0) 트리거되는 Circle 클래스 내부에서도 만듭니다. 커스텀 이벤트는 메인 클래스에서 잡아야 만합니다.

은 메인 클래스 쓰기에서 사용자 지정 이벤트 리스너를 넣으려면 :

s.addEventListener("RemoveChild", removeChild) 

이 원 클래스 당신이 그것을 트리거 할 때 이벤트를 추가 할 수있는 핸들러 함수

function removeChild(e:Event) 
{ 
    removeChild(s); 
} 

를 추가 :

this.dispatchEvent(new Event("RemoveChild"); 

또는 l을 입력하여 기본 클래스에서 알파 값을 제어하십시오. 그곳에 가서 removeChild (s)를 호출하십시오; 직접.

맞춤 이벤트를 쉽게 작동시키는 방법은 AS3Signals 프레임 워크를 사용하는 것입니다.

희망하는 사람