package com.cvicse.workflow.util
{
import flash.display.*;
import flash.events.*;
import flash.filters.BitmapFilterQuality;
import flash.filters.BlurFilter;
import flash.geom.Matrix;
import flash.net.*;
import flash.text.TextField;
import flash.utils.*;
import flash.system.Capabilities;
import mx.events.*;
import mx.preloaders.*;
public class CustomPreloader extends Sprite implements IPreloaderDisplay
{
[Embed(source="icons/loading.gif", mimeType="application/octet-stream")]
public var _loadingLogo:Class;
private var dpbImageControl:Loader;
private var _barSprite:Sprite;
private var progressText:TextField;
private var ProgressBarSpritIsAdded:Boolean = false;
public function CustomPreloader() {
super();
}
//添加监听器
public function set preloader(preloader:Sprite):void {
//Listen for 正在下载
preloader.addEventListener(ProgressEvent.PROGRESS, handleProgress);
//Listen for 下载完成
preloader.addEventListener(Event.COMPLETE, handleComplete);
//Listen for 正在初始化
preloader.addEventListener(FlexEvent.INIT_PROGRESS , handleInitProgress);
//Listen for 初始化完成
preloader.addEventListener(FlexEvent.INIT_COMPLETE , handleInitComplete);
}
//初始化
public function initialize():void {
//添加logo图
dpbImageControl = new Loader();
dpbImageControl.contentLoaderInfo.addEventListener (Event.COMPLETE, loader_completeHandler);
dpbImageControl.loadBytes(new _loadingLogo() as ByteArray);
// dpbImageControl.load(new URLRequest("icons/loading.gif"));
}
//设置加载控件
private function loader_completeHandler(event:Event):void
{
addChild(dpbImageControl);
dpbImageControl.width = 72;
dpbImageControl.height= 72;
dpbImageControl.x = this.stage.stageWidth/2 - dpbImageControl.width/2;
dpbImageControl.y = this.stage.stageHeight/2 - dpbImageControl.height/2 - 80;
}
//设置进度条
private function addProgressBarSprit():void{
//绘制背景渐变
var matrix:Matrix=new Matrix();
matrix.createGradientBox(this.stage.stageWidth,thi s.stage.stageHeight,Math.PI/2);
var colors:Array=[0x058BBD,0xFFFFFF];
var alphas:Array=[.2,.2];
var ratios:Array=[0,255];
this.graphics.lineStyle();
this.graphics.beginGradientFill(GradientType.LINEA R,colors,alphas,ratios,matrix);
this.graphics.drawRect(0,0,this.stage.stageWidth,t his.stage.stageHeight);
this.graphics.endFill();
//绘制中心白色发光
var _Sprite1:Sprite = new Sprite();
addChild(_Sprite1);
_Sprite1.graphics.beginFill(0xffffff,0.45);
_Sprite1.graphics.drawEllipse(this.stage.stageWidt h/2-130, this.stage.stageHeight/2-90, 280, 100);
_Sprite1.graphics.endFill();
//滤镜实现发光边缘柔和
var blur:BlurFilter = new BlurFilter();
blur.blurX = 100;
blur.blurY = 50;
blur.quality = BitmapFilterQuality.HIGH;
_Sprite1.filters = [blur];
//------------------------------------------------ -
//绘制进度条背景
var _Sprite2:Sprite = new Sprite();
addChild(_Sprite2);
_Sprite2.graphics.lineStyle(1, 0xCCCCCC);
_Sprite2.graphics.beginFill(0xFFFFFF);
_Sprite2.graphics.drawRect((this.stage.stageWidth/ 2 - 152), (this.stage.stageHeight/2 - 10), 304, 20);
_Sprite2.graphics.endFill();
//------------------------------------------------ -
//加载进度条Sprite
_barSprite = new Sprite();
addChild(_barSprite);
_barSprite.x = this.stage.stageWidth/2 - 150;
_barSprite.y = this.stage.stageHeight/2 - 8;
//------------------------------------------------ -
//加载进度条文字
progressText = new TextField();
addChild(progressText);
progressText.textColor = 0x333333;
progressText.width = 300;
progressText.height = 18;
progressText.x = this.stage.stageWidth/2 - 152;
progressText.y = this.stage.stageHeight/2 + 20;
}
//刷新进度条
private function drawProgressBar(bytesLoaded:Number, bytesTotal:Number):void
{
if (_barSprite != null && progressText != null){
var g:Graphics = _barSprite.graphics;
g.clear();
var matrix:Matrix=new Matrix();
matrix.createGradientBox(300*(bytesLoaded/bytesTot al),16,Math.PI/2);
var colors:Array=[0x0099CC,0x99cc77];
var alphas:Array=[1,1];
var ratios:Array=[0,255];
g.lineStyle();
g.beginGradientFill(GradientType.LINEAR,colors,alp has,ratios,matrix);
g.drawRect(0,0,300*(bytesLoaded/bytesTotal),16);
g.endFill();
}
}
//正在下载的进度
private function handleProgress(event:ProgressEvent):void {
//第一次处理时绘制进度条Sprit
if (ProgressBarSpritIsAdded == false){
ProgressBarSpritIsAdded = true;
addProgressBarSprit();
}
if (progressText != null){
// progressText.text = "下载进度:已下载 " + event.bytesLoaded + " byte,总大小 " + event.bytesTotal + " byte.";
progressText.text = "loding..." + (event.bytesLoaded/event.bytesTotal) * 100 + "%";
}
drawProgressBar(event.bytesLoaded, event.bytesTotal);
}
private function handleComplete(event:Event):void {
if (progressText != null){
progressText.text = "下载完成.";
}
drawProgressBar(1,1);
}
private function handleInitProgress(event:Event):void {
if (progressText != null){
progressText.text = "正在初始化...";
}
drawProgressBar(1,1);
}
private function handleInitComplete(event:Event):void {
if (progressText != null){
progressText.text = "初始化完成.";
}
drawProgressBar(1,1);
//0.03秒后抛出完成事件
var timer:Timer = new Timer(300,1);
timer.addEventListener(TimerEvent.TIMER, dispatchComplete);
timer.start();
}
private function dispatchComplete(event:TimerEvent):void {
dispatchEvent(new Event(Event.COMPLETE));
}
// Implement IPreloaderDisplay interface
public function get backgroundColor():uint {
return 0;
}
public function set backgroundColor(value:uint):void {
}
public function get backgroundAlpha():Number {
return 0;
}
public function set backgroundAlpha(value:Number):void {
}
public function get backgroundImage():Object {
return undefined;
}
public function set backgroundImage(value:Object):void {
}
public function get backgroundSize():String {
return "";
}
public function set backgroundSize(value:String):void {
}
public function get stageWidth():Number {
return 500;
}
public function set stageWidth(value:Number):void {
}
public function get stageHeight():Number {
return 375;
}
public function set stageHeight(value:Number):void {
}
}
}
调用:
flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" preloader="com.cvicse.workflow.util.CustomPreloade r" width="90%">
发表评论
-
转换文本框字符串为数字
2012-07-06 09:52 813try { int num ... -
js判断数字和判断数字范围 正则表达式
2012-07-06 09:46 23011) "^\\d+$" //非负整数 ... -
浅谈.net下的多线程和并行计算(七)基于多线程的基本组件
2012-07-03 13:44 781在多线程应用中我们有一些很常见的需求,比如定时去做计划任务 ... -
Flex4 中使用ModuleLoader为子容器 动态加入到TabNavigator导航器容器中的例子
2012-07-02 13:10 714经常在一些工程中看到 选择左侧目录树 右侧添加TAB加载内 ... -
Flex ColumnChart verticalAxis 中的title在变换皮肤时的异常
2012-07-02 13:09 877在ColumnChart 中添加了title的显示,但在更 ... -
flex 打印 预览
2012-07-02 13:09 1065最近研究了一下 flexReport 开源项目,发现存在一 ... -
flex 客户端缓存 module swf
2012-07-02 13:09 602flex或者flash客户端 ... -
Flex DataGrid 控件知识汇总,创建、全选、删除、分页、样式
2012-07-01 10:39 846DataGrid控件是一个可以展示多列数据的列表控件。它是 ... -
flex3:drag-drop全攻略(二)
2012-07-01 10:39 668这里写四个实例:1,List->List 2, ... -
flex4+servlet 实现文件上传功能
2012-07-01 10:39 635最近老是被问到flex的上传问题怎么解决,今天就贴出web ... -
flex学习-----自定义Sprite
2012-07-01 10:39 778package com.cvicse.workflow.u ... -
flex图表
2012-07-01 10:39 881flex 可视化组件中 ... -
RSL编译方式的FLEX站点出现#2046错误
2012-06-30 17:04 813RSL编译方式的FLEX站点出 ... -
Flex富文本编辑器
2012-06-30 17:04 1117Flex富文本编辑器 2010年07月08日 近来在开发 ... -
如何在flex当中使用swc
2012-06-30 17:03 653如何在flex当中使用swc 2 ... -
如何在flex当中使用swc
2012-06-30 17:03 652如何在flex当中使用swc 2 ... -
Flex TXT文件导入
2012-06-30 17:03 397Flex TXT文件导入 2010年09月20日 在上一 ...
相关推荐
nuxt-svg-sprite-loader 用于svg-sprite-loader的Nuxt.js模块。 安装 # npm $ npm install nuxt-svg-sprite-loader # Yarn $ yarn add nuxt-svg-sprite-loader 用法 该模块添加到您Nuxt.js模块列表nuxt.config.js...
前端开源库-css-sprite-loaderCSS Sprite加载器,一个将png转换为sprite图像的Webpack加载器
VUE-cli3使用 svg-sprite-loader svg-sprite-loader 的插件,用来根据导入的 svg 文件自动生成 symbol 标签并插入 html,接下来就可以在模版中方便地使用 svg-sprite 技术了。 使用 svg-sprite 的好处 页面代码清爽...
pixel-sprite-generator, JavaScript程序sprite生成器 pixel-sprite-generator程序像素精灵发生器的JavaScript实现类似于视频游戏精灵的旧时代。 子画面是由组合方法生成的。实时示例...
vue项目中引用svg-sprite-loader图标时,需要的icons和SvgIcon目录,因为这两个目录文件都是固定的,这里直接提供下载
laravel-mix-svg-sprite 用于Laravel Mix的SVG精灵组件,包装了和。 安装 使用npm安装: $ npm install --save-dev laravel-mix-svg-sprite 用法 该组件向Mix添加了一个额外的API,以创建单独的SVG文件的SVG子画面...
npm install --save-dev rollup-svg-sprite-loader 用法 // rollup.config.js import svgSpriteLoader from 'rollup-svg-sprite-loader' ; export default { entry : 'src/index.js' , dest : 'dist/my-lib.js' , ...
前端开源库-svg-classic-sprite-loadersvg经典sprite加载器,用于创建经典svg sprite的Webpack加载器
前端项目-sprite-js,A very lightweight library to handle Sprites on HTML Canvas
iOS游戏应用源代码——r3econ-UIImage-Sprite-Additions-0738b37.zip
基于Sprite的文本组件。 文本被绘制到画布上,转换为,然后用作上的材质。 由于正在使用精灵,因此文本将始终面向相机,并且其方向相对于相机固定。 快速开始 import SpriteText from 'three-spritetext'; 或者 var...
nuxt-svg-sprite-module 在Nuxt应用程序中内嵌svg精灵的一种快速而肮脏的方法。 安装 $ yarn add nuxt-svg-sprite-module $ npm install nuxt-svg-sprite-module --save 配置 在nuxt.config.js modules: [ [ ...
Sketch-CSS-Sprite-Mixin, 在草图中,生成一个 CSS Sprite Mixin到剪贴板的代码 绘制 CSS Sprite MixinSketch中生成 scss,LESS 和手写笔的mixin的代码。 运行插件时,代码被复制到剪贴板。子画面名称是顶级图层名,...
gulp-svg-精灵脚本Gulp 插件将单独的 svg 图标打包到可缓存的脚本中。 документ .安装 npm install git://github....var svgSpriteScript = require ( 'gulp-svg-sprite-script' ) ;gulp . task ( 'createSpr
svg-sprite-injector 异步加载SVG精灵 灵感来自 用法 只是简单地打电话 svgSpriteInjector ( 'sprite.svg' ) ; 通过localStorage缓存 svgSpriteInjector ( 'sprite.svg' , { revision : 1 // Revision identifier ...
安装npm install sprite-timeline用法在浏览器中< script src =" https://s3.ssl.qhres.com/!670d1b37/sprite-timeline.min.js " > </ script >演示版 const T = 2000let timelinerequestAnimationFrame...
CSS精灵移动 CSS精灵生成器。 从图像目录中生成精灵和...Usage: css-sprite-mobile < out> < src> ... [options] out path of directory to write sprite file to src glob strings to find source images to put into
unity插件Shadero Sprite - 2D Shader Editor 1.9.9
安装npm install node-sprite-generator 注意:node-sprite-generator cen使用本机库或纯JavaScript来构建不需要本机依赖项的sprite。 要使用纯javascript合成器,请使用'jimp'作为合成器模块。 使用'canvas'合成器...