delegate
delegateってこうゆうことでいいんだろうか?
♥0 |
Line 53 |
Modified 2012-02-11 01:45:40 |
MIT License
archived:2017-03-09 18:01:17
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();
}
}