callbackのスコープテスト

by littlepad
♥0 | Line 49 | Modified 2012-09-12 06:02:00 | MIT License
play

ActionScript3 source code

/**
 * Copyright littlepad ( http://wonderfl.net/user/littlepad )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/nMAO
 */

package {
    import flash.text.TextField;
    import flash.display.Sprite;
    
    public class FlashTest extends Sprite {
        
        private var _tf:TextField;
        
        public function FlashTest() {
            init();
        }
        
        private function init():void
        {
            setTextField();
            
            var h:Hoge = new Hoge();
            var callback:Function = function():void{
                dispatchEvent(new HogeEvent(HogeEvent.HOGE_COMPLETE));
            }
            this.addEventListener(HogeEvent.HOGE_COMPLETE, hogeEventHandler);
            h.addEventListener(HogeEvent.HOGE_COMPLETE, hogeEventHandler);
            h.test(callback);
        }
        
        private function hogeEventHandler(event:HogeEvent):void
        {
            _tf.appendText(String(event.target));
        }
        
        private function setTextField():void
        {
            _tf = new TextField();
            _tf.width = _tf.height = 400;
            addChild(_tf);
        }
    }
}

import flash.events.EventDispatcher;
import flash.events.Event;
import flash.text.TextField;

class Hoge extends EventDispatcher
{
    public function test(callback:Function):void
    {
        callback();
    }
}

class HogeEvent extends Event
{
    public static const HOGE_COMPLETE:String = "hogeComplete";
    
    public function HogeEvent(type:String, bubbles:Boolean = false, cancelable:Boolean = false)
    {
        super(type, bubbles, cancelable);
    }
}