Flash CS4图像推子出现问题

时间:2010-09-16 10:52:47

标签: flash actionscript-3

我正在尝试为即将推出的网站构建一个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-loop并且它似乎附加了图像,但是 - 它再次运行循环再次使用我的XML文件中的最后一个子代所以跟踪输出将如下所示:

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

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

如果我在这里错了,请纠正我,但是制作一个从XML文件中读取数据的图像推子似乎需要做很多工作?任何人都知道是否有一种更简单,更优雅的方式来做我想做的事情?或者我的方法是否正确?

提前多多感谢!

1 个答案:

答案 0 :(得分:1)

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