2012-11-06 32 views
0

這個問題一直在推動我在牆上呆了幾個月。我想不通,爲什麼我的背景在我的網站:as3幻燈片將不會加載

www.the-ruck.us

不正常加載。

我知道代碼的作品,因爲當我在我的電腦上運行它時,一切正常。但是,當我將它發佈到網上並瀏覽到我的頁面時,幻燈片顯示只是空白。

這裏的API爲XMLLoader類我用

下面的代碼:

var slideshowXMLLoader:XMLLoader = new XMLLoader("slideshow.xml", {autoDispose:true, onComplete:LoadXML}); 

slideshowXMLLoader.load(); 

function LoadXML(e:Event) { 
     slideshowXML = new XML(e.target.content); 
     parse(slideshowXML); 
} 

function parse(ssXML:XML) { wallpaperLinks = slideshowXML.img.attributes(); } 

function loadFirstPaper() { 
    ticker.addEventListener(TimerEvent.TIMER, changePaper); 
    TweenMax.to(landing, .5, {alpha:0, ease:Quint.easeOut}); 
    TweenMax.to(bloomer, 1, {alpha:0, ease:Quint.easeOut}); 
    loadWallpaper(randomNumber()); 
} 

function loadWallpaper(i:Number) { 
    paperCounter = i; 
    var loader:Loader = new Loader(); 
    var req:URLRequest = new URLRequest(wallpaperLinks[paperCounter]); 
    loader.load(req); 
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeIn); 
    } 

function fadeIn(e:Event) { 
    if (!isPaused) ticker.start(); 
    var temp = e.target.content; 
    wallpaper.addChild(temp); 
    TweenMax.from(temp, fadeTime, {alpha:0, ease:Quint.easeOut}); 
    } 

function changePaper(e:Event) { 
    ticker.stop(); 
    loadWallpaper(randomNumber()); 
    } 

function randomNumber():Number 
    { return Math.floor(Math.random() * 53); } 

} 

slideshow.xml包含此:

<wallpapers> 
    <img link="imgs/one.jpg"></img> 
    <img link="imgs/two.jpg"></img> 
    <img link="imgs/three.jpg"></img> 
    <img link="imgs/four.jpg"></img> 
    <img link="imgs/five.jpg"></img> 
    <img link="imgs/six.jpg"></img> 
    <img link="imgs/seven.jpg"></img> 
    <img link="imgs/eight.jpg"></img> 
    <img link="imgs/nine.jpg"></img> 
    <img link="imgs/ten.jpg"></img> 
    <img link="imgs/eleven.jpg"></img> 
    <img link="imgs/twelve.jpg"></img> 
    <img link="imgs/thirteen.jpg"></img> 
    <img link="imgs/fourteen.jpg"></img> 
    <img link="imgs/fifteen.jpg"></img> 
    <img link="imgs/sixteen.jpg"></img> 
    <img link="imgs/seventeen.jpg"></img> 
    <img link="imgs/eighteen.jpg"></img> 
    <img link="imgs/nineteen.jpg"></img> 
    <img link="imgs/twenty.jpg"></img> 
    <img link="imgs/twentyone.jpg"></img> 
    <img link="imgs/twentytwo.jpg"></img> 
    <img link="imgs/twentythree.jpg"></img> 
    <img link="imgs/twentyfour.jpg"></img> 
    <img link="imgs/twentyfive.jpg"></img> 
    <img link="imgs/twentysix.jpg"></img> 
    <img link="imgs/twentyseven.jpg"></img> 
    <img link="imgs/twentyeight.jpg"></img> 
    <img link="imgs/twentynine.jpg"></img> 
    <img link="imgs/thirty.jpg"></img> 
    <img link="imgs/thirtyone.jpg"></img> 
    <img link="imgs/thirtytwo.jpg"></img> 
    <img link="imgs/thirtythree.jpg"></img> 
    <img link="imgs/thirtyfour.jpg"></img> 
    <img link="imgs/thirtyfive.jpg"></img> 
    <img link="imgs/thirtysix.jpg"></img> 
    <img link="imgs/thirtyseven.jpg"></img> 
    <img link="imgs/thirtyeight.jpg"></img> 
    <img link="imgs/thirtynine.jpg"></img> 
    <img link="imgs/fourty.jpg"></img> 
    <img link="imgs/fourtyone.jpg"></img> 
    <img link="imgs/fourtytwo.jpg"></img> 
    <img link="imgs/fourtythree.jpg"></img> 
    <img link="imgs/fourtyfour.jpg"></img> 
    <img link="imgs/fourtyfive.jpg"></img> 
    <img link="imgs/fourtysix.jpg"></img> 
    <img link="imgs/fourtyseven.jpg"></img> 
    <img link="imgs/fourtyeight.jpg"></img> 
    <img link="imgs/fourtynine.jpg"></img> 
    <img link="imgs/fifty.jpg"></img> 
    <img link="imgs/fiftyone.jpg"></img> 
    <img link="imgs/fiftytwo.jpg"></img> 
    <img link="imgs/fiftythree.jpg"></img> 
</wallpapers> 

我試過在我的網站上運行的Firebug ,除非我做錯了,否則不會出現任何錯誤或警告。所以我完全被難住了。任何人有任何想法?

任何幫助深表謝意,謝謝。

+0

'wallpaperLinks [paperCounter]'的價值是什麼? –

+0

調用LoadXML,loadFirstPaper和loadWallpaper的地方/時間?如果您發佈完整的代碼,這將會很有用。 – ndm

+0

當調試本地工作的地方時,我經常使用'ExternalInterface.call(「console.info」,「link =」+ wallpaperLinks [paperCounter])',但是通過瀏覽器遠程調用不是。 – sberry

回答

0

確定這裏是我相信正在發生的事情。我去你的網站,它會在loadWallpaper()中引發一個空引用錯誤。 loadWallpaper()中唯一可以爲null的東西就是wallpaperLinks。在XMLLoader完成加載之後設置wallpaperLinks。你沒有顯示調用loadFirstPaper()的代碼。所以我敢打賭你有一個競爭條件。在您的計算機上,XML的本地加載發生得比在線更快,因此您不會在本地看到它。

爲此,請將您loadFirstPaper打電話到這裏:

function parse(ssXML:XML) { 
    wallpaperLinks = slideshowXML.img.attributes(); 
    loadFirstPaper(); 
} 
+0

,並且似乎沒有解決問題。我懷疑這個問題是在這一行: var slideshowXMLLoader:XMLLoader = new XMLLoader(「slideshow.xml」,{autoDispose:true,onComplete:LoadXML}); 在XMLLoader構造函數實際完成加載之前調用LoadXML。我不知道爲什麼,但在事件實際完成之前,我經常遇到onComplete事件觸發問題,這似乎是這裏發生的事情。 爲什麼onComplete事件過早引發,我該如何解決它? – Mezzn

+0

你爲什麼使用XMLLoader類?哪一個?可能是問題 –

+0

因爲我以前使用過Green Sock的補間類,並且效果很好。認爲他們的Loader類也會很好......我敢肯定他們是,我確信我只是在做一些錯誤的事情,這會導致onComplete事件失誤。我解決了這個問題,但(見上文)。 – Mezzn

0

想通了。問題是

var slideshowXMLLoader:XMLLoader = new XMLLoader("slideshow.xml", {autoDispose:true, onComplete:LoadXML}); 

XMLLoader根本沒有做它的工作;或者,我認爲這更有可能,onComplete事件過早發射。我將上面的行替換爲:

var slideshowXMLLoader:URLLoader = new URLLoader(); 
slideshowXMLLoader.addEventListener(Event.COMPLETE, loadXML); 
slideshowXMLLoader.load(new URLRequest("slideshow.xml")); 

它目前似乎按預期工作。

我仍然想知道如何讓onComplete調用正常工作,所以如果任何人有任何建議,我很樂意聽到它。

謝謝。

+0

在green sock的文檔中發現了這個問題:「當autoDispose爲true時,加載器會在完成後立即處理掉(它在調度完COMPLETE事件後在內部調用dispose()方法),這將刪除在變量中定義的所有偵聽器對象(如onComplete,onProgress,onError,onInit)。「 –