从RIACHINA转来的
原文地址:
http://bbs.airia.cn/FLEX/thread-3292-1-1.aspx
效果浏览
http://www.dragonoffspring.cn/preloader/flexpreloaderexample.html
呵呵,看着Jesse Warden的教程来做的
http://jessewarden.com/2007/07/making-a-cooler-preloader-in-flex-part-1-of-3.html
flash里输出的swf实例控制在6k以内,很轻量的。基本不会出现载入preloader时间长的问题。
preloader.as的源码如下,至于swf的fla源文件,可以去Jesse Warden的那个教程里下来自己改动。
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
/**
* This class extends the lightweight DownloadProgressBar class. This class
* uses an embedded Flash 8 MovieClip symbol to show preloading.
*
* @author jessewarden
*
*/
public class Preloader extends DownloadProgressBar
{
/**
* The Flash 8 MovieClip embedded as a Class.
*/
[Embed(source="/assets/flash/myPreloader.swf", symbol="Preloader")]
private var FlashPreloaderSymbol:Class;
private var clip:MovieClip;
private var _preloader:Sprite;
public function Preloader()
{
super();
// instantiate the Flash MovieClip, show it, and stop it.
// Remember, AS2 is removed when you embed SWF's,
// even "stop();", so you have to call it manually if you embed.
this.clip = new FlashPreloaderSymbol();
this.addChild(clip);
this.clip.gotoAndStop("start");
}
public override function set preloader(preloader:Sprite):void
{
preloader.addEventListener( ProgressEvent.PROGRESS , onSWFDownloadProgress );
preloader.addEventListener( Event.COMPLETE , onSWFDownloadComplete );
preloader.addEventListener( FlexEvent.INIT_PROGRESS , onFlexInitProgress );
preloader.addEventListener( FlexEvent.INIT_COMPLETE , onFlexInitComplete );
stage.addEventListener(Event.RESIZE, centerPreloader);
_preloader = preloader;
centerPreloader();
}
/**
* Makes sure that the preloader is centered in the center of the app.
*
*/
private function centerPreloader(event:Event = null):void
{
var adjust_X:Number = 300; // X coodinate adjustion according to Object layout.
var adjust_Y:Number = 500; // Y coodinate adjustion according to Object layout.
x = ((stage.stageWidth+adjust_X) / 2) - (clip.width / 2);
y = ((stage.stageHeight+adjust_Y) / 2) - (clip.height / 2);
}
/**
* As the SWF (frame 2 usually) downloads, this event gets called.
* You can use the values from this event to update your preloader.
* @param event
*
*/
private function onSWFDownloadProgress( event:ProgressEvent ):void
{
var t:Number = event.bytesTotal;
var l:Number = event.bytesLoaded;
var p:Number = Math.round( (l / t) * 100);
clip.preloader.gotoAndStop(p);
clip.preloader.amount_txt.text = String(p);
clip.preloader.amount_txt_img.text = String(p);
}
/**
* When the download of frame 2
* is complete, this event is called.
* This is called before the initializing is done.
* @param event
*
*/
private function onSWFDownloadComplete( event:Event ):void
{
clip.preloader.gotoAndStop(100);
clip.preloader.amount_txt.text = "100";
clip.preloader.amount_txt_img.text = "100";
}
/**
* When Flex starts initilizating your application.
* @param event
*
*/
private function onFlexInitProgress( event:FlexEvent ):void
{
clip.preloader.gotoAndStop(100);
clip.preloader.amount_txt.text = "Init...";
}
/**
* When Flex is done initializing, and ready to run your app,
* this function is called.
*
* You're supposed to dispatch a complete event when you are done.
* I chose not to do this immediately, and instead fade out the
* preloader in the MovieClip. As soon as that is done,
* I then dispatch the event. This gives time for the preloader
* to finish it's animation.
* @param event
*
*/
private function onFlexInitComplete( event:FlexEvent ):void
{
_preloader.removeEventListener( ProgressEvent.PROGRESS , onSWFDownloadProgress );
_preloader.removeEventListener( Event.COMPLETE , onSWFDownloadComplete );
_preloader.removeEventListener( FlexEvent.INIT_PROGRESS , onFlexInitProgress );
_preloader.removeEventListener( FlexEvent.INIT_COMPLETE , onFlexInitComplete );
stage.removeEventListener(Event.RESIZE, centerPreloader);
clip.addFrameScript(21, onDoneAnimating);
clip.gotoAndPlay("fade out");
}
/**
* If the Flash MovieClip is done playing it's animation,
* I stop it and dispatch my event letting Flex know I'm done.
* @param event
*
*/
private function onDoneAnimating():void
{
clip.stop();
dispatchEvent( new Event( Event.COMPLETE ) );
}
}
}
分享到:
相关推荐
Flex扇形Loading是一种在Flex应用中实现的自定义加载指示器,它提供了更加美观和动态的用户体验,替代了默认的加载动画。这种加载效果通常采用扇形或环形的进度条设计,使得用户能够直观地看到加载过程的进度。本文...
flex中文帮助flex中文帮助flex中文帮助flex中文帮助
在Flex中,ActionScript用于编写业务逻辑和处理用户交互。 4. **Flex组件** Flex提供了大量预定义的UI组件,如按钮、标签、列表、面板等,开发者可以通过这些组件快速搭建用户界面。每个组件都有丰富的属性和方法...
1. 创建项目:在Flex Builder或Adobe Animate CC中创建新项目,选择目标平台(如Flash Player或Adobe AIR)。 2. 设计界面:使用MXML或ActionScript创建组件,定义界面布局。 3. 编写业务逻辑:在ActionScript中编写...
8. **Adobe AIR**:除了Web应用,Flex还可以用来开发桌面应用,借助Adobe AIR(Adobe Integrated Runtime),Flex应用可以脱离浏览器,在用户的桌面上独立运行。 9. **调试和测试**:Flex SDK包含了Flex Builder,...
Flex是Adobe公司推出的一种用于构建富互联网应用程序(Rich Internet Applications,简称RIA)的开发框架。Flex以其强大的功能和丰富的用户...在不断发展的互联网世界中,掌握Flex技术将为你的职业生涯增添更多可能性。
在本压缩包"Flex_help"中,你将找到全面的Flex中文帮助文档,这对于正在学习或使用Flex的开发者来说是一份宝贵的资源。 Flex的主要组件包括Flex Builder(现已更名为Flash Builder)、Flex SDK以及Flex Framework。...
Flex是Adobe公司开发的一种用于...总结,Flex中文教程与实例是学习和提升Flex开发能力的重要资源,它全面介绍了Flex的各个方面,并通过实践案例加深理解,对于希望在RIA领域发展的开发者来说,是不可或缺的学习材料。
- **Eclipse插件**:除了使用Flex Builder之外,还可以在Eclipse中安装Flex插件来进行开发。 #### 四、Flex开发语言介绍 - **ActionScript 3.0**:一种面向对象的编程语言,用于控制应用程序的行为逻辑,如事件处理...
7. **事件处理**:在Flex中,事件是组件间通信的主要方式。通过监听和响应事件,开发者可以控制应用的行为,实现用户交互。 8. **Services和Remoting**:Flex支持通过AMF(Action Message Format)进行数据交换,...
这将帮助你理解Flex在RIA开发中的重要性。 2. **ActionScript与MXML**:ActionScript是Flex的主要编程语言,而MXML则是一种用于构建用户界面的标记语言。教程会深入解释这两种语言的语法、特点以及它们如何协同工作...
在Flex中,这两者可以无缝结合,提供高效的开发体验。 在Flex中文参考手册中,你可以找到关于以下关键知识点的详细信息: 1. **组件库**:Flex提供了丰富的组件集合,包括按钮、文本框、列表、面板等,这些组件都...
在Flex4中,ActionScript3(AS3)是主要的编程语言,与Flex SDK紧密集成。AS3是ECMAScript的一个子集,拥有更强大的面向对象特性,如类、接口、包和命名空间,这使得它在构建复杂应用程序时更为高效。Flex4中文API...
1. **Flex概述**:Flex是一个开源的开发框架,主要用于构建在Web浏览器上运行的动态、交互式的应用程序。它提供了丰富的用户界面组件库,可以创建出具有高度互动性和视觉吸引力的网页应用。 2. **ActionScript**:...
在IT行业中,Flex是一种基于ActionScript 3.0和Flash Player的开源框架,主要用于构建富互联网应用程序(RIA)。它提供了一种强大的方式来创建交互式的、动态的Web内容。而"flex中的iframe源码"指的是在Flex环境中...
在本案例中,"flex柱状图表很漂亮的源码"指的是使用Flex技术创建的,具有美观视觉效果的柱状图表。这种图表通常用于数据可视化,帮助用户直观地理解大量信息。 柱状图是一种常见的统计图表类型,它通过矩形的高度或...
flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助文档flex 中文帮助...
在MyEclipse集成开发环境中搭建Flex工程,可以让开发者享受到强大的代码编辑、调试和部署支持。以下是详细步骤及相关的知识点: 1. **安装MyEclipse**: 首先确保已经安装了MyEclipse,这是一款功能丰富的Java EE...
flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex iframe 支持在flash中嵌套入html jsp asp php等flex...