2011年1月8日 星期六

Chuk-Portfolio_網頁程式A

網頁程式部分 是用AS3.0製作
想說沒啥基礎 要用就直接從AS3.0開始吧
這個決定 使得製作時間更長了
因為大部分的教學 都還是在AS2.0
所以碰到一點問題就會卡半天
而起初碰到的大關卡
就是網頁過場 需要 LOADING SWF的問題

比如我想要 在A.swf時 按下B鈕時 會先LOADING Z.swf 跑完後 再 LOADING B.swf 進來
在B.swf時 按下A鈕時 會先LOADING Z.swf 跑完後 再 LOADING A.swf 進來

這後來請教大師 說要寫陣列的程式 程式大約如下(現在看已經有給他忘光了):

////////////////////////////////////////////////////////////////////////

var HOME:Loader = new Loader();
var swfArray : Array = new Array('Z.swf', 'B.swf');
var swfIndex : int = 0;
HOME.contentLoaderInfo.addEventListener(Event.COMPLETE,loadSWFListener);
LOADER_mc.addChild(HOME);

home_btn.addEventListener(MouseEvent.CLICK,LOADHOME);

function LOADHOME (e : MouseEvent):void{
loadSWF();
}
function loadSWF():void {
HOME.load(new URLRequest(swfArray[swfIndex]));
swfIndex += 1;
}
function loadSWFListener (e:Event):void{
var _mc : Loader = e.target as Loader;
addEventListener(Event.ENTER_FRAME, myEnterFrame);
}

function myEnterFrame (e:Event):void{
trace(HOME.contentLoaderInfo.url);
var _mc : MovieClip = HOME.content as MovieClip;
if (_mc.movie_mc.currentFrame == _mc.movie_mc.totalFrames){
if (swfIndex == swfArray.length){
swfIndex = 0;
} else {
loadSWF();
}
removeEventListener(Event.ENTER_FRAME, myEnterFrame);
}
}

///////////////////////////////////////////////////////////////////

但實驗的結果 發現當 LOADING Z.swf 跑完後要接上 LOADING B.swf 進來的中間
會閃出原來 A.swf 這底圖出來 才會 LOADING B.swf
這效果無法解決

而且後來發現 工具書教你用 new Loader 這指令
在硬碟中 你的網頁可以跑得很順
但放到網路上 由於需要下載 所以會有讀取時間
這點我翻了不少工具書都沒提到

由於中間有停頓 就不是我要的效果
所以後來還是用最土法煉鋼的方式
把所有的主頁面 次頁面 都放在同一個場景
再下指令來切換的方式作完成
為什麼一開始不用這個方式
是因為怕檔案太大 會讀取太久
不過作下來4.2MB 也還好
作品部分 再用new Loader 就好

這裡記錄一下 讀取的寫法

///////////////////////////////////////////////////////////////////

new_btn.addEventListener(MouseEvent.CLICK,LOAD_new);
function LOAD_new(event:MouseEvent)
{var request:URLRequest = new URLRequest("NEW_mc.swf");
var loader_new:Loader = new Loader();
var loadText_new:TextField=new TextField();
loader_new.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loadProgress_new);
loader_new.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete_new);
function loadProgress_new(event:ProgressEvent):void {
var percentLoaded:Number = event.bytesLoaded/event.bytesTotal;
percentLoaded = Math.round(percentLoaded * 100);
trace("Loading: "+percentLoaded+"%");
loadText_new.textColor=0xFFFFFF
loadText_new.x=480;
loadText_new.y=320;
loadText_new.text="Loading: "+percentLoaded+"%"
}

function loadComplete_new(event:Event):void {

trace("Complete");
removeChild(loadText_new);
}

addChild(loadText_new);

loader_new.load(request);

LOADER_mc.addChild(loader_new);}

///////////////////////////////////////////////////////////////////

這些程式都不是我寫的 都是網路上找來的
所以 大致上都忘光光了~~

沒有留言: