Flash CS4图像推子问题

我试图为即将到来的网站构建一个flash组件,我必须从XML文件中读取数据,并以5秒的间隔显示这些数据 - 我想你可以称它为图像推子/内容推子或其他类似的:-)

在我发布我的代码之前,我想告诉你,我的AS3体验非常有限,因为我一直使用Silverlight(C#)来代替。

无论如何,这是我的代码:

import fl.transitions.Tween;
import fl.transitions.easing.*;

// FIELDS
var references:Array = new Array();
var counter:int = 0;
var loader:URLLoader = new URLLoader();
var timer:Timer = new Timer(2000, 0);
var image:Bitmap = new Bitmap();
var result:XML;
var ref:MovieClip;

// EVENTHANDLERS
loader.addEventListener(Event.COMPLETE, completeHandler);
timer.addEventListener(TimerEvent.TIMER, runTimer);

// REQUEST XML FROM URL
var request:URLRequest = new URLRequest("navigationReferences.xml");

// TRY LOAD XML FROM URL
try {
loader.load(request);
}
catch(error:Error) {
trace("XML not available");
}

// LOAD XML COMPLETED
function completeHandler(event:Event):void {
if(event.target.data != null) {
    result = new XML(event.target.data);
    parseXml();
} else {
    trace("XML not available");
   }
}

// PARSE XML, BUILD NEW MOVIECLIP AND STORE IT
function parseXml():void {
for (var i:Number=0; i<=result.children().length()-1;i++) { 
    ref = new Reference();
    ref.txtTitle.text = result.navigationReference[i].@title;
    loadImage(result.navigationReference[i].@image);
    ref.mc_imageHolder.addChild(image);
    references.push(ref);

}
timer.start();
}


function runTimer(event:TimerEvent):void {      
if(counter != references.length) {  
    addChild(references[counter]);
    counter++;
}
else {
    counter = 0;
}
}

// IMAGE LOADER
function loadImage(path:String):void {
var loader:Loader = new Loader();
var req:URLRequest = new URLRequest(path);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
loader.load(req);
}

// IMAGE LOAD COMPLETED
function onComplete(e:Event):void {
image = e.target.loader.content as Bitmap;
 }

这段代码有几个问题:

当我试图追踪运行代码时实际发生的事情时,它完美地通过for循环运行,并且它似乎也附加了图像 - 但是,它再次通过循环遍历我的XML文件中的最后一个子节点,输出将如下所示:

XmlChildNode1 - image object attached
XmlChildNode2 - image object attached
XmlChildNode3 - image object attached
XmlChildNode3
XmlChildNode3
XmlChildNode3

另外,当我运行代码时,计时器完成事件实际上会从我的数组中的MovieClip输出正确的数据,除了图像?

纠正我,如果我在这里错了,但它似乎是一个很大的工作,只是为了从XML文件读取数据的图像推子? 任何人都知道是否有更简单,更优雅的方式来做我想做的事情? 或者我的方法实际上是对的?

提前感谢!


我终于找到了解决办法。 我只是简单地将图像加载器放在for循环中:)不知道它是否是最佳实践,但是看到它发生在客户端时,它应该不是真正的问题。

链接地址: http://www.djcxy.com/p/17851.html

上一篇: Flash CS4 image fader problems

下一篇: Autohide UIScrollBar in AS3