《ActionScript 3.0 Cookbook》读书笔记6.3-控制载入的外部影片

  • 本站文章除注明转载外,均为本站原创或者翻译。
  • 本站文章欢迎各种形式的转载,但请18岁以上的转载者注明文章出处,尊重我的劳动,也尊重你的智商;
  • 本站部分原创和翻译文章提供markdown格式源码,欢迎使用文章源码进行转载;
  • 本博客采用 WPCMD 维护;
  • 本文标题:《ActionScript 3.0 Cookbook》读书笔记6.3-控制载入的外部影片
  • 本文链接:http://zengrong.net/post/305.htm


控制载入的外部影片

在学习Recipe 6.7. Loading and Interacting with External Movies 一节时发现问题,如果按照书中所讲,在Event.INIT事件时就可以使用_loader.content来引用载入的影片了。但是,我在运行的时候却发生了这样的错误:

TypeError: Error #1009: 无法访问空对象引用的属性或方法。
at LoadExternalMovie/::onMovieInit()

这也就意味着,在INIT事件发生的时候,_loader.content并没有初始化成功。本以为是书中的代码有错,就使用了Timer类来进行延迟处理,1秒钟之后再调用_loader.content与影片进行交互。虽然是成功了,但总感觉有些不对,书中的代码应该不会有错。后来仔细检查才发现,在注册事件的时候,我误将_loader.contentLoaderInfo写成了_loader.loaderInfo。前者来自Loader类,而后者继承自DisplayObject类。虽然后者也会触发INIT事件,却与被载入的影片无关,自然,当INIT发生的时候,_loader.content是没有准备好的,出错也是理所当然了。

除了这点,还有三点需要注意的:

  1. 本节中所讲的控制载入影片的方法仅适用与ActionScript3编写的swf
  2. 要调用外部载入的影片的方法,需要将_loader.content保存在类型生命为*的实例中,否则会出现运行时错误。
    我感觉这就好像在ActionScript2中将不确定类型的值设置为Object类型以规避编译器的类型检验。只不过ActionScript2时是在规避编译错误,而这是规避运行时的错误罢了。
  3. 在试图调用外部影片中本来不存在的方法或属性时,会抛出ReferenceError异常