さっき書いたエントリをもう少し書き換えてみる。
振る舞いは○○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;
}
}
}