2010/06/3

[AS3]swcのやつ。もうちっといい感じにする

さっき書いたエントリをもう少し書き換えてみる。
振る舞いは○○Proxyとかいうクラスを作ってそこに書き込んでいけば、
親からは○○Proxyのメソッドを呼べるからコードヒントが出ていい感じかも。

メイン

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

	/**
	 * ...
	 * @author KinkumaDesign
	 */
	[SWF(width="400",height="300",frameRate="30",backgroundColor="0xffffff")]
	public class Main extends Sprite
	{
		public var container:Container;
		public var containerProxy:ContainerProxy;

		public function Main():void
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}

		private function init(e:Event = null):void
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);

			container = new Container();
			containerProxy = new ContainerProxy(container);
			addChild(container);
		}

	}

}

■ContainerProxy

package
{
	import flash.events.MouseEvent;
	/**
	 * ...
	 * @author KinkumaDesign
	 */
	public class ContainerProxy
	{
		public var container:Container;
		public var mybtnProxy:MyButtonProxy;

		public function ContainerProxy(container:Container)
		{
			this.container = container;
			mybtnProxy = new MyButtonProxy(container.mybtn);
			container.mybtn.addEventListener(MouseEvent.CLICK, clickHD);
		}

		private function clickHD(e:MouseEvent):void
		{
			trace("clicked!");

			//こうやればコードヒントが出せた
			mybtnProxy.move();
		}

	}

}

■MyButtonProxy

package
{
	import flash.events.MouseEvent;
	/**
	 * ...
	 * @author KinkumaDesign
	 */
	public class MyButtonProxy
	{
		public var mybtn:MyButton;

		public function MyButtonProxy(mybtn:MyButton)
		{
			this.mybtn = mybtn;
			init();
		}

		private function init():void
		{
			mybtn.buttonMode = true;
			mybtn.addEventListener(MouseEvent.ROLL_OVER, overHD);
			mybtn.addEventListener(MouseEvent.ROLL_OUT, outHD);
		}

		private function outHD(e:MouseEvent):void
		{
			mybtn.alpha = 1;
		}

		private function overHD(e:MouseEvent):void
		{
			mybtn.alpha = 0.5;
		}

		public function move():void
		{
			mybtn.y += 1;
		}
	}

}

コメントはお気軽にどうぞ!(コメントのみも受け付けてます)

ページトップへ戻る