2009-05-04 3 views
0

필자는 Sprite 안에 TextField를 가지고 있으며 항상 TextField의 알파를 스프라이트의 알파와 같게하려고합니다. 스프라이트의 변경 사항을 어떻게 구독 할 수 있습니까? PropertyExchange 이벤트를 발생시켜야하지만, 스프라이트가이 기능을 지원하는지 확인할 수 없습니까?AS3 : 클래스를 변경 한 경우 어떻게 이벤트를 실행할 수 있습니까?

class TextWidget extends Sprite{ 
    private var textfield:TextField;  
    public function TextWidget(){ 
    textfield = new TextField(); 
    textfield.alpha = this.alpha; //does'n help 
    addChild(textField); 
?? 
    this.addEventListener(PropertyChangeEvent.PROPERTY_CHANGE, updateAlpha); 
?? 
    } 
    private function updateAlpha(event:PropertychangeEvent):void{ 
    textfield.alpha = this.alpha; 
    } 
} 
+0

코드를 게시 할 때 그것을 잘 색상 화 포맷하고되도록 우리가 읽고, 그것은 훨씬 쉽게, 각 라인 4 공백을 들여하시기 바랍니다 :) –

+0

오타 : textfeild.alpha를 – moritzstefaner

답변

6

한 가지 방법은 단순히 텍스트 필드의 알파를 설정하는 것입니다 alpha 속성

/** 
* ... 
* @author Andrew Rea 
*/ 
public class CustomSprite extends Sprite 
{ 

    public static const ALPHA_CHANGED:String = "ALPHA_CHANGED"; 

    public function CustomSprite() 
    { 

    } 

    override public function get alpha():Number { return super.alpha; } 

    override public function set alpha(value:Number):void 
    { 
     super.alpha = value; 

     dispatchEvent(new Event(CustomSprite.ALPHA_CHANGED)); 
    } 
} 

에게 또 다른 방법은 스프라이트의 파생 클래스를 생성하고 무시하는 것 위의 그림과 같이 이벤트가 발생하지 않습니다.

앤드류

1

빠른 수정 알파 세터를 무시하고뿐만 아니라 텍스트 필드에 대한 전달 된 값을 사용하는 것입니다. 부모 스프라이트의 알파 세터 때마다

public override function set alpha(value:Number):void { 
    super.alpha = value; 
    textField.alpha = value; 
}