【问题标题】:Loading issue thumbnails加载问题缩略图
【发布时间】:2010-08-20 11:59:10
【问题描述】:

我在加载缩略图时遇到问题,我设置了每个拇指在舞台上加载的时间间隔。其中一些无法按顺序加载,它们丢失,滞后......

实际上,我为文件大小设置了一个预加载器,但由于我从 XML 动态加载,因此文件大小更小。

有人知道解决这个问题的方法吗? 不过这真的让我很烦......

我使用 XML 文件加载,解析过程没有任何问题。

有时可以在舞台上加载所有缩略图,如果带宽有点慢,则表示第一个缩略图正在加载,然后它会突然跳过第二个缩略图,而是加载第三个缩略图,依此类推...

有时它可以加载整个缩略图......这很奇怪

在这里,我设置了一个计时器来加载每个缩略图

protected static const INTERVAL_TIME:uint       = 1000;
initLoadTime = new Timer(INTERVAL_TIME);
initLoadTime.addEventListener(TimerEvent.TIMER, handleLoadedEachThumbnail, false, 0, true);
initLoadTime.start();

protected function handleLoadedEachThumbnail(event:TimerEvent):void
{
var container:MovieClip = new MovieClip();

if (currentIndex < tabPhoto.length) {
 thumbnailPositionMC = positionEachThumbnail();
 container.addChild(thumbnailPositionMC);
 addChild(container);


 currentIndex++;
}

if (currentIndex == tabPhoto.length) {
 currentIndex = 0;
 initLoadTime.removeEventListener(TimerEvent.TIMER, handleLoadedEachThumbnail);
 initLoadTime.stop();
}

}

【问题讨论】:

  • 你用什么来加载缩略图? UILoader?
  • 请贴出完整的代码,包括解析xml。谢谢。

标签: xml actionscript-3 thumbnails loading


【解决方案1】:

我认为创建一个循环并使用加载器的 Event.COMPLETE 来知道何时加载下一个缩略图而不是使用间隔会更好。这样你就可以避免冲突。

var imageLoader:Loader;
var currentImageLoading:uint;
var thumbsToLoad:Array; //array of strings of paths to the thumbnail

function loadThumbs(thumbs:Array):void
{
    currentImageLoading = 0;
    thumbsToLoad = thumbs;
    loadNextThumb();

function loadNextThumb():void
{
    imageLoader = new Loader();
    var imageUrl:String = thumbsToLoad[currentThumbLoading];
    var imageRequest:URLRequest = new URLRequest( imageUrl );
    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadThumbComplete);
    imageLoader.load( imageRequest );
}

function loadThumbComplete(e:Event):void
{
    // do stuff with loaded thumb here
    var thumb:Sprite = new Sprite();
    thumb.addChild(imageLoader.content);
    trace(thumb.width);
    currentThumbLoading++;
    if (currentThumbLoading < thumbsToLoad.length) {
        loadNextThumb();
    } else {
        // loading cycle is complete
    }
}

在 cmets 之后编辑

我修复了 loadThumbComplete 以获取事件参数。为了获得加载拇指的宽度,我更喜欢从 imageLoader 中获取内容并将其放入 Sprite 中。

【讨论】:

  • 哈哈写了同样的答案 :) @Qpixo 你也可以使用 greensock.com 的加载类,这对于这里的问题来说有点矫枉过正,但它们包含高级加载功能
  • 是的,我使用 URLLoader 从 XML 文件加载。 // 文件名,在 main loader 中调用 = new URLLoader(); loader.load(new URLRequest(filename)); addFileListener(loader, callBack);
  • @Qpixo 这与我在回答中的内容不同。
  • @Knuckfubuck:为什么你的函数 loadThumbComplete() 没有参数(事件:事件)?和 currentThumbLoading++ 应该在 if (currentThumbLoading
  • @Knuckfubuck:当使用上面的方法时:我也试图获取每个拇指的宽度并得到一个错误。 imageLoader.content.width => 错误 #1009:无法访问空对象引用的属性或方法。使用 imageLoader.width,它给了我 0 我怎样才能获得每个缩略图的宽度???
【解决方案2】:

我已将 tabPhoto 和 tabThumbWidthIncrement 声明为 Vector

var tabPhoto:Vector.<ThumbInfo> = new Vector.<ThumbInfo>;
var tabThumbWidthIncrement:Vector<uint> = new Vector.<uint>;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-04-23
    • 2012-06-17
    • 2011-07-04
    • 1970-01-01
    • 2013-04-29
    • 2013-12-09
    相关资源
    最近更新 更多