加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:30:28 所属栏目:百科 来源:网络整理
导读:我们编译一个ActionScript3类(Class)成为swf,如果想让该swf能够被FlashPlayer直接启动执行,那么该类必须继承自Sprite或MovieClip。 为什么? FlashPlayer是swf文件的运行环境,解释器。它规定了启动类必须继承自Sprite或MovieClip。 ? FlashPlayer执行某

我们编译一个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

[plain]? view plain copy
  1. package??
  2. {??
  3. ????import?flash.display.Shape;???
  4. ??????
  5. ????public?class?startClass?extends?Shape??
  6. ????{??
  7. ????????public?function?startClass()??
  8. ????????{??
  9. ????????????//画个圆圈??
  10. ????????????this.graphics.clear();??
  11. ????????????this.graphics.beginFill(0x999999);??
  12. ????????????this.graphics.drawCircle(100,100,100);??
  13. ????????}??
  14. ????}??
  15. } ?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读