delegate

by littlepad
delegateってこうゆうことでいいんだろうか?
♥0 | Line 53 | Modified 2012-02-11 01:45:40 | 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/vesM
 */

package {
    import flash.events.Event;
    import flash.display.Sprite;
    
    // -------------------------------------------------
    //
    //   Main
    //
    // -------------------------------------------------
    public class FlashTest extends Sprite 
    {
        public function FlashTest() 
        {
            this.addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(event:Event):void 
        {
            var circle:Circle = new Circle();
            addChild(circle);
        }
    }
}


import flash.events.Event;
import flash.events.MouseEvent;
import flash.display.Graphics;
import flash.display.Sprite;

// -------------------------------------------------
//
//   円の描画
//
// -------------------------------------------------
class Circle extends Sprite
{
    public function Circle() 
    {
        addEventListener(Event.ADDED_TO_STAGE, init);
    }
    
    private function init(event:Event):void
    {
        x = stage.stageWidth / 2;
        y = stage.stageWidth / 2;
        this.buttonMode = true;
        this.graphics.beginFill(0x000000);
        this.graphics.drawCircle(0, 0, 150);
        this.graphics.endFill();
        
        // 色変更の機能をClickDelegateに委譲
        var delegate:ClickDelegate = new ClickDelegate(this);
    }
}

// -------------------------------------------------
//
//   色の変更
//
// -------------------------------------------------
class ClickDelegate extends Sprite
{
    private var _target:Circle;
    
    public function ClickDelegate(target:Circle)
    {
        _target = target;
        _target.addEventListener(MouseEvent.CLICK, clickHandler);
    }
    
    public function clickHandler(event:MouseEvent):void
    {
        _target.graphics.clear();
        _target.graphics.beginFill(0xFFFFFF * Math.random());
        _target.graphics.drawCircle(0, 0, 150);
        _target.graphics.endFill();
    }
}