loader 主体:
package com.dihtech.regionalhealth.healthrecord.personalhealthrecord.compoments
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.events.TimerEvent;
import flash.text.TextField;
import flash.utils.Timer;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
public class Preloader extends DownloadProgressBar
{
//显示进度的文字
private var progressText:TextField;
//进度条
public var img:WelcomeScreen;
//logo页面
public var logo:WelcomeLogo;
private var _timer:Timer;
public function Preloader()
{
super();
//加入logo
logo = new WelcomeLogo();
logo.x=100;
this.addChild(logo);
//加入进度条
img = new WelcomeScreen();
this.addChild(img);
//加入进度文字
progressText = new TextField();
progressText.x = 40;
progressText.y = 90;
this.addChild(progressText);
//进度条计时器初始化,我们实现进度条的原理就是不停的刷新进图条图片
//因为每次进度条的长度不同,所以就有进度条在走的效果
_timer = new Timer(1);
_timer.addEventListener(TimerEvent.TIMER, drawTimerHandler);
_timer.start();
}
/**
* override这个函数,来实现自己Preloader的设置,而不是用其默认的设置
*/
override public function set preloader(value:Sprite):void
{
value.addEventListener(ProgressEvent.PROGRESS, progHandler);
value.addEventListener(FlexEvent.INIT_COMPLETE, initCompleteHandler1);
//在这里设置预载界面居中
//如果在初始化函数中设置,会有stageWidth和最终界面大小不一致的错误,而导致不能居中
x = (stageWidth/2) - (300/2);
y = (stageHeight/2) - (180/2);
}
private function progHandler(e:ProgressEvent):void
{
//计算进度,并且设置文字进度和进度条的进度。
var prog:Number = e.bytesLoaded/e.bytesTotal*100;
progressText.text = "已下载 " + String(int(prog)) + "%";
if(img)
{
img.progress = prog;
}
}
private function compHandler(e:Event):void
{
}
public function initCompleteHandler1(e:FlexEvent):void
{
//如果载入完毕,则停止刷新
img.ready = true;
_timer.stop();
//测试专用。下载完毕后,不马上跳到程序的默认界面。而是停顿10秒后再跳入。
// var timer:Timer = new Timer(10000, 1);
// timer.addEventListener(TimerEvent.TIMER, dispatchComplete);
// timer.start();
this.dispatchEvent(new Event(Event.COMPLETE));
}
private function initProgHandler(e:FlexEvent):void
{
}
/**
* 一定要分发这个事件,来通知程序已经完全下载,可以进入程序的默认界面了
*/
private function dispatchComplete(event:TimerEvent):void
{
this.dispatchEvent(new Event(Event.COMPLETE));
}
/**
* 每个时钟周期都刷新进度条图片
*/
private function drawTimerHandler(event:TimerEvent):void
{
img.refresh();
}
}
}
picture logo:
package com.dihtech.regionalhealth.healthrecord.personalhealthrecord.compoments
{
import flash.display.Loader;
import flash.utils.ByteArray;
public class WelcomeLogo extends Loader
{
[Embed(source="com/dihtech/regionalhealth/healthrecord/personalhealthrecord/assets/images/preloader.jpg", mimeType="application/octet-stream")]
public var WelcomeScreenGraphic:Class;
public function WelcomeLogo()
{
this.loadBytes(new WelcomeScreenGraphic() as ByteArray);
}
}
}
loader 主体:
package com.dihtech.regionalhealth.healthrecord.personalhealthrecord.compoments
{
import flash.display.BitmapData;
import flash.display.Graphics;
import flash.display.Loader;
import flash.display.Sprite;
import flash.utils.ByteArray;
import mx.graphics.codec.PNGEncoder;
public class WelcomeScreen extends Loader
{
//辅助属性,帮助进行进度条的定位
private static var _LogoWidth:int = 300;
private static var _LogoHeight:int = 180;
private static var _LeftMargin:int = 5;
private static var _RightMargin:int = 5;
private static var _TopMargin:int = 1;
private static var _BottomMargin:int = 1;
private static var _Padding:int = -60;
//Progress bar settings
//进度条的设定,比如显色边框等
private static var _BarWidth:int = 200;
private static var _BarHeight:int = 12;
private static var _BarBackground:uint = 0xFFFFFF;
private static var _BarOuterBorder:uint = 0x737373;
private static var _BarColor:uint = 0x6F9FD5;
private static var _BarInnerColor:uint = 0xFFFFFF;
private var isReady:Boolean = false;
public var progress:Number;
private var _logoData : BitmapData;
public function WelcomeScreen()
{
//this.loadBytes(new WelcomeScreenGraphic() as ByteArray);
}
override public function get width() : Number
{
return Math.max(_BarWidth, _LogoWidth) + _LeftMargin + _RightMargin;
}
override public function get height() : Number
{
return _LogoHeight + _BarHeight + _Padding + _TopMargin + _BottomMargin;
}
/**
* 进度载入完毕后,隐藏进度条
*/
public function set ready(value : Boolean) : void
{
this.isReady = value;
this.visible = !this.isReady;
}
public function get ready() : Boolean { return this.isReady; }
/**
* 刷新函数,每个时钟周期都被调用的函数
*/
public function refresh():void
{
_logoData = this.drawProgressBar();
var encoder:PNGEncoder = new PNGEncoder();
this.loadBytes(encoder.encode(_logoData));
}
/**
* 进度条生成函数
*/
private function drawProgressBar():BitmapData
{
// create bitmap data to create the data
var data : BitmapData = new BitmapData(this.width, this.height, true, 0);
// draw the progress bar
var s:Sprite = new Sprite();
var g:Graphics = s.graphics;
// draw the bar background
g.beginFill(_BarBackground);
g.lineStyle(2, _BarOuterBorder, 1, true);
var px : int = (this.width - _BarWidth) / 2;
var py : int = _TopMargin + _LogoHeight + _Padding;
g.drawRoundRect(px, py, _BarWidth, _BarHeight, 2);
var containerWidth : Number = _BarWidth - 4;
var progWidth:Number = containerWidth * this.progress / 100;
g.beginFill(_BarColor);
g.lineStyle(1, _BarInnerColor, 1, true);
//根据progress进度,来画出进度条的长度
g.drawRect(px + 1, py + 1, progWidth, _BarHeight - 3);
data.draw(s);
return data;
}
}
}
发表评论
-
Flex组件的一些怪问题
2010-08-13 17:55 1021Flex组件的一些怪问题 ... -
tree 单击节点,打开
2010-07-27 13:36 1044var item:Object=Tree(event.c ... -
bitmap,bitmapdata截图
2010-07-09 11:33 1324<?xml version="1.0&q ... -
flex 画虚线
2010-06-30 11:25 1070转:http://dxm1986.iteye.com/blog ... -
flex 特效
2010-06-29 16:36 1137flex特效 [ 20 ... -
textinput restrict
2010-06-17 20:10 1076Flex TextInput 禁止输入特殊字符 < ... -
flex 加载 bmp图片
2010-06-06 10:17 1899<?xml version="1.0& ... -
tooltip巧妙
2010-06-03 17:11 780<?xml version="1.0&qu ... -
flex httpservice 读缓存
2010-06-02 09:36 1046发现谷歌浏览器器也读缓存 没办法 req.url=&q ... -
datagrid显示tooltip方法
2010-05-28 17:19 1308在DataGrid上显示toolTip &l ... -
flex tabnavigator 事件
2010-05-20 09:16 1546最近用到TabNavigator,想在那个tabBar上点 ... -
改变Flex DataGrid 行的背景色
2010-05-18 21:04 1625首先写自定义类 继承自DataGrid package ... -
Adobe AIR应用案例128例
2010-05-18 21:01 680http://www.cnblogs.com/xxcainia ... -
flex 缓冲函数
2010-05-18 20:58 824http://fleksray.org/skins/treec ... -
includelayout 属性
2010-05-18 19:19 919一直被这个问题困扰,就是在设置UI的Visible的时候, ... -
destroyItemEditor
2010-05-17 16:37 815var dg:DataGrid=event.currentTa ... -
cairgorm 详解
2010-05-12 21:27 844转载: http://houwei.iteye.com/bl ... -
flex combobox datagrid
2010-05-06 20:18 908<?xml version="1.0" ... -
flex 自定义控件 用 checkbox
2010-05-06 20:16 1366Flex : 用 CheckBox 做 DataGrid ... -
checkbox radiobutton 提交表单
2010-04-29 14:44 1061<?xml version="1.0&q ...
相关推荐
MediaTek PreLoader USB VCOM是联发科(MediaTek)为开发者和用户提供的一个关键组件,主要用于通过USB接口与MediaTek芯片组的设备进行通信。这个工具在Android设备的开发、调试、刷机等过程中起着至关重要的作用,...
MediaTek PreLoader USB VCOM驱动是专为联发科(Mediatek)芯片组设计的一款重要驱动程序,它主要用于在Windows操作系统中建立USB通信接口,以便于开发者进行设备调试、固件升级或数据传输。VCOM(Virtual COM Port...
MT65xx Preloader驱动是针对MediaTek MT65xx系列芯片组的一种关键软件组件,主要负责在Android设备启动过程中的初步加载任务。这个驱动扮演着连接硬件与操作系统的重要角色,确保设备能够正确识别和初始化硬件模块,...
MTK6577+Android 编译之 Preloader Preloader 是 Android 系统启动过程中的一个重要组件,负责将 Android 内核加载到内存中。在 MTK6577+Android 编译过程中,preloader 的编译过程是非常关键的。下面我们来分析 ...
**JavaScript开发:提示加载状态的库——preloader插件** 在网页设计中,用户体验是至关重要的因素之一。当用户点击一个链接或者启动一个资源密集型的操作时,他们往往期待能够看到一个反馈,告知他们页面正在加载...
MediaTek Preloader USB VCOM Drivers Setup Signed是一款专为MediaTek芯片组设计的USB通信驱动程序,主要用于手机、平板电脑和其他基于MTK平台的设备。这款驱动程序包含了预加载器(Preloader)和VCOM(虚拟串口...
"加载等待油污效果PreLoader"就是这样一个设计,旨在通过动态的视觉效果吸引用户的注意力,使他们在等待过程中不会感到厌烦。 PreLoader是一种专门用于在内容完全加载前展示的动画或图形,它以有趣的方式告诉用户...
### MT6577+Android烧录Preloader后无法启动及重烧系统的问题与解决方案 #### 背景概述 本文旨在探讨与解决基于MT6577平台的Android设备在烧录Preloader后遇到的启动失败及无法重新烧录系统的问题。MT6577是一款由...
MT65xx Preloader驱动问题通常出现在使用联发科(MediaTek)MT65XX系列芯片的设备上,这些问题可能阻碍设备的正常启动或导致数据恢复等操作失败。MTK,全称MediaTek Inc.,是一家全球知名的半导体公司,其生产的芯片...
然而,用户在使用这些设备时可能会遇到各种驱动问题,特别是Preloader驱动问题。Preloader是操作系统加载前运行的一小段代码,它负责初始化硬件并为内核启动做好准备。当Preloader出现问题时,可能会导致设备无法...
JavaFX学习之Preloader JavaFX是一个用于创建桌面和移动应用程序的开源图形用户界面(GUI)工具包,它提供了一套丰富的组件、动画效果以及强大的2D和3D图形支持。在开发大型JavaFX应用程序时,为了提升用户体验,...
mt65xx preloader是一个mt65xx刷机的USB驱动程序,包含usb2ser.sys、usb2ser_xp.cat、usb2ser_xp.inf、WdfCoInstaller01009.dll驱动文件,需要刷机的朋友应该会用的到的,mt65xx preloader驱动怎么安装1、你先让手机...
MT65xx Preloader驱动是针对基于MediaTek MT65xx系列芯片的设备的重要组成部分,主要负责在Android系统启动过程中的初期加载任务。这个预加载器(Preloader)是固件的一部分,它在操作系统内核启动之前运行,扮演着...
联发科刷机win10驱动, MTK = "...MediaTek PreLoader USB VCOM Port" MTK_SP_DA = "MediaTek DA USB VCOM Port" Serial.SvcDesc = "USB Serial emulation modem driver"
MediaTek PreLoader USB VCOM Port驱动是专门为Mediatek芯片组设计的一款通信接口驱动程序,主要用于在Windows 10操作系统上实现USB与设备之间的虚拟串口通信(VCOM)。这个驱动程序包含了两个版本,分别是针对64位...
WIN7、Windows7系统,提示安装设备驱动程序,接着显示:MT65xx Preloader 安装失败,未能成功安装设备驱动程序,请向设备制造商咨询以获取安装此设备的帮助。 方法:在出现上述错误提示后。解压Win7_usb_for_MTK_...
美丽的Flex Preloader控件,页面预加载效果 美丽的Flex Preloader控件,页面预加载效果 美丽的Flex Preloader控件,页面预加载效果 美丽的Flex Preloader控件,页面预加载效果
在Android应用开发中,"PreLoader demo"是一个用于优化页面启动速度的技术实例。它通过预加载数据并在界面布局初始化完成后展示这些数据,从而提供更流畅的用户体验。在描述中提到的关键点是Handler机制中的...
本主题主要关注两个关键的驱动部分:MT65xx Android Phone驱动和MT65xx Preloader驱动。 1. MT65xx Android Phone驱动 Android Phone驱动是Android系统中用于与MT65xx处理器交互的核心组件。它包括了对CPU、内存、I...