[Actionscript] addEventListener 이벤트를 통하여 변수를 넘겨주기

Development ETC

[Actionscript] addEventListener 이벤트를 통하여 변수를 넘겨주기

addEventListener는 이벤트를 통하여 함수를 실행시킨다. 하지만 보통 방법으로는 변수를 추가로 전달시킬수는 없다.

예제의 전체코드

package {
  import flash.display.Sprite;
  import flash.events.Event;
  import flash.events.MouseEvent;

  public class AddEventListenerToValueSample extends Sprite {
    private var _targetObject:Sprite = new Sprite();

    public function AddEventListenerToValueSample() {
      _targetObject.graphics.beginFill(0xFF0000);
      _targetObject.graphics.drawRect(30,30,130,70);
      _targetObject.buttonMode = true;
      addChild(_targetObject);

      var _txt:String= "text";

      _targetObject.addEventListener(MouseEvent.CLICK, onClickHandler(_txt));
    }

    private function onClickHandler(str:*):Function {
      function func(e:MouseEvent) {
        trace(str);
      }
      return func;
    }
  }
}

예제의 부분코드

이벤트 핸들러 함수

private function onClickHandler(str:*):Function
{
    function func(e:MouseEvent)
    {
        trace(str);
    }
    return func;
}

이벤트 실행 _targetObject.addEventListener(MouseEvent.CLICK, onClickHandler(_txt));

참고로 핸들러 함수에서 이벤트를 발생시킨 객체를 선택하려면 e.target으로 접근할 수 있다.