【发布时间】:2012-04-15 22:14:30
【问题描述】:
我已经为幻灯片制作了一个简单的代码,它可以根据文本文件中的列表动态加载子文件夹中的图像。
代码:
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Loader;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.display.Bitmap;
import flash.display.BitmapData;
public class slideshow extends MovieClip {
public var listLoader:URLLoader;
public var newImgList:Array;
public var imgX:int = 0;
public var container:MovieClip;
public function slideshow() {
container = new MovieClip();
stage.addChild(container);
listLoader = new URLLoader(new URLRequest("./slideshow.txt"));
listLoader.addEventListener(Event.COMPLETE, initImages);
}
public function initImages(event:Event):void {
var imgList:Array = listLoader.data.replace(/^\s+/,"").replace(/\s+$/,"").split(/\s+/);
newImgList = new Array();
for(var line:int = 0; line < imgList.length; line++ ) {
if(imgList[line].indexOf(".png") != -1 || imgList[line].indexOf(".jpg") != -1) {
newImgList.push(imgList[line]);
}
}
loadImage();
}
public function loadImage():void {
for(var loaderNum = 0; loaderNum < newImgList.length; loaderNum++) {
var imgLoader = new Loader();
imgLoader.load(new URLRequest("./slideshow/" + newImgList[loaderNum]));
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imgInit);
}
}
public function imgInit(event:Event):void {
var imgBmp:BitmapData = event.target.content.bitmapData;
var img:Bitmap = new Bitmap(imgBmp);
img.height = 150;
img.scaleX = img.scaleY;
img.y = 0;
img.x = imgX;
imgX = (imgX + img.width + 10);
container.addChild(img);
}
}
实际上它对我来说很好用,只是图像以几乎随机的顺序显示。
我猜代码加载一些图像太慢了,所以它们中的一些被添加到了动画剪辑中,尽管它们是在下一个应该去的之后加载的。
我的意思是:
1.png 已加载
添加了1.png
2.png 已加载
3.png 已加载
添加了3.png
添加了2.png
所以我的问题:
是否有任何其他更合适/更好的方法可以使幻灯片从文本文件中加载图像,其中只有图像的全名(位于子文件夹中)是 listet?
感谢您的任何建议。
g.r.
【问题讨论】:
-
我愿意,但我不应该!我正在制作的网站是为愚蠢的人准备的,他们足够聪明,可以将一些图像名称写入文本文件!如果我想在 xml 中制作整个东西,我可能已经完成了;)
-
我发现更容易解释如何复制和粘贴像
<slide file="something.jpg" />这样的节点,他们可以在新行或任何他们想要的内容上缩进/分隔而不破坏所有内容,而不是让他们破坏需要的文本文件更严格的布局。不管怎样,排队你的图片而不是一次加载它们来解决你的问题。 -
“验证”文本文件的代码在 php 外部,在解决此问题后将修复。所以逐行,我认为这是最简单和最简单的方法......你对队列的意思是什么?你有例子吗?
标签: actionscript-3 flash image dynamic slideshow