为什么可以被FlashPlayer启动的类必须继承自Sprite或MovieClip?

 

我们编译一个ActionScript3类(Class)成为swf,如果想让该swf能够被FlashPlayer直接启动执行,那么该类必须继承自Sprite或MovieClip。

为什么?

FlashPlayer是swf文件的运行环境,解释器。它规定了启动类必须继承自Sprite或MovieClip。

 

FlashPlayer执行某个swf的时候,首先动态创建舞台(Stage),然后找到启动类,实例化它,并将它作为显示列表的成员,结构上被加到Stage下方。

这说明:启动类必须是个显示类(DisplayObject)。

 

swf程序有很多显示对象要展现,通常这些显示对象要加入到显示列表中,结构上被加到启动类对象的下面。

于是启动类必须是个容器才行。

 

只要符合上面两个特点,那么就能够作为启动类。

我们知道,ActionScript3的显示类的继承关系图中,Sprite是最“原始”的容器类,没有时间轴的概念,只有一帧;而MovieClip派生自Sprite,有时间轴,可以有多帧。

其他一切容器类皆根据用途派生自它们其中一个。

它们是符合启动类要求的最基本的类。

于是乎。。。

 

我们可以通过实验验证这一点:

======================================================================================

通过FlashBuilder创建ActionScript项目:startClass。

编译下面程序,得到startClass.swf,鼠标双击运行,你会看到一个灰色的圆,说明该程序被启动了。

如果你将startClass的基类改成Sprite或MovieClip之外的显示类(比如Shape),运行就会报错:TypeError: Error #2023: 类 startClass$ 必须继承 Sprite 才能链接到根。

 

startClass.as

package
{
	import flash.display.Shape;	
	
	public class startClass extends Shape
	{
		public function startClass()
		{
			//画个圆圈
			this.graphics.clear();
			this.graphics.beginFill(0x999999);
			this.graphics.drawCircle(100,100,100);
		}
	}
}




 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值