(AS3)以数字/降序从XML加载缩略图
自从我开始调试代码以使其正常工作以来,已经有两天了,而且它正在消耗我所有的时间,如果我不开始询问,我想我不会赶上最后期限 我不是专业人士,所以请对代码保持温和:D 画廊工作正常,它可以顺利加载缩略图而不返回任何错误。但是,缩略图并没有按预期加载,我认为这是因为最小的文件大小首先要加载。因此,如果缩略图[3]是最小的,它将自身附加到缩略图容器[0],它应该始终是缩略图[0]到缩略图容器[0],依此类推 这是我的密码:(AS3)以数字/降序从XML加载缩略图,xml,actionscript-3,gallery,thumbnails,loader,Xml,Actionscript 3,Gallery,Thumbnails,Loader,自从我开始调试代码以使其正常工作以来,已经有两天了,而且它正在消耗我所有的时间,如果我不开始询问,我想我不会赶上最后期限 我不是专业人士,所以请对代码保持温和:D 画廊工作正常,它可以顺利加载缩略图而不返回任何错误。但是,缩略图并没有按预期加载,我认为这是因为最小的文件大小首先要加载。因此,如果缩略图[3]是最小的,它将自身附加到缩略图容器[0],它应该始终是缩略图[0]到缩略图容器[0],依此类推 这是我的密码: //THIS IS THE CONTAINER
//THIS IS THE CONTAINER
for (var i:int = 0; i < thumbBatches[aj]; i++)
{
thumbX = 44.35 + (thumbWidth + 18) * i;
var itemThumb:thumbH = new thumbH();
itemThumb.x = thumbX;
itemThumb.y = thumbY;
itemThumb.name = "" + i + (8 * aj);
itemThumb.addEventListener(MouseEvent.CLICK, openFullItem);
level2.addChild(itemThumb);
IthumbList[i + (8 * aj)] = itemThumb;
}
//THIS WILL LOAD THE THUMBNAILS
for (var n:int = 0; n < potteryIDnum.length; n++)
{
var imgLoader:Loader = new Loader();
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
imgLoader.load(new URLRequest(potteryThumbs[n]));
}
// AFTER LOADING IT, IT'LL BE ASSIGNED TO AN ARRAY
// THEN AFTER THE LAST IMAGE HAS BEEN LOADED WILL BE ATTACHED TO THE CONTAINER
function loadComplete(e:Event):void
{
IthumbImages.push(e.target.content);
if (IthumbList.length == IthumbImages.length)
{
for (var k:int = 0; k < IthumbImages.length; k++)
{
var fadeInThumbs:Tween = new Tween(IthumbList[k],"alpha",Strong.easeInOut,0,1,0.3 * (k + 0.5),true);
IthumbList[k].addChild(IthumbImages[k]);
}
}
}
提前谢谢 我想你的问题在于这条线
IthumbList[i + (8 * aj)] = itemThumb;
什么是aj?
如果aj==1和i==1,那么数组的索引将为9
如果aj==2和i==1,那么数组的索引将为16
因此,oncomplete中的for循环应该会失败。我已经回答了。然而,这是关于URLLoader类的 对于加载器类情况,应为:
dynamic class DynamicLoader extends Loader{}
最后,修改后的代码:
var remainingLoads:uint = potteryIDnum.length;
//THIS WILL LOAD THE THUMBNAILS
for (var n:int = 0; n < potteryIDnum.length; n++)
{
var imgLoader:DynamicLoader = new DynamicLoader();
imgLoader.index = n;
imgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
imgLoader.load(new URLRequest(potteryThumbs[n]));
}
// AFTER LOADING IT, IT'LL BE ASSIGNED TO AN ARRAY
// THEN AFTER THE LAST IMAGE HAS BEEN LOADED WILL BE ATTACHED TO THE CONTAINER
function loadComplete(e:Event):void
{
IthumbImages[ DynamicLoader(e.target.loader).index ] = e.target.content;
if (--remainingLoads == 0)
{
for (var k:int = 0; k < IthumbImages.length; k++)
{
var fadeInThumbs:Tween = new Tween(IthumbList[k],"alpha",Strong.easeInOut,0,1,0.3 * (k + 0.5),true);
IthumbList[k].addChild(IthumbImages[k]);
}
}
}
aj=0,仅按batchrow递增。每批8个缩略图,因此如果aj==1,它将是第9个缩略图,这是正确的。如果我错过了索引,它将不会运行。我可以正确地跟踪每个缩略图的索引。并且它位于正确的位置,但是附加到它的bitmapjpg不在。正如我所提到的,要加载的第一个位图将位于[0]上,即使该缩略图的url来自[6]或任何其他数字。遗憾的是,它没有按预期工作。它不会加载所有缩略图,然后会返回一个空错误,即childon addchild不存在。IDK,如果我通过扩展loader类所做的是正确的。包com.dloader{import flash.display.Loader;公共动态类DynamicLoader extensed Loader{;公共函数DynamicLoader{super;}}}}}我不习惯类/外部。与现在一样。尝试调试IthumbImages[DynamicLoader.target.Loader.index]=e.target.content;部分,请参阅dynamicloader.target.loader.index和e.target.content值。