Flex 4.6 下载进度条 IPreLoaderDisplay生命周期

Flex4.6 程序的主类实际上为SystemManager的子类。SystemManager会创建Preloader对象,然后调用PreLoader对象的initialize方法,该方法有如下签名

 public function initialize(showDisplay:Boolean, 
                               displayClassName:Class,
                               backgroundColor:uint,
                               backgroundAlpha:Number,
                               backgroundImage:Object,
                               backgroundSize:String,
                               displayWidth:Number,
                               displayHeight:Number,
                               libs:Array = null,
                               sizes:Array = null,
                               rslList:Array = null,
                               resourceModuleURLs:Array = null,
                               applicationDomain:ApplicationDomain = null):void

showDisplay会传入 Application.usePreloader属性,displayClassName会传入Application.preloader属性(从类名字符串得到的Class对象),backgroundXXX属性对应于Application的backgroundXXX属性,displayWidth和displayHeight会传入舞台大小。

Preloader.initialize方法片段如下

if (showDisplay)
{
            displayClass = new displayClassName(); 
            // Listen for when the displayClass no longer needs to be on the stage
            displayClass.addEventListener(Event.COMPLETE,
                                          displayClassCompleteHandler);
            
            // Add the display class as a child of the Preloader
            addChild(DisplayObject(displayClass));
                        
            displayClass.backgroundColor = backgroundColor;
            displayClass.backgroundAlpha = backgroundAlpha;
            displayClass.backgroundImage = backgroundImage;
            displayClass.backgroundSize = backgroundSize;
            displayClass.stageWidth = displayWidth;
            displayClass.stageHeight = displayHeight;
            displayClass.initialize();  
            displayClass.preloader = this;
            ………………
 }

如果Application.usePreloader==true,则会创建下载进度条,一个实现了IPreloaderDisplay接口的实例(且为DisplayObject子类实例,是一个显示对象),然后设置backgroundXXX,stageWidth和stageHeight,调用进度条实例的initialize方法,设置preloader属性,把Preloader本身传入进度条实例。

一般在设置preloader属性时,会侦听Preloader实例的7个事件,如SparkDownloadProgressBar所示

public function set preloader(value:Sprite):void
{
    _preloader = value;
   
    value.addEventListener(ProgressEvent.PROGRESS, progressHandler);    
    value.addEventListener(Event.COMPLETE, completeHandler);
        
    value.addEventListener(RSLEvent.RSL_PROGRESS, rslProgressHandler);
    value.addEventListener(RSLEvent.RSL_COMPLETE, rslCompleteHandler);
    value.addEventListener(RSLEvent.RSL_ERROR, rslErrorHandler);
        
    value.addEventListener(FlexEvent.INIT_PROGRESS, initProgressHandler);
    value.addEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler);
}

ProgressEvent.PROGRESS事件反应程序的下载进度,Event.COMPLETE事件在程序下载完成时调度,RSLEvent是加载运行时共享库的相关事件。FlexEvent.INIT_PROGRESS在程序下载完成开始初始化时调度
在Preloader调度FlexEvent.INIT_COMPLETE事件时,代表着Application已经下载完成并已经初始化完毕,这时需要下载进度条IPreloaderDisplay实例调度一个Event.COMPLETE事件来通知Preloader删除进度条,显示Application

所以在自定义Flex 4.6程序下载进度条时,需要先定义一个实现了IPreloaderDisplay接口的Sprite类。处理preloader的7个事件,在ProgressEvent.PROGRESS事件调度是改变进度条的外表显示,在FlexEvent.INIT_COMPLETE调度之后,可以做一些额外处理,如播放动画或声音,最后不要忘记,IPreloaderDisplay进度条对象必须调度一个Event.COMPLETE事件,通知Preloader移除进度条,显示Application。

时间: 2025-01-13 03:06:21

Flex 4.6 下载进度条 IPreLoaderDisplay生命周期的相关文章

CodePush自定义更新弹框及下载进度条

CodePush 热更新之自定义更新弹框及下载进度 先来几张弹框效果图 非强制更新场景 image 强制更新场景 image 更新包下载进度效果 image 核心代码 这里的热更新Modal框,是封装成一个功能独立的组件来使用的,需不需要更新以及是否为强制更新等逻辑均在组件内实现 image UpdateComp 热更新组件核心代码如下: /** * Created by guangqiang on 2018/3/29. */ import React, {Component} from 're

关情纸尾-----Quartz2D绘制下载进度条,饼图

绘制下载进度条 1.搭建界面. 2.拖动滑竿的时候让他里面的能够跟着我的拖动,数字在改变. 数字改变时有一个注意点, 就是要显示%,它是一个特殊的符号,要用两个%%代表一个% 3.拖动滑竿的时候就是在上面画弧. 从最上面,按顺时针画,所以,它的起始角度是-90度.结束角度也是-90度 也是从起始角度开始画, 起始角度-90度, 看你下载进度是多少 假如说你下载进度是100,就是1 * 360度 也就是说这个进度占你360度多少分之一 CGContextRef ctx = UIGraphicsGe

用 CALayer 定制下载进度条控件

// // RPProgressView.h // CALayer定制下载进度条控件 // // Created by RinpeChen on 16/1/2. // Copyright © 2016年 rinpe. All rights reserved. // #import <UIKit/UIKit.h> @interface RPProgressView : UIView @property (nonatomic, assign) CGFloat progressValue; // 进

HTML5 CSS3 诱人的实例 : 网页加载进度条的实现,下载进度条等

今天给大家带来一个比较炫的进度条,进度条在一耗时操作上给用户一个比较好的体验,不会让用户觉得在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用:一般用于下载任务,删除大量任务,网页加载等:如果有使用html5为手机布局的,也可以用于手机中~ 效果图: 1.html结构: <div id="loadBar01" class="loadBar"> <div> <span class="percent&qu

仿苹果AppStore 下载进度条

以前项目自己写的 ,一个模仿苹果AppStore 下载进度条的winfrom用户控件,GDI绘制.效果如图 1 using System.Drawing; 2 using System.Windows.Forms; 3 using System.ComponentModel; 4 namespace test 5 { 6 public class CircleProgressBar : Control 7 { 8 float _progress = 0F; 9 float _Wpen = 1;

Python HTTP下载文件并显示下载进度条

下面的Python脚本中利用request下载文件并写入到文件系统,利用progressbar模块显示下载进度条. 其中利用request模块下载文件可以直接下载,不需要使用open方法,例如: import urllib import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() url = "https://raw.githubusercontent.com/racaljk/hosts/maste

android异步任务图片下载(进度条提示进度)

一.AsyncTask介绍 Android提供了几种在其他线程中访问UI线程的方法. Activity.runOnUiThread( Runnable ) View.post( Runnable ) View.postDelayed( Runnable, long ) Hanlder 这些类或方法同样会使你的代码很复杂很难理解.然而当你需要实现一些很复杂的操作并需要频繁地更新UI时这会变得更糟糕. 为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界

关情纸尾-----Quartz2D绘制圆形下载进度条,饼图

绘制下载进度条 1.搭建界面. 2.拖动滑竿的时候让他里面的能够跟着我的拖动,数字在改变. 数字改变时有一个注意点, 就是要显示%,它是一个特殊的符号,要用两个%%代表一个% 3.拖动滑竿的时候就是在上面画弧. 从最上面,按顺时针画,所以,它的起始角度是-90度.结束角度也是-90度 也是从起始角度开始画, 起始角度-90度, 看你下载进度是多少 假如说你下载进度是100,就是1 * 360度 也就是说这个进度占你360度多少分之一 CGContextRef ctx = UIGraphicsGe

用CALayer实现下载进度条控件

用CALayer实现下载进度条 效果: 源码: // // ViewController.m // ProgressView // // Created by YouXianMing on 14/11/18. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h" @interface ViewController () @property (nonatomic, st