Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-10-2008, 09:49   #1 (permalink)
already exist
 
Benutzerbild von broud
 
Registriert seit: Sep 2004
Ort: Reutlingen
Beiträge: 150
Bilder aus XML laden in Reihenfolge

Hallo,

es hängt mal wieder und ihr seit meine letzte Rettung

Folgendes, ich hab eine for-Schleife welche eine XML durchgeht welches Pfade zu diversen Bildern enthält und diese dann in eine MovieClip packt damit ich ein Laufband erstellen kann. Dazu verwende ich bei addChild die Variable welche den Loader enthält.

Das funktioniert auch super nur ist es so das die Bilder unterschiedlich breit sind. Nun könnte ich ja ein ContentLoaderInfo nehmen denn damit kann ich ja die Breite auslesen nur leider wird dabei die Reihenfolge der Bilder zerstört da er sobald das Bild geladen ist es irgendwo hin packt.

Mein frage wie kann ich es steuern das

1. Die Bildreihenfolge eingehalten wird und
2. das die Abstände der Bilder unterschiedlich sein können.

Ich hab mal mein Script angehängt, vielleicht hilft es was
Danke schon einmal für Durchlesen.

Code:
for (var i=0; i < xmlFile.children().length(); i++) {
     var productImage=new Loader;
     productImage.load(new URLRequest(xmlFile.children()[i].@thumb));
     var image=new ImageContainer;
     image.addChild(productImage);
     image.x+= xPos;
     mc.addChild(image);
    xPos=xPos + 150;
}
__________________
www.broud.de
broud ist offline   Mit Zitat antworten
Alt 01-10-2008, 15:06   #2 (permalink)
as3 addict
 
Benutzerbild von Marcy_LH
 
Registriert seit: Jun 2002
Ort: Leipzig
Beiträge: 351
also schnellschuß würde ich sowas in der Art machen. Kommentare müsstest du selbst füllen :

PHP-Code:
/* falls deine xml so aufgebaut ist:
 * <image thumb="thumb1.png" />
 * <image thumb="thumb2.png" />
 * ...
 */
var xmllist XMLList xmlFile.image//gibt dir alle image-Elemente zurück
var imageURLArray : Array = new Array();
var 
listItem XML;
var 
counter Number 0;

for 
each(listItem in xmllist) {
  
imageURLArray.push(listItem.@thumb); //reihenfolge speichern


for(var 
i:Number 0imageURLArray.lengthi++) {
  
//loader für alle URLs
  //contentLoaderInfo Eventlistener hinzufügen onComplete
  //loader in array speichern...
}

function 
onComplete(event Event) : void  {
  
  if(++
counter >= imageURLArray.length 1) {
    
arrangeImages();
  }
}

function 
arrangeImages() : void {
  
//loaderarray durchwandern und sachen positionieren...

Marcy_LH ist offline   Mit Zitat antworten
Alt 05-10-2008, 20:51   #3 (permalink)
already exist
 
Benutzerbild von broud
 
Registriert seit: Sep 2004
Ort: Reutlingen
Beiträge: 150
So ich hab endlich was brauchbares hinbekommen. Zwar ist es nicht die Eleganteste art aber es Funktioniert und was will man mehr

Code:
package {
	import flash.events.MouseEvent;
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.display.Loader;
	import flash.net.URLLoader;
	import flash.net.URLRequest;

	public class Main extends MovieClip {
		public var fileURL:String="images.xml";
		var imageURLArray : Array = new Array();
		var loaderArray:Array = new Array();
		var counter : Number = 0;

		public var xmlNodes:XMLList;
		public var currentImage:Number=0;
		public var motion;
		public var mc:MovieClip = new MovieClip;
		public var xmlFile:XML;
		public var realLength;
		public var readlWidth;
		public var tmpArray:Array = new Array;
		public var xPos=0;
		public var key=0;
		public var Xpos = 0;
		public var k = 0;
		public function Main() {
			container.addChild(mc);
			loadFile(fileURL);
		}
		public function enter_frame(event) {

			readlWidth = mc.width/3;

			if (mouseX > 490) {
				mc.x += (480-mouseX)*0.025;
			}
			if (mouseX < 440) {
				mc.x += (450-mouseX)*0.025;
			}
			if (Math.round(mc.x) < -readlWidth*2) {
				mc.x = 0;
			}
			if (Math.round(mc.x) > -0) {
				mc.x = -readlWidth*2;
			}
		}

		public function loadFile(xml) {
			var loader=new URLLoader;
			loader.addEventListener(Event.COMPLETE,readFile);
			loader.load(new URLRequest(xml));

		}
		public function readFile(event:Event) {
			XML.ignoreWhitespace=true;
			xmlFile =new XML(event.target.data);
			xmlNodes=xmlFile.children();

			creatNav();
		}
		public function creatNav():void {
			var zahl;
			var abs;

			while (xmlFile.children().length() < 6) {
				var copyNode = xmlFile.children().copy();
				xmlFile.appendChild(copyNode);
			}

			realLength = xmlFile.children().length();
			var copyNodeBevor = xmlFile.children().copy();
			var copyNodeAfter = xmlFile.children().copy();

			xmlFile.appendChild(copyNodeBevor);
			xmlFile.appendChild(copyNodeAfter);

			for (var i=0; i < xmlFile.children().length(); i++) {
				var imageLoader=new Loader;
				imageLoader.load(new URLRequest(xmlFile.children()[i].@thumb));
				imageLoader.contentLoaderInfo.addEventListener(Event.INIT, onComplete);

				var tmpObject = new Object;
				tmpObject.loaderObj =  imageLoader;
				tmpObject.imageObj = xmlFile.children()[i].@thumb;

				tmpArray.push(tmpObject);
			}
			addEventListener(Event.ENTER_FRAME, enter_frame);
		}
		function onComplete(event : Event):void {

			if ( k == xmlFile.children().length()-1) {
				buildImages();
			} else {
				k++;
			}
		}
		public function buildImages() {
			var xPos=0;
			var abs;

			for (var i=0; i < xmlFile.children().length(); i++) {
				var productImage=new Loader;
				productImage.load(new URLRequest(xmlFile.children()[i].@thumb));

				var image=new ImageContainer;
				image.addChild(productImage);
				image.x+= xPos;
				mc.addChild(image);
				xPos=xPos + tmpArray[i].loaderObj.width;
			}
			var pos = (realLength)*150;
			mc.x = -pos;
		}
	}
}
__________________
www.broud.de

Geändert von broud (06-10-2008 um 08:38 Uhr)
broud ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 16:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele