{lang: 'de'}
Flashhilfe.de - Flash Community

Preloading der Bilder aus XML-Gallery [Flash 10]

 


AntwortenRegistrieren Seite1  

lil1#1
Benutzerbild von lil1
Beiträge: 5
Registriert: Jan 2010

30.01.2010, 17:24

Hallo zusammen,

ich habe hier eine Gallerie die ich aus einem XML-File zusammenbaue.
Beim Laden werden erst alle LoaderObjects in ein Array gepackt und danach herausgelesen. So garantiere ich dass die Reihenfolge des XML-FIles und die Zugehörigkeit der Objekte (evtl. Info Text) bewahrt wird. Soweit so gut.

Nun möchte alle Bilder erst vorladen und dann anzeigen.
Dabei will ich aber die Gesamtgröße aller Bilder wissen und den gesamten Ladestatus (BytesLoaded) um eine prozentuelle Angebe machen zu könenn.
Bsp.  23% loaded etc..

Da beim ProgressEvents nur die contentLoaderInfo übertragen wird, weiß ich nicht wie ich zu den zugehörigen LoaderObjekten zuordnen soll, oder überhaupt trennen. Weil beim Ladeprozess wird die Funktion permanent aufgerufen....

Hoffe habe ich halbwegs klar ausgedrückt...

Code:
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import flash.display.*;
import flash.events.Event;
import flash.events.ProgressEvent;


var loadedThumbs:Array = new Array();

// LOAD XML
var xml:XML;
var xmlList:XMLList;
var xmlFile:String = "data/catalog.xml";
var urlRequest:URLRequest = new URLRequest(xmlFile);
var urlLoader:URLLoader = new URLLoader();
   urlLoader.load(urlRequest);
   urlLoader.addEventListener(Event.COMPLETE,urlLoaded);


function urlLoaded(event:Event):void {
   

   xml = XML(event.target.data);
   xmlList = xml.children();


   for (var j:int=0; j<xmlList.length(); j++) {

      var urlReq:URLRequest = new URLRequest(xmlList[j].url);   // die <url> wird ausgelesen
      var thumLoader:Loader = new Loader ();
      thumLoader.load(urlReq);
      loadedThumbs.push(new Array(thumLoader, 0));  // [loaderObject, loaded]
      
      thumLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loading);
      thumLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, completed);
   }
   
   
   
   function loading(e:ProgressEvent):void  {
      
      // HIER!
      // wie kriege ich die zugehörigkeit des contentLoaderInfo-Events zum loaderObject?! 
      
      trace(e.target);
   }
   

   
   function completed(e:Event):void
   {
      
      for (var i:int=0; i<loadedThumbs.length; i++)
      {
      
         var thumb = loadedThumbs[i][0];
         if (thumb.content)
            if (e.target.content.name == thumb.content.name)
               loadedThumbs[i][1] = 1;
      
         if (thumb && !contains(thumb) && loadedThumbs[i][1] == 1)
         {   
            thumb.width = 100; //tester
            thumb.height = 100;
            thumb.x = (thumb.width+10)*i;
            thumb.y = 0;
            addChild(thumb);
         
         } // if (thumb && !contains(thumb))
         
      } // for (var i:int=0; i<loadedThumbs.length; i++)
      
      
   }
   
   
}



Ideen wie man die byteTotal und bytesLoaded speicehrn kann? Ich hätte es am liebsten so:

ActionScript:
1
2
3
4
5
Array (
(loaded => y, total => x),
(loaded => y, total => x),
...
)
Schlagwörter: AS3, event, loaderInfo, preload
Geändert von lil1 am 30.01.10 um 17:31 Uhr
Jimmy the Knife#2
Benutzerbild von Jimmy the Knife
Beiträge: 54
Registriert: Feb 2007

03.02.2010, 14:06

Jede contentLoaderInfo enthält einen Verweis auf den zugehörigen Loader.
lil1#3
Benutzerbild von lil1
Beiträge: 5
Registriert: Jan 2010

Themenautor/in

04.02.2010, 13:10

absolut unhilfreich!

beim eintreten des Events ProgressEvent.PROGRESS wird die funktion loading aufgerufen. per e.target komme ich an das LoaderInfoObject. Dieses Objekt hat aber noch keinen namen, keine url und nichts eindeutiges, da es noch nicht komplett geladen wurde.
über e.target.name  erreiche ich es also nicht.
Frage ist:
Wie bekomme ich den Namen des Loader- oder LoaderInfoObjects ?
cedddy#4
Benutzerbild von cedddy
Beiträge: 572
Registriert: May 2007

04.02.2010, 14:56