2009 年 06 月 25 日 00:23:28 (L4CD.NET) / /
今天又来介绍Loading...(-_-!!!...好像整天都介绍Loading..希望没误导各位...)
首先..由于AS工程没有帧..所以不能用常用的方法来做Loading..
这里介绍的方法使用元标签Frame(应该是元标签吧?还是叫元数据标签)
网上对Frame的介绍是...使用指定的类替换文档类...
并把其它的东西都丢到了该类的第二帧...
概念就不多说了...英文好的可以看看这个文章...http://www.bit-101.com/blog/?p=946
先看看效果..(PS...Load完以后有CD的艳照喔...~~xixi);
查看文章剩余部份
2008 年 09 月 19 日 11:34:31 (L4CD.NET) / /
这个方法网上已经有人写过例子...
在这里我只是自己做个实例并记录一下..
首先~自定义Flex加载的原理其实就是继承mx.preloaders.DownloadProgressBar类..然后重写相关的方法..
package
{
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.TextField;
import flash.text.TextFormat;
import mx.events.FlexEvent;
import mx.preloaders.DownloadProgressBar;
public class LoadingExampleProgressBar extends DownloadProgressBar
{
private var logo:Loader;
private var txt:TextField;
private var _preloader:Sprite;
public function LoadingExampleProgressBar()
{
logo = new Loader();
logo.load(new URLRequest("l4cd.png"));
addChild(logo);
var style:TextFormat = new TextFormat(null,null,0xFFFFFF,null,null,null,null,null,"center");
txt = new TextField();
txt.defaultTextFormat = style;
txt.width = 200;
txt.selectable = false;
txt.height = 20;
addChild(txt);
super();
}
//最重要的代码就在这里..重写preloader,让swf执行加载的时候~进行你希望的操作~
override public function set preloader(value:Sprite):void{
_preloader = value
//四个侦听~分别是 加载进度 / 加载完毕 / 初始化进度 / 初始化完毕
_preloader.addEventListener(ProgressEvent.PROGRESS,load_progress);
_preloader.addEventListener(Event.COMPLETE,load_complete);
_preloader.addEventListener(FlexEvent.INIT_PROGRESS,init_progress);
_preloader.addEventListener(FlexEvent.INIT_COMPLETE,init_complete);
stage.addEventListener(Event.RESIZE,resize)
resize(null);
}
private function remove():void{
_preloader.removeEventListener(ProgressEvent.PROGRESS,load_progress);
_preloader.removeEventListener(Event.COMPLETE,load_complete);
_preloader.removeEventListener(FlexEvent.INIT_PROGRESS,init_progress);
_preloader.removeEventListener(FlexEvent.INIT_COMPLETE,init_complete);
stage.removeEventListener(Event.RESIZE,resize)
}
private function resize(e:Event):void{
logo.x = (stage.stageWidth - 40)/2;
logo.y = (stage.stageHeight - 80)/2;
txt.x = (stage.stageWidth - 200)/2;
txt.y = logo.y + 40+5;
graphics.clear();
graphics.beginFill(0x333333);
graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
graphics.endFill();
}
private function load_progress(e:ProgressEvent):void{
txt.text = "正在加载..."+int(e.bytesLoaded/e.bytesTotal*100)+"%";
}
private function load_complete(e:Event):void{
txt.text = "加载完毕!"
}
private function init_progress(e:FlexEvent):void{
txt.text = "正在初始化..."
}
private function init_complete(e:FlexEvent):void{
txt.text = "初始化完毕!"
remove()
//最后这个地方需要dpe一个Event.COMPLETE事件..表示加载完毕让swf继续操作~
dispatchEvent(new Event(Event.COMPLETE))
}
}
}
自定义了加载类后..我们新建一个app测试一下..
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
preloader="LoadingExampleProgressBar"
backgroundGradientAlphas="[1.0, 1.0]" backgroundGradientColors="[#333333, #333333]">
</mx:Application>
//请自行增加一“大”体积的东西..必放到网上去测试...
相关源码 (142.0 KiB, 520 hits)
2008 年 05 月 19 日 03:06:59 (L4CD.NET) / /
制作loadin最少需要两帧,这是需要注意的地方,了解loading原理的朋友应该知道.
第一帧为loading动画
第二帧后为你的内容
下面的代码假设flash有两帧:
一开始的时候自动停止第一帧,然后进行loading操作,
需要显示进度可以在loadProgress里写你需要的操作,
加载完后自己跳到第二帧,并停止,
注意的是在main函数里,使用了addFrameScript给动画的第二帧添加了stop()代码,
这里不是必须的,addFrameScript是一个隐藏函数,这里只是测试一下(ps一下,addFrameScript中,前面是帧数,后面是要加载的函数,帧数是从0开始的).
查看文章剩余部份