加载外部 SWF 和图像文件

若要加载 SWF 或图像文件,请使用 loadMovie()loadMovieNum() 全局函数、MovieClip 类的 loadMovie() 方法或 MovieClipLoader 类的 loadClip() 方法。有关 loadClip() 方法的详细信息,请参阅《ActionScript 2.0 语言参考》中的 MovieClipLoader.loadClip()

对于图像文件,Flash Player 8 及更高版本支持 JPEG(渐进和非渐进)图像文件类型、GIF 图像(透明和不透明,不过只加载动画 GIF 的第 1 帧)和 PNG 文件(透明和不透明)。

若要在 Flash Player 中将 SWF 或图像文件加载到某个级别,请使用 loadMovieNum() 函数。若要将 SWF 或图像文件加载到影片剪辑目标,请使用 loadMovie() 函数或方法。不管是哪种情况,所加载的内容都会替换指定级别或目标影片剪辑的内容。

当您将 SWF 或图像文件加载到影片剪辑目标中时,SWF 文件或图像的左上角被放置在影片剪辑的注册点上。因为此注册点通常位于影片剪辑的中心,所以加载的内容可能不会出现在中心。另外,当将 SWF 文件或图像加载到根时间轴上时,图像的左上角会位于舞台的左上角。加载的内容会继承影片剪辑的旋转和缩放,但是删除了影片剪辑的原始内容。

您可以选择通过 loadMovie()loadMovieNum() 调用发送 ActionScript 变量。这十分有用,例如以下这种情况:您在方法调用中指定的 URL 是一个服务器端脚本,该脚本根据从 Flash 应用程序传递的数据返回 SWF 或图像文件。

当使用全局 loadMovie()loadMovieNum() 函数时,指定目标级别或剪辑作为参数。下面的示例将 Flash 应用程序 contents.swf 加载到名为 image_mc 的影片剪辑实例中:

loadMovie("contents.swf", image_mc);

您可以使用 MovieClip.loadMovie() 实现相同的结果:

image_mc.loadMovie("contents.swf");

下面的示例将 JPEG 图像 image1.jpg 加载到影片剪辑实例 image_mc 中:

image_mc.loadMovie("http://www.helpexamples.com/flash/images/image1.jpg");

有关加载外部 SWF 和图像文件的详细信息,请参阅关于加载 SWF 文件和根时间轴

若要将 SWF 和 JPEG 文件预加载到影片剪辑实例中,可以使用 MovieClipLoader 类。此类提供事件侦听器机制,可以提供有关将文件下载到影片剪辑的状态的通知。若要使用 MovieClipLoader 对象预加载 SWF 和 JPEG 文件,必须完成以下操作:

创建新的 MovieClipLoader 对象 您可以使用单个 MovieClipLoader 对象跟踪多个文件的下载进度,或为每个文件的进度创建一个单独的对象。创建新的影片剪辑、将内容加载到其中,然后按下面的代码所示创建 MovieClipLoader 对象:

this.createEmptyMovieClip("img_mc", 999);
var my_mcl:MovieClipLoader = new MovieClipLoader();

创建侦听器对象和创建事件处理函数 侦听器对象可以是任何 ActionScript 对象,例如通用 Object 对象、影片剪辑或自定义组件。

下面的示例创建一个名为 loadListener 的通用侦听器对象,然后为自身定义 onLoadErroronLoadStartonLoadProgressonLoadComplete 函数:

// 创建侦听器对象:
var mclListener:Object = new Object();
mclListener.onLoadError = function(target_mc:MovieClip, errorCode:String, status:Number) {
    trace("Error loading image: " + errorCode + " [" + status + "]");
};
mclListener.onLoadStart = function(target_mc:MovieClip):Void {
    trace("onLoadStart: " + target_mc);
};
mclListener.onLoadProgress = function(target_mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void {
    var numPercentLoaded:Number = numBytesLoaded / numBytesTotal * 100;
    trace("onLoadProgress: " + target_mc + " is " + numPercentLoaded + "% loaded");
};
mclListener.onLoadComplete = function(target_mc:MovieClip, status:Number):Void {
    trace("onLoadComplete: " + target_mc);
};

注意

 

Flash Player 8 及更高版本允许您在 onLoadComlete 和 onLoadError 事件侦听器中检查 MovieClipLoader 下载的 HTTP 状态。这种能力允许您检查文件不能下载的原因:是服务器错误,还是没有找到文件,等等。

向 MovieClipLoader 对象注册侦听器对象 为了让侦听器对象接收加载事件,您必须将其向 MovieClipLoader 对象进行注册,如下面的代码所示:

my_mcl.addListener(mclListener);

开始将文件(图像或 SWF)加载到目标剪辑中 若要开始下载图像或 SWF 文件,请使用 MovieClipLoader.loadClip() 方法,如下面的代码所示:

my_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", img_mc);

注意

 

您只能使用 MovieClipLoader 方法跟踪用 MovieClipLoader.loadClip() 方法加载的文件的下载进度,而不能使用 loadMovie() 函数或 MovieClip.loadMovie() 方法。

下面的示例使用 ProgressBar 组件的 setProgress() 方法显示 SWF 文件的下载进度。有关详细信息,请参阅《ActionScript 2.0 组件语言参考》。

若要使用 ProgressBar 组件显示下载进度,请执行以下操作:

  1. 创建一个新的 Flash 文档,并将其保存为 progress.fla
  2. 打开“组件”面板(“窗口”>“组件”)。
  3. 将 ProgressBar 组件从“组件”面板拖到舞台上。
  4. 在“属性”检查器中(“窗口”>“属性”>“属性”),将 ProgressBar 组件命名为 my_pb
  5. 在时间轴中选择第 1 帧,然后打开“动作”面板(“窗口”>“动作”)。
  6. 将以下代码添加到“动作”面板中:
    var my_pb:mx.controls.ProgressBar;
    my_pb.mode = "manual";
    
    this.createEmptyMovieClip("img_mc", 999);
    
    var my_mcl:MovieClipLoader = new MovieClipLoader();
    var mclListener:Object = new Object();
    mclListener.onLoadStart = function(target_mc:MovieClip):Void {
        my_pb.label = "loading: " + target_mc._name;
    };
    mclListener.onLoadProgress = function(target_mc:MovieClip, numBytesLoaded:Number, numBytesTotal:Number):Void {
        var pctLoaded:Number = Math.ceil(100 * (numBytesLoaded / numBytesTotal));
        my_pb.setProgress(numBytesLoaded, numBytesTotal);
    };
    my_mcl.addListener(mclListener);
    my_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", img_mc);
    
  7. 选择“控制”>“测试影片”,对文档进行测试。

    将图像加载到影片剪辑 img_mc 中。

  8. 选择“文件”>“发布设置”>“格式”,确保选择 SWF 和 HTML 选项。
  9. 单击“发布”,然后在硬盘上查找 HTML 和 SWF 文件。

    它们与在步骤 1 中保存的 progress.fla 位于同一文件夹中。

  10. 双击 HTML 文档在浏览器中将它打开,并查看进度条动画。

    注意

     

    在测试环境中加载文件时,如果要查看进度条的进度,请确保从 Internet 加载未缓存的文件,而不要加载本地文件。本地文件的加载速度太快,无法查看进度。或者,上传您的 SWF 文件,然后测试服务器上的文档。

相关信息,请参阅关于加载 SWF 文件和根时间轴。有关 MovieClipLoader 类的详细信息,请参阅《ActionScript 2.0 语言参考》中的 MovieClipLoader。有关创建进度条动画的信息,请参阅为加载 SWF 和图像文件创建进度动画

有关图片库应用的范例,请访问“Flash 范例”页,网址为 www.adobe.com/go/learn_fl_samples_cn。下载 Samples zip 文件,然后定位到 ActionScript2.0/Galleries 以访问这些范例:

这些文件提供了相关示例,演示在向 SWF 文件加载图像文件时如何使用 ActionScript 动态地控制影片剪辑。


Flash CS3

 

评论添加到页面后给我发送电子邮件 | 评论报告

当前页: http://livedocs.adobe.com/flash/9.0_cn/main/00001025.html