ActionScript 3.0 Cookbook 6.6

本文介绍如何使用ActionScript 3.0的Loader类加载并显示外部图像,包括创建Loader实例、将其添加到显示列表及调用load方法。此外,还详细讲解了如何监听加载过程中的各种事件,如open、progress和complete等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ActionScript 3.0 Cookbook 6.6

问题

在影片播放时,你想加载外部图像进来

解决办法

用 Loader 类来加载一个图像(.jpg、.png、.gif)和在屏幕上显示它

讨论

在第9.17节中有示范怎么样在编辑时,通过 [Embed]元数据标签,绑定外部资源到一个影片中。在运行时,为了加载一个外部图像或者影片,需要用到 Loader 类。

flash.display.Loader 类非常类似 flash.net.URLLoader 类。不同的关键在于,Loader 实例能加载外部图像和影片,在屏幕上显示它们,然而 URLLoader 实例对于传递数据非常有用。

加载外部内容有三个基本步骤:

  1. 建立一个 Loader 类的实例

  2. 添加 Loader 实例到可视化列表中

  3. 调用 load() 方法加载外部资源

load() 方法为下载图像或者.swf 文件负责,它带一个 URLRequest 对像用为参数,这个参数是资源的地址。

下面的例子是用 Loader 实例下载一个名叫 image.jpg 的图像,下面有注释前面所说的3个步骤:

package {
import flash.display.*;
import flash.net.URLRequest;
public class LoaderExample extends Sprite {
public function LoaderExample(  ) {
// 1. 建立实例
var loader:Loader = new Loader(  );
// 2. 添加实例到显示列表
addChild( loader );
// 3. 调用 load()方法
loader.load( new URLRequest( "image.jpg" ) );
}
}
}

一旦资源已下载完成,它自动地被添加 作为 Loader 实例的一个孩子

当加载外部资源的时候,在加载进程中有可能会发生一些错误,例如,指向的地址拼写错误,或者是沙箱安全因素不让资源被加载,又或者是资源太大,将会要花很长时间下载。在下载资源的时候,屏幕是空的,你可能会想要显示下载的进度。

碰到这些问题,你需要添加事件侦听器到 Loader 实例的 contentLoaderInfo 属性,它可以显示它们发生时的不同事件。contentLoaderInfo 属性是 flash.display.LoaderInfo 类的实例,提供目标在下载时的信息。

下面是LoaderInfo 类的实例的事件列表
 

open

当资源开始下载发生

progress

在资源下载的过程中发生

complete

在资源下载完成时发生

init

当加载一个 .swf 它的属性和方法可用时发生

httpStatus

在加载时,HTTP 请求失败时发生
ioError

当一个重大的错误产生,导致下载失败,像找不到资源

securityError

沙箱安全因素

unload

当调用 unload()方法删除已加载的内容,或者再次调用 load()方法替换已经加载完的

下面的例子示范了侦听加载一个图像时,与下载进程有关联的各种事件:

package {
import flash.display.*;
import flash.text.*;
import flash.net.URLRequest;
import flash.events.*;
public class LoaderExample extends Sprite {
public function LoaderExample(  ) {
// Create the loader and add it to the display list
var loader:Loader = new Loader(  );
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 );
// Load in the external image
loader.load( new URLRequest( "image.jpg" ) );
}
private function handleOpen( event:Event ):void {
trace( "open" );
}
private function handleProgress( event:ProgressEvent ):void {
var percent:Number = event.bytesLoaded / event.bytesTotal * 100;
trace( "progress, percent = " + percent );
}
private function handleComplete( event:Event ):void {
trace( "complete" );
}
}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值