namespace D
  • Home
  • kirikiri
    • Tools >
      • THE NVL Maker >
        • New Game
        • New Site
      • THE Rensei Koubou
      • KAGConfigEX2
    • Sample Games >
      • Rclick Menu Sample
      • Transition & Action Sample
      • Rock, paper, scissors
      • Item Sample
    • Plugins >
      • MultiEditLayer.tjs
      • YesNoDialog.tjs
      • AnimPlayer.ks
      • TimeFrame.ks
      • PicScroller.ks
    • Notes >
      • SliderLayer
      • pimage/templayer
      • incontextof
      • Video
      • layerExSave.dll
      • gfxEffect.dll
      • KAGEXSytleButtons
      • TextEffect
    • Reference
  • Visual C# & Unity
    • Source Code
    • Reference
  • Flash & HTML5
    • Note project
    • Note MovieClip & Transition
    • Note Loading Bar
    • Reference
  • Novel
  • Diary

as3里的自制loading条

代码参考: http://blog.csdn.net/liminxin272/article/details/5898370 
不过上面这个并不适用于全部由代码组成的flash文件的自身加载。
虽然有看到其他范例,但是实在太麻烦了。
想了想最快的办法应该是单独做一个loading.swf用来载入主文件。
于是花了一晚上弄了一下……
其实这样分开写其实也挺爽的。
再也不用担心那些素材会不会自动在第一帧导出之类的2B问题了。
(你看,我也被as3整出斯德哥尔摩综合征了……)
PS:loading.swf和主swf文件以及调用loading.swf的html文件放在同一个文件夹下的这种情况,本地和网页测试都成功了。
但是子文件夹之类的(比如写成"./main.swf"之类)就没试过了。
对被html文件加载的loading.swf来说,它的根目录究竟是html所在的目录,还是它自己所在的目录呢……迷。=_=b

loading.swf(第一帧代码)

import flash.events.Event;
import flash.events.ProgressEvent;

//创建LOADING用MC
var loadclip:MovieClip=new MovieClip();
//添加loadclip到舞台
addChild(loadclip);

var stageW=stage.stageWidth;
var stageH=stage.stageHeight;

//进度文字
var txt:TextField=new TextField();
txt.selectable=false;


 //自定义文字样式
var format:TextFormat = new TextFormat();
format.font="Verdana";
format.color = 0x003300;
format.size = 20;

txt.defaultTextFormat = format;
//自动调整文本框大小,避免字体显示不全
txt.autoSize=TextFieldAutoSize.CENTER;
txt.x=stageW/2-txt.width/2;
txt.y=stageH/2-txt.height/2;
loadclip.addChild(txt);

//绘制进度条底色并且添加到loadclip 
var stgb=new Sprite();
//边框颜色
stgb.graphics.lineStyle(1,0x666666,1);
stgb.graphics.drawRect(0,0,302,25);
stgb.graphics.endFill();

stgb.x=stageW/2-stgb.width/2;
stgb.y=txt.y+35;

loadclip.addChild(stgb);

//绘制进度条并且添加到loadclip 
var stg=new Sprite();
stg.graphics.lineStyle(1,0x000000,0);
stg.graphics.beginFill(0x003300,.8);
stg.graphics.drawRect(0,1,300,24);
stg.graphics.endFill();
stg.x=stageW/2-stg.width/2;
stg.y=txt.y+35;
loadclip.addChild(stg)


var my_Loader:Loader;

my_Loader = new Loader();
my_Loader.load(new URLRequest("main.swf")); //这里是原swf文件的名字,也可以写成URL什么的,但是可能会被墙……

my_Loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
my_Loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loader_progress);

//加载中途
function loader_progress(e:ProgressEvent)
{
var loadpre:int=e.bytesLoaded/e.bytesTotal*100;
    txt.text="Loading "+loadpre+" %";
    stg.scaleX=loadpre/100;
}
//加载完成后
function loader_complete(e:Event)
{
trace("加载完成");
addChild(my_Loader);
 }
Powered by Create your own unique website with customizable templates.