`

preloader

    博客分类:
  • Flex
 
阅读更多

Flex 的默认的 Preloader, 平心而论,不是很好看。一个个性化的Preloader,基本上要包括三个部分。png-1743

1. 公司或者网站Logo,或者个性化的预载图片。好似是桌面软件的Splash Screen。

2. 载入数据的进度,文字形式的百分比。

3. 载入进度条。

preloader不像Flex项目中普通的部件可以通过CSS进行设置,是因为当程序初始载入时,CSS文件的设定还未被载入,所以不好通过CSS进行外观的控制。

这里有Ted把SWF,GIF 和 PNG 文件作为 Preloader 的教程。不过这里没有上述元素三合一的例子。

把网上的资料总结一下,这里放个三合一的例子。最终效果预览,

loader

 

设置WEB程序的Preloader为自制的Preloader时,要修改主程序Application标签中的preloader属性,

 

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <MX:APPLICATION xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"preloader="com.ibsol.view.Preloader">   
  3. <MX:SCRIPT>   
  4. ...</MX:SCRIPT></MX:APPLICATION>  

 

这里的com.ibsol.view.Preloader是自定义Preloader类的路径。

Preloader要扩展DownloadProgressBar类才能设置自己的Preloader

 

  1. package com.ibsol.view   
  2. {   
  3.     import flash.display.Sprite;   
  4.     import flash.events.Event;   
  5.     import flash.events.ProgressEvent;   
  6.     import flash.events.TimerEvent;   
  7.     import flash.text.TextField;   
  8.     import flash.utils.Timer;   
  9.     import mx.events.FlexEvent;   
  10.     import mx.preloaders.DownloadProgressBar;   
  11.        
  12.     public class Preloader extends DownloadProgressBar   
  13.      {   
  14.         //显示进度的文字   
  15.         private var progressText:TextField;   
  16.         //进度条   
  17.         public var img:WelcomeScreen;   
  18.         //logo页面   
  19.         public var logo:WelcomeLogo;   
  20.         private var _timer:Timer;   
  21.            
  22.         public function Preloader()   
  23.          {   
  24.             super();   
  25.             //加入logo   
  26.              logo = new WelcomeLogo();   
  27.             this.addChild(logo);   
  28.             //加入进度条   
  29.              img = new WelcomeScreen();   
  30.             this.addChild(img);   
  31.             //加入进度文字   
  32.              progressText = new TextField();   
  33.              progressText.x = 40;   
  34.              progressText.y = 90;   
  35.             this.addChild(progressText);   
  36.             //进度条计时器初始化,我们实现进度条的原理就是不停的刷新进图条图片   
  37.             //因为每次进度条的长度不同,所以就有进度条在走的效果   
  38.              _timer = new Timer(1);   
  39.              _timer.addEventListener(TimerEvent.TIMER, drawTimerHandler);   
  40.              _timer.start();   
  41.          }   
  42.         /**
  43.           * override这个函数,来实现自己Preloader的设置,而不是用其默认的设置
  44.           */  
  45.          override public function set preloader(value:Sprite):void  
  46.          {   
  47.              value.addEventListener(ProgressEvent.PROGRESS, progHandler);   
  48.              value.addEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler);   
  49.             //在这里设置预载界面居中   
  50.             //如果在初始化函数中设置,会有stageWidth和最终界面大小不一致的错误,而导致不能居中   
  51.              x = (stageWidth/2) - (300/2);   
  52.              y = (stageHeight/2) - (180/2);   
  53.          }   
  54.            
  55.         private function progHandler(e:ProgressEvent):void  
  56.          {   
  57.             //计算进度,并且设置文字进度和进度条的进度。   
  58.             var prog:Number = e.bytesLoaded/e.bytesTotal*100;   
  59.              progressText.text = "已下载 " + String(int(prog)) + "%";   
  60.             if(img)   
  61.              {   
  62.                  img.progress = prog;   
  63.              }   
  64.          }   
  65.            
  66.         private function compHandler(e:Event):void  
  67.          {   
  68.                
  69.          }   
  70.            
  71.         private function initCompleteHandler(e:FlexEvent):void  
  72.          {   
  73.             //如果载入完毕,则停止刷新   
  74.              img.ready = true;   
  75.              _timer.stop();   
  76.             //测试专用。下载完毕后,不马上跳到程序的默认界面。而是停顿10秒后再跳入。  
  77.             var timer:Timer = new Timer(10000, 1);   
  78.              timer.addEventListener(TimerEvent.TIMER, dispatchComplete);   
  79.              timer.start();   
  80.          }   
  81.            
  82.         private function initProgHandler(e:FlexEvent):void  
  83.          {   
  84.                
  85.          }   
  86.         /**
  87.           * 一定要分发这个事件,来通知程序已经完全下载,可以进入程序的默认界面了
  88.           */  
  89.         private function dispatchComplete(event:TimerEvent):void  
  90.          {   
  91.             this.dispatchEvent(new Event(Event.COMPLETE));   
  92.          }   
  93.         /**
  94.          * 每个时钟周期都刷新进度条图片
  95.          */  
  96.         private function drawTimerHandler(event:TimerEvent):void  
  97.          {   
  98.              img.refresh();   
  99.          }   
  100.   
  101.      }   
  102. }  

图片logo层的实现方式是

 

  1. package com.ibsol.view   
  2. {   
  3.     import flash.display.Loader;   
  4.     import flash.utils.ByteArray;   
  5.        
  6.     public class WelcomeLogo extends Loader   
  7.      {   
  8.          [Embed(source="assets/preloader.png", mimeType="application/octet-stream")]   
  9.         public var WelcomeScreenGraphic:Class;   
  10.         public function WelcomeLogo()   
  11.          {   
  12.             this.loadBytes(new WelcomeScreenGraphic() as ByteArray);   
  13.          }   
  14.   
  15.      }   
  16. }  
---------------------
分享到:
评论

相关推荐

    MediaTek PreLoader USB VCOM 驱动

    MediaTek PreLoader USB VCOM驱动是专为联发科(Mediatek)芯片组设计的一款重要驱动程序,它主要用于在Windows操作系统中建立USB通信接口,以便于开发者进行设备调试、固件升级或数据传输。VCOM(Virtual COM Port...

    mt65xx preloader 驱动

    MT65xx Preloader驱动是针对MediaTek MT65xx系列芯片组的一种关键软件组件,主要负责在Android设备启动过程中的初步加载任务。这个驱动扮演着连接硬件与操作系统的重要角色,确保设备能够正确识别和初始化硬件模块,...

    MediaTek PreLoader USB VCOM

    MediaTek PreLoader USB VCOM是联发科(MediaTek)为开发者和用户提供的一个关键组件,主要用于通过USB接口与MediaTek芯片组的设备进行通信。这个工具在Android设备的开发、调试、刷机等过程中起着至关重要的作用,...

    MTK6577+Android编译之preloader

    MTK6577+Android 编译之 Preloader Preloader 是 Android 系统启动过程中的一个重要组件,负责将 Android 内核加载到内存中。在 MTK6577+Android 编译过程中,preloader 的编译过程是非常关键的。下面我们来分析 ...

    MT6577+Android烧录了preloader之后无法启动和重新烧录系统问题与解决

    ### MT6577+Android烧录Preloader后无法启动及重烧系统的问题与解决方案 #### 背景概述 本文旨在探讨与解决基于MT6577平台的Android设备在烧录Preloader后遇到的启动失败及无法重新烧录系统的问题。MT6577是一款由...

    MediaTek_Preloader_USB_VCOM_Drivers_Setup_Signed

    MediaTek Preloader USB VCOM Drivers Setup Signed是一款专为MediaTek芯片组设计的USB通信驱动程序,主要用于手机、平板电脑和其他基于MTK平台的设备。这款驱动程序包含了预加载器(Preloader)和VCOM(虚拟串口...

    Windows 10 MTK VCOM USB Preloader Drivers.rar_MTK_USB_COM_Driver

    联发科刷机win10驱动, MTK = &quot;...MediaTek PreLoader USB VCOM Port&quot; MTK_SP_DA = &quot;MediaTek DA USB VCOM Port&quot; Serial.SvcDesc = &quot;USB Serial emulation modem driver&quot;

    preloader是一款小巧的jQuery页面预加载loading指示器插件

    **JavaScript开发:提示加载状态的库——preloader插件** 在网页设计中,用户体验是至关重要的因素之一。当用户点击一个链接或者启动一个资源密集型的操作时,他们往往期待能够看到一个反馈,告知他们页面正在加载...

    联发科MT65xx Preloader驱动+图文+安装说明 (1).zip

    Preloader驱动是Android操作系统在启动过程中加载的关键组件之一,尤其对于基于MT65xx平台的设备来说,正确安装和配置Preloader驱动至关重要。 Preloader驱动程序位于Android系统的引导流程早期阶段,它负责初始化...

    解决MT65xx Preloader 驱动问题(不用积分纯分享).zip

    MT65xx Preloader驱动问题通常出现在使用联发科(MediaTek)MT65XX系列芯片的设备上,这些问题可能阻碍设备的正常启动或导致数据恢复等操作失败。MTK,全称MediaTek Inc.,是一家全球知名的半导体公司,其生产的芯片...

    MTK通用驱动:解决MT65xx Preloader 驱动问题

    然而,用户在使用这些设备时可能会遇到各种驱动问题,特别是Preloader驱动问题。Preloader是操作系统加载前运行的一小段代码,它负责初始化硬件并为内核启动做好准备。当Preloader出现问题时,可能会导致设备无法...

    MediaTek PreLoader USB VCOM Port WIN10.zip

    MediaTek PreLoader USB VCOM Port驱动是专门为Mediatek芯片组设计的一款通信接口驱动程序,主要用于在Windows 10操作系统上实现USB与设备之间的虚拟串口通信(VCOM)。这个驱动程序包含了两个版本,分别是针对64位...

    MT65xx Android Phone、Preloader 驱动

    本主题主要关注两个关键的驱动部分:MT65xx Android Phone驱动和MT65xx Preloader驱动。 1. MT65xx Android Phone驱动 Android Phone驱动是Android系统中用于与MT65xx处理器交互的核心组件。它包括了对CPU、内存、I...

    Windows 10 MTK FLASH USB Preloader Drivers.zip

    标题中的“Windows 10 MTK FLASH USB Preloader Drivers”指的是专为Windows 10操作系统设计的MTK(MediaTek)手机刷机USB驱动程序。这些驱动程序是用于与MediaTek芯片组设备通信的关键组件,特别是在进行固件升级或...

    Windows 10_MTK VCOM USB Preloader Drivers.zip

    "Windows 10_MTK VCOM USB Preloader Drivers.zip"是一个压缩包,其中包含了在Windows 10上安装和使用MTK设备所需的关键驱动文件。这个驱动程序允许用户通过SN_write工具对使用MTK芯片的设备进行串行号(SN)的烧录...

    MT65XX-preloader驱动(Win7_64位)

    MT65XX-preloader驱动是针对Mediatek MT65XX系列处理器的设备所设计的一种关键驱动程序,尤其适用于Windows 7 64位操作系统。这个驱动的主要功能是为USB VCOM (Virtual COM Port)提供支持,它是Android设备在开发和...

    加载等待油污效果PreLoader

    "加载等待油污效果PreLoader"就是这样一个设计,旨在通过动态的视觉效果吸引用户的注意力,使他们在等待过程中不会感到厌烦。 PreLoader是一种专门用于在内容完全加载前展示的动画或图形,它以有趣的方式告诉用户...

    Windows_10_MTK_VCOM_USB_Preloader_Drivers_tehnotone.com.zip

    标题中的“Windows_10_MTK_VCOM_USB_Preloader_Drivers_tehnotone.com.zip”是一个压缩包文件,专门针对Windows 10操作系统提供MTK(MediaTek)VCOM USB Preloader驱动程序。这个驱动程序是为了解决与MediaTek芯片组...

    JavaFX学习之Preloader

    JavaFX学习之Preloader JavaFX是一个用于创建桌面和移动应用程序的开源图形用户界面(GUI)工具包,它提供了一套丰富的组件、动画效果以及强大的2D和3D图形支持。在开发大型JavaFX应用程序时,为了提升用户体验,...

Global site tag (gtag.js) - Google Analytics