这个问题让我困扰了好几个月。我无法弄清楚为什么我的网站背景:
无法正确加载。
我知道代码有效,因为当我在计算机上运行它时,一切都很好。但是,当我将其发布到网络并浏览到我的页面时,幻灯片显示只是空白。
这是我使用的XMLLoader类的API
以下是代码:
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 :(得分:0)
好的,我认为这是正在发生的事情。我去了你的网站,它在loadWallpaper()中抛出一个空引用错误。在loadWallpaper()中唯一可以为null的东西是我可以告诉你的是wallpaperLinks。在XMLLoader完成加载后设置wallpaperLinks。您没有显示调用loadFirstPaper()的代码。所以我打赌你有竞争条件。在您的计算机上,XML的本地加载比在线加载更快,因此您不会在本地看到它。
执行此操作,将loadFirstPaper调用移至此处:
function parse(ssXML:XML) {
wallpaperLinks = slideshowXML.img.attributes();
loadFirstPaper();
}
答案 1 :(得分: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调用正常工作,所以如果有人有任何建议,我很乐意听到。
感谢。