首页 > 网站 > WEB开发 > 正文

9.18.自定义引导界面

2024-04-27 13:52:08
字体:
来源:转载
供稿:网友
9.18.1. 问题
你想自定义在下载和初始化Flex 程序时显示的引导界面。
9.18.2. 解决办法
通过生成mx.preloaders.DownloadProgressBar 类(默认的程序引导界面)的子类或者生成实现了mx.preloaders.IPreloaderDisplay 接口的flash.display.Sprite 的子类型两种方法创建自定义的引导界面。
9.18.3. 讨论
一个Flex 程序默认地由两个画面组成。第一个生成引导界面,该界面发出与程序的加载和初始化有关的一系列事件。默认的进度条依据这些事件更新其显示。下载接近完成时,系统管理器向第二个画面发出请求,同时继续生成和初始化程序。当程序快要完成初始化时,系统管理器将得到通知并去除引导界面。

这一过程由系统管理器进行内在处理,管理器初始化mx.preloaders.Preloader 类的一个实例监控你的程序下载和初始化状态。Preloader 实例实例化了指定的下载进度条,将其添加到显示列表并将IPreloaderDisplay 实现的preloader 属性设为本身。定义的Preloader实例能监听预加载器发出的许多事件,详情见表9-2.

要想创建一个自定义进度条以处理这些事件,你可以生成mx.preloaders.DownloadProgressBar 的子类或者生成实现了mx.preloaders.IPreloaderDisplay 接口的mx.display.Sprite 的子类,Sprite 本身就是DownloadProgressBar 组成部分。

DownloadProgressBar 类为表9-2 中列出的事件定义了保护型的事件处理器。你可以通过生成DownloadProgressBar 子类重载这些事件处理器以相应地修改和更新你的自定义显示:
+展开
-ActionScript
package oreilly.cookbook {
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.geom.Rectangle;
import mx.preloaders.DownloadProgressBar;
public class DPBSubclass extends DownloadProgressBar{
public function DPBSubclass(){
super();
// 下载完成后最短的显示时间
MINIMUM_DISPLAY_TIME = 3000;
// 设置初始化进程中的默认文本。
initializingLabel = "Download complete!/nInitializing...";
// 重载标签域以显示自定义文本
override protected function get labelRect():Rectangle{
 return new Rectangle(14, 5, 150, 30);
}
// 重载下载进度处理器以显示自定义文本。
override protected function progressHandler(event:ProgressEvent ):void{
super.progressHandler(event);
label = Math.round(event.bytesLoaded / 1000 ).toString()+ "k of "+ Math.round( event.bytesTotal / 1000).toString() + "k";
}
// 重载以确保在初始化和下载时显示进度条。
override protected function showDisplayForInit(elapsedTime:int,count:int):Boolean{return true;}
override protected function showDisplayForDownloading( elapsedTime:int,event:ProgressEvent):Boolean{ return true; }
}
}

本例重载DownloadProgressBar 定义的progressHandler 事件处理器显示自定义文本以响应引导器所发出PROGRESS 事件。在重载只读的labelRect 同时修改标签的显示域。显示文本布告的标签由父类内在地生成。若想将DPBSubclass 类设置为自定义引导界面,利用完整合法的类名设置<mx:Application>标记的preloader 属性,代码如下:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxmllayout="vertical"
preloader="oreilly.cookbook.DPBSubclass">

<mx:Script>
<![CDATA[
// embed large audio file in order to see
// the preloader display.
[Embed(source="assets/audio/audio.mp3")]
private var _audio:Class;

]]>
</mx:Script>
</mx:Application>
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表