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

控制载入的外部影片

在学习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异常