上次说到类的绑定,今天写了一个用“自定义新属性方法”来实现在绑定类中访问剪辑子元件的的方法。
源码如下:
package
{
import flash.display.MovieClip;
import flash.display.SimpleButton;
import flash.events.MouseEvent;
/**
* ...
* @author DefaultUser (Tools -> Custom Arguments...)
*/
public class Main extends MovieClip
{
private var _btn_mc:SimpleButton;
private var _box_mc:MovieClip;
public function Main():void
{
initView();
_btn_mc.addEventListener(MouseEvent.CLICK, onClick);
}
private function initView():void
{
_btn_mc = getChildByName("Btn") as SimpleButton;
_box_mc = getChildByName("mc") as MovieClip;
}
public function onClick(e:MouseEvent):void
{
_box_mc.x += 10;
if (_box_mc.x > 800)
{
_box_mc.x = 0;
}
}
}
}
代码中:Btn 是舞台上的一个按钮,mc是一个方形框,实现点击按钮时,方形框自动向右移动10个像素点。
方法:在构造函数中,使用getChildByName()将子元件引用赋值给新增属性,并使用as关键字将返回的对象转为新增属性的类型。
(注:代码风格是想黑羽学习),奇怪的是我在Flash Develop中运行会出现错误:[Fault] exception, information=TypeError: Error #1009: 无法访问空对象引用的属性或方法。说的是 _btn_mc.addEventListener(MouseEvent.CLICK, onClick)的错误,但在Flash CS3中没问题。另外,把_btn_mc改为MovieClip类型在两个环境中都会出现此类错误。