博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flex自定义preloader预加载进度条
阅读量:6419 次
发布时间:2019-06-23

本文共 3493 字,大约阅读时间需要 11 分钟。

flex默认的preloader已经很不错了,可是有时候还是需要自定义的.
 
需要在要出现自定义预加载的程序的<mx:Application>标签里加入preloader="".
preloader="com.lichen.component.CustomPreloader"
其中,com.lichen.component是我的包名,CustomPreloader这个类是继承了DownloadProgressBar
这句就是指明了程序preloader的时候加载哪个类
 
CustomPreloader.as
package com.lichen.component
{
  
import flash.display.Sprite;
  
import flash.events.Event;
  
import flash.events.ProgressEvent;
  
import flash.text.TextField;
    
  
import flashx.textLayout.BuildInfo;
    
  
import mx.events.*;
  
import mx.preloaders.DownloadProgressBar;
    
  
public
class CustomPreloader
extends DownloadProgressBar {
    
    
public var wcs:WelcomeScreen;
    
public var msg:TextField;
    
public function CustomPreloader()    
    {
      
super();    
      msg=
new TextField();
      wcs =
new WelcomeScreen();
        
      
this.addChild(wcs);
      
this.addChild(msg);
    }
    
    override
public function set preloader( preloader:Sprite ):
void    
    {                                        
      preloader.addEventListener( ProgressEvent.PROGRESS , SWFDownloadProgress );        
      preloader.addEventListener( Event.COMPLETE , SWFDownloadComplete );
      preloader.addEventListener( FlexEvent.INIT_PROGRESS , FlexInitProgress );
      preloader.addEventListener( FlexEvent.INIT_COMPLETE , FlexInitComplete );
    }
    
    
private function SWFDownloadProgress( event:ProgressEvent ):
void {
      msg.text=String(
int(event.bytesLoaded/event.bytesTotal*100))+
" %";
      msg.background=
true;
      msg.backgroundColor=0xD4E4FF;
      msg.width=200;
      msg.height=20;
      msg.textColor=0x444444;
    }
    
    
private function SWFDownloadComplete( event:Event ):
void {}
    
    
private function FlexInitProgress( event:Event ):
void {
//      wcs.ready = true;
      msg.text=
"完成了!";
      wcs.closeScreen();
      dispatchEvent(
new Event(Event.COMPLETE));
    }
    
    
private function FlexInitComplete( event:Event ):
void    
    {            
//      wcs.ready = true;            
//      dispatchEvent( new Event( Event.COMPLETE ) );
    }
    
  }
}
 
这其中使用了WelcomeScreen,这个类的作用是使用图片,并且设置定时器控制图片显示的alpha属性.
WelcomeScreen.as
package com.lichen.component    
{        
  
import flash.display.Loader;
  
import flash.events.MouseEvent;
  
import flash.events.TimerEvent;
  
import flash.utils.ByteArray;
  
import flash.utils.Timer;
    
  
public
class WelcomeScreen
extends Loader
  {
    [ Embed(source=
"images/mt.jpg", mimeType=
"application/octet-stream") ]
    
public var WelcomeScreenGraphic:Class;
    
public var timer:Timer;
    
private var fadeInRate:Number    = .05;
    
private var fadeOutRate:Number = .08;
    
private var timeAutoClose:
int = 500;
    
public var ready:Boolean =
false;    
    
    
public function WelcomeScreen()
    {
      
this.visible =
false;
      
this.alpha = 0.5;
      timer =
new Timer( 1 );
      timer.addEventListener( TimerEvent.TIMER, updateView );
      timer.start();
      
this.loadBytes(
new WelcomeScreenGraphic() as ByteArray );
      
this.addEventListener( MouseEvent.MOUSE_DOWN, mouseDown );                            
    }
    
    
public function updateView( event:TimerEvent ):
void
    {
      
if(
this.alpha < 1)        
this.alpha =
this.alpha +
this.fadeInRate;
      
if(
this.stage.stageWidth>0){
        
this.stage.addChild(
this);
        
this.x =
this.stage.stageWidth/2 -
this.width/2;
        
this.y =
this.stage.stageHeight/2 -
this.height/2;
        
this.visible=
true;
      }
      
if(
this.ready && timer.currentCount >
this.timeAutoClose ) closeScreen()        
    }
    
    
public function closeScreen():
void
    {
      timer.removeEventListener( TimerEvent.TIMER, updateView );
      timer.removeEventListener( MouseEvent.MOUSE_DOWN, mouseDown);
      timer.addEventListener( TimerEvent.TIMER, closeScreenFade );                                        
    }
    
    
public function closeScreenFade( event:TimerEvent ):
void
    {
      
if(
this.alpha > 0){
        
this.alpha =
this.alpha - fadeOutRate;
      }
else {
        timer.stop()
        
this.parent.removeChild(
this);
      }                
    }                
    
    
public function mouseDown( event:MouseEvent ):
void
    {
      closeScreen();                
    }
  }
}    
 
最终的效果图

转载于:https://www.cnblogs.com/jzm53550629/p/3300467.html

你可能感兴趣的文章
【翻译】我钟爱的HTML5和CSS3在线工具
查看>>
Java多线程学习(吐血超详细总结)
查看>>
css3 变形
查看>>
Win7 64bit 安装Mysql5 出错 无法启动服务。
查看>>
嵌入式 H264参数语法文档: SPS、PPS、IDR以及NALU编码规律
查看>>
初识Opserver,StackExchange的监控解决方案
查看>>
给大家讲解一下JavaScript与后台Java天衣无缝相结合
查看>>
探索HTML5之本地文件系统API - File System API
查看>>
redis源码笔记 - initServer
查看>>
FindBugs工具常见问题
查看>>
ECSHOP报错误Deprecated: preg_replace(): The /e modifier is depr
查看>>
【iOS】iOS之Button segue弹出popOver消除(dismiss)问题
查看>>
java多线程系列5-死锁与线程间通信
查看>>
数据库分库分表
查看>>
小程序模板嵌套以及相关遍历数据绑定
查看>>
Systemd入门教程:命令篇(转)
查看>>
spring事务学习(转账案例)(二)
查看>>
[官方教程] [ES4封装教程]1.使用 VMware Player 创建适合封装的虚拟机
查看>>
http协议与http代理
查看>>
【iOS开发-91】GCD的同步异步串行并行、NSOperation和NSOperationQueue一级用dispatch_once实现单例...
查看>>