暑期AS3讲座第5讲 图片、Swf的加载

      Flash学习笔记 2008-7-17 11:45

 在侦听结构的基础上来看加载,代码还是比较容易接受的。

载入外部内容需要三个步骤:
创建 Loader  类实例
把 Loader 实例加到显示列表里
调用 load() 方法载入外部内容

需要了解的事件有:

open  当资源开始下载时触发
progress  资源在下载中时触发
complete  当资源下载完成时触发
init  当载入外部的 初始化时触发

下面的代码演示了一个文本框进度条的使用和加载。

package {
 import flash.display.*;
 import flash.text.*;
 import flash.net.URLRequest;
 import flash.events.*;

 public class LoaderExample extends MovieClip {
  var _loaderStatus:TextField;

  public function LoaderExample(s:String = "d2.jpg") {
   // 1. Create an instance of the Loader class
   var loader:Loader=new Loader;
   // 2. Add the Loader instance to the display list
   addChild(loader);
   // Add the event handlers to check for progress
   loader.contentLoaderInfo.addEventListener( Event.OPEN, handleOpen );
   loader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, handleProgress );
   loader.contentLoaderInfo.addEventListener( Event.COMPLETE, handleComplete );
   // 3. Call the load(  ) method to pull in an external asset
   loader.load(new URLRequest(s));
  }
  private function handleOpen( event:Event ):void {
   //trace( "open" );
   _loaderStatus = new TextField(  );
   addChild( _loaderStatus );
   _loaderStatus.text = "Loading: 0%";

  }
  private function handleProgress( evt:ProgressEvent ):void {
   var percent:Number = evt.bytesLoaded / evt.bytesTotal * 100;
   percent = Math.round ( percent * 100 )/100;    //保留两位小数位
   _loaderStatus.text = "Loading: " + percent + "%";
   trace( "progress, percent = " + percent );
  }
  private function handleComplete( event:Event ):void {
   trace( "complete" );
   removeChild( _loaderStatus );
   _loaderStatus = null
  }

 }
}

将上面的类文件做为文档类,与fla 文件绑定,可以看到执行效果。在测试加载时,在flash播放器中,从视图-》下载设置 中选择一个较低的网速,然后 点击 视图-》模拟下载,就可以看到文本框在不断的刷新,直到下载完成。

用遨游浏览器,打开硬盘文件时,会得到一个网络地址形式的文件地址,这个地址可以用来指定加载在不同目录中的内容。

例如: file:///D:/Book/一笔画/dyb096_b.jpg

加载 flash 并与之交互,分两步来完成,

第一步,设计被加载的 swf ,可以定义一个类,提供外部可访问的函数及属性,将这个类指定为文档类,并生成 swf 文件,

第二步,设计加载代码,在需要进行加载的影片中,利用 loader.content 来得到被加载的引用,指向被加载的文件,之后,就可以当做是本地对象一样来使用被加载的对象了。

cookbook 6.7 载入外部swf 文件并与之交互 里面就是这样的例子。

 压缩包下载

由上面这个加载的交互的例子可以看到,为了更好到实现交互控制,被加载文件需要有以下的几个要求:

1、功能、结构要简单

2、提供外部访问的接口

3、以文档类的形式与类文件绑定

标签集:TAGS:
回复Comments() 点击Count()

回复Comments

{commentauthor}
{commentauthor}
{commenttime}
{commentnum}
{commentcontent}
作者:
{commentrecontent}