2010-08-18 8 views
1

Je rencontre un problème lors du chargement de la vignette, je définis un intervalle de temps pour chaque pouce à charger sur scène. Certains d'entre eux ne peuvent pas charger séquentiellement dans l'ordre, ils sont manquants, sont en retard ...Chargement des vignettes de problèmes

En fait, je définis un préchargeur à la taille du fichier, mais comme je charge dynamiquement à partir de XML, la taille du fichier est plus petite.

Est-ce que quelqu'un connaît une solution pour résoudre ce problème? Il est vraiment bug moi si ...

Je charge avec le fichier XML et ne pas avoir de problème avec le processus d'analyse.

Parfois, toutes les vignettes peuvent être chargés sur scène, si la bande passante un peu lent, il est décalé moyenne pouce en premier chargement il est sauter tout à coup la seconde miniature, il charge la troisième miniature à la place et ainsi de suite ...

Parfois, il peut charger les miniatures entières ... c'est bizarre

ici, je mets une minuterie pour charger chaque vignette

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(); 
} 

}

+0

Qu'est-ce que vous utilisez pour charger les vignettes? UILoader? – Sandro

+0

s'il vous plaît poster le code complet, y compris l'analyse XML, s'il vous plaît. merci. – Eugene

Répondre

1

Je pense qu'il vaudrait mieux créer une boucle et utiliser Event.COMPLETE du loader pour savoir quand charger la prochaine vignette au lieu d'utiliser un intervalle. De cette façon, vous éviterez les conflits.

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 
    } 
} 

Edité après les commentaires

je fixe le loadThumbComplete de prendre le paramètre d'événement. Pour obtenir la largeur du pouce chargé, je préfère prendre le contenu de l'imageLoader et le mettre dans un Sprite.

+0

haha ​​écrivait la même réponse :) @Qpixo Vous pouvez également utiliser les classes de chargement de greensock.com, c'est un peu exagéré pour le problème ici, mais ils sont emballés avec des fonctionnalités de chargement avancées – PatrickS

+0

Oui, j'utilise URLLoader pour charger à partir de Fichier XML // Nom de fichier, appelez-le loader = new URLLoader(); loader.load (new URLRequest (nom de fichier)); addFileListener (loader, callBack); – Qpixo

+0

@Qpixo Ce n'est pas la même chose que ce que j'ai mis dans ma réponse. – knuckfubuck

0

J'ai déclaré tabPhoto et tabThumbWidthIncrement comme vecteur

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