我最近開始學習AS3,我決定用它製作一個投資組合網站。我正在加載關於我從外部XML文件創建的網站的信息。AS3 XML組合:圖像堆疊在彼此之上而不是被終止
它的所有工作都很好,但是當我將一張新照片加載到舞臺上時,前一張照片仍然存在,這在我的理解中應該不會發生。正如我從Adobe的AS3指南瞭解到的,一旦您創建了一個加載器的新實例,則應刪除前一個加載器。
我一直在找遍各地的解決方案,但我找不到一個工作。我嘗試使用.unload類,並嘗試removeChild,但它一直給我錯誤。
這裏是我一直在使用的代碼:
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.filters.*;
import flash.display.MovieClip;
import flash.events.MouseEvent;
var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();
xmlLoader.addEventListener(Event.COMPLETE, LoadXML);
xmlLoader.load(new URLRequest("portfolio.xml"));
function LoadXML(e:Event):void {
xmlData = new XML(e.target.data);
ParsePortfolio(xmlData);
}
function ParsePortfolio(siteInput:XML):void {
var titleList:XMLList = siteInput.Site.title;
var servicesList:XMLList = siteInput.Site.services;
var urlList:XMLList = siteInput.Site.url;
var picList:XMLList = siteInput.Site.picture;
var XX:Number = 0;
var titleElement:XML = titleList[XX];
var servicesElement:XML = servicesList[XX];
var urlElement:XML = urlList[XX];
var picElement:XML = picList[XX];
container_mc.title_txt.text = (titleElement);
container_mc.services_txt.text = (servicesElement);
var pictureNumber:String = picElement;
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest(pictureNumber));
container_mc.pictureFrame.addChild(my_loader);
next.addEventListener (MouseEvent.CLICK, NbuttonClicked);
prev.addEventListener (MouseEvent.CLICK, PbuttonClicked);
function NbuttonClicked(e:Event):void {
var t1:Tween = new Tween (container_mc, "alpha", Strong.easeOut, 1, 0, .2, true);
t1.addEventListener(TweenEvent.MOTION_FINISH, dropbomb);
function dropbomb() {
XX++;
if (XX == titleList.length()) {
XX = 0;
}
var titleElement:XML = titleList[XX];
var servicesElement:XML = servicesList[XX];
var urlElement:XML = urlList[XX];
var picElement:XML = picList[XX];
container_mc.title_txt.text = titleElement;
container_mc.services_txt.text = servicesElement;
var pictureNumber:String = picElement;
trace(pictureNumber);
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest(pictureNumber));
container_mc.pictureFrame.addChild(my_loader);
visit.addEventListener (MouseEvent.CLICK, VbuttonClicked);
function VbuttonClicked(e:Event):void {
navigateToURL(new URLRequest(urlElement), "_blank");
}
var t2:Tween = new Tween (container_mc, "alpha", Strong.easeOut, 0, 1, .2, true);
}
}
function PbuttonClicked(e:Event):void {
var t3:Tween = new Tween (container_mc, "alpha", Strong.easeOut, 1, 0, .2, true);
t3.addEventListener(TweenEvent.MOTION_FINISH, dropbomb);
function dropbomb() {
if (XX == 0)
{
XX = (titleList.length()) - 1;
}
else {XX--;}
var titleElement:XML = titleList[XX];
var servicesElement:XML = servicesList[XX];
var urlElement:XML = urlList[XX];
var picElement:XML = picList[XX];
container_mc.title_txt.text = titleElement;
container_mc.services_txt.text = servicesElement;
var pictureNumber:String = picElement;
var my_loader:Loader = new Loader();
my_loader.load(new URLRequest(pictureNumber));
visit.addEventListener (MouseEvent.CLICK, VbuttonClicked);
function VbuttonClicked(e:Event):void {
navigateToURL(new URLRequest(urlElement), "_blank");
}
var t4:Tween = new Tween (container_mc, "alpha", Strong.easeOut, 0, 1, .2, true);
}
}
}
電影剪輯被手動添加到舞臺上。我不知道這是造成這個問題還是它完全不相關。
更具體地說,雖然container_mc淡出,但您可以看到上圖顯示它們正在堆疊而不是被替換。
我真的很感謝一些幫助,至少我想知道我做錯了什麼,並指出正確的方向。
我很抱歉沒有注意的代碼和愚蠢的問題,但我真的看了很多答案,我找到了關於創建XML幻燈片的教程,至今沒有任何幫助。
避免所有這些嵌套函數,你問一個頭疼的時候,你需要檢討在未來這段代碼。 – ocodo 2011-02-13 21:18:20
謝謝你的建議,我已經在處理一些頭疼的問題了:P,我一直想要修復這些代碼,但是我在等我解決這個問題之前,先要解決這個問題。 – Nuriel 2011-02-13 21:33:30