Antworten auf deine Fragen:
Neues Thema erstellen

new URLRequest

Indium1

Nicht mehr ganz neu hier

Hallo an alle Leser,

mittels PHP und MySQL erstelle ich eine XML Datei für eine Bildergalerie. Per AS3 werden die XML Daten ausgelesen und die Bilder werden mit Vorgaben (width, height, graphics.drawRoundRect etc. pp.) auf die Bühne in einem MC geladen. Momentan werden nur die Bilder (grbild) selbst ausgegeben aber nicht ein bestimmter Text (tbild) dazu und hier hänge ich total fest und hoffe auf eure Unterstützung.

Teilauszug des Scripts:
Code:
[FONT=Arial][SIZE=3]function bildergalerie_aus_xml_erstellen(ev:Event):void [/SIZE][/FONT]
[FONT=Arial][SIZE=3]{[/SIZE][/FONT]
[FONT=Arial][SIZE=3] buttfl_foto_xml = new XML(ev.target.data);[/SIZE][/FONT]
[FONT=Arial][SIZE=3] zaehler_bilder_wurden_uebergeben = buttfl_foto_xml.bild.length();[/SIZE][/FONT]
[FONT=Arial][SIZE=3] for(i = 0; i < zaehler_bilder_wurden_uebergeben; i++)[/SIZE][/FONT]
[FONT=Arial][SIZE=3] {[/SIZE][/FONT]
[FONT=Arial][SIZE=3]  erstellte_xml_bildergalerie_ausgabe.push( {[/SIZE][/FONT]
[FONT=Arial][SIZE=3]  klbild: buttfl_foto_xml.bild[i].klbild.toString(), // Dies sind die Bilder[/SIZE][/FONT]
[FONT=Arial][SIZE=3]  grbild: buttfl_foto_xml.bild[i].grbild.toString(), [/SIZE][/FONT]
[FONT=Arial][SIZE=3]  nabild: buttfl_foto_xml.bild[i].nabild.toString(), [/SIZE][/FONT]
[FONT=Arial][SIZE=3]  tbild: buttfl_foto_xml.bild[i].tbild.toString() } ); // Dies sind die Texte der Bilder[/SIZE][/FONT]
[FONT=Arial][SIZE=3] }[/SIZE][/FONT]
[FONT=Arial][SIZE=3] kleine_bilder_laden();[/SIZE][/FONT]
[FONT=Arial][SIZE=3]}[/SIZE][/FONT]

[FONT=Arial][SIZE=3]function kleine_bilder_laden():void[/SIZE][/FONT]
[FONT=Arial][SIZE=3]{[/SIZE][/FONT]
[FONT=Arial][SIZE=3] var bilder_suchen:URLRequest = new URLRequest(bilderordner + erstellte_xml_bildergalerie_ausgabe[zaehler_kleines_bild_wird_geladen].klbild); [/SIZE][/FONT]
[FONT=Arial][SIZE=3] var bilder_laden:Loader = new Loader(); [/SIZE][/FONT]
[FONT=Arial][SIZE=3] bilder_laden.load(bilder_suchen);[/SIZE][/FONT]
[FONT=Arial][SIZE=3] bilder_laden.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, anzeige_kleine_bilder_werden_geladen);[/SIZE][/FONT]
[FONT=Arial][SIZE=3] bilder_laden.contentLoaderInfo.addEventListener(Event.COMPLETE, vorgaben_kleine_bilder);[/SIZE][/FONT]
[FONT=Arial][SIZE=3] zaehler_kleines_bild_wird_geladen++;[/SIZE][/FONT]
[FONT=Arial][SIZE=3]}[/SIZE][/FONT]
Ich nehme an, dass die Variable tbild mit in den new URLRequest gehört aber ich weiß nicht wie. Habe es schon mit Operatoren +, &, && und AND versucht aber leider erfolglos!

Vorab schon mal vielen Dank für Eure Tipps!


Mit freundlichen Grüßen,

Indium1
 

A

ad86

Guest

AW: new URLRequest

Hi,

Du hast doch alle Daten in der XML-Datei oder? Wieso willst Du dann den Text nochmal laden. Oder ist der Text etwas länger und steht in einer eigenen Textdatei?

Du könntest auch für deine Bilder in eine eigene Klasse (z.B. Image) erstellen, die dann das Vorschaubild, das große Bild, Titel und Text speichert.
In deiner Hauptklasse hättest Du dann nur ein Array von Image-Objekten. Dazu könnte ich sogar ein kleines (angepasstes) Script, bestehen aus drei Klassen (Hauptklasse, Image-Klasse und eine Event-Klasse) zeigen.

MFG ad86
 

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Hallo ad86,

ich hatte bis heute noch keine Zeit gehabt mich zu melden, Entschuldigung!
Daher sende ich Dir verspätet ein Dankeschön für Deine Hilfe!

Also, außer dem Bildpfad stehen alle Daten in der XML-Datei.

Über die Funktion:
Code:
  [FONT=Arial][SIZE=3]function bildergalerie_aus_xml_erstellen [/SIZE][/FONT]
werden die XML-Daten in ein Zählerarray eingetragen:
Code:
  [FONT=Arial][SIZE=3]var erstellte_xml_bildergalerie_ausgabe = new Array(); [/SIZE][/FONT]
und zzgl. Zähler an die function kleine_bilder_laden weitergeleitet.

Über die Funktion:
Code:
  [FONT=Arial][SIZE=3]function kleine_bilder_laden[/SIZE][/FONT]
werden die Vorschaubilder (klbild):
Code:
  [FONT=Arial][SIZE=3]erstellte_xml_bildergalerie_ausgabe[zaehler_kleines_bild_wird_geladen].klbild[/SIZE][/FONT]
nach und nach im Bilderordner var bilderordner:String = "photos/" über new URLRequest gesucht und an die Funktion vorgaben_kleine_bilder weitergegeben:
Code:
  [FONT=Arial][SIZE=3][FONT=Arial]function vorgaben_kleine_bilder[/FONT][/SIZE][/FONT]
In dieser Funktion bekommt jedes einzelne Vorschaubild einen eingefärbten Rahmen wobei die Ecken abgerundet sind. Der Rahmen ist in der Höhe größer als die Vorschaubilder (wie bei einem Polaroid Foto) sodass im unteren Bereich platz ist für ein Text. Der Text aus tbild (z. B. Bildname), der aber immer unterschiedlich ist, sollte daher eigentlich hier eingetragen werden. Wenn alles geklappt hat wird das Vorschaubild mit eindeutigen Bildnamen (tbild) über diese Funktion veröffentlicht und aus dem Zählerarray entfernt. Die Funktionen arbeiten die XML-Datei solange ab bis keine Daten mehr verfügbar sind.

Soweit funktioniert alles, nur das nicht mit dem Text. Daher gehe ich davon aus, dass in der Variable bilder_suchen (siehe function kleine_bilder_laden):
Code:
  [FONT=Arial][SIZE=3]var bilder_suchen:URLRequest = new URLRequest(bilderordner + erstellte_xml_bildergalerie_ausgabe[zaehler_kleines_bild_wird_geladen].klbild);[/SIZE][/FONT]
auch tbild mit reingehört. Nur wie bekomme ich das jetzt mit den Operatoren hin?

Mit freundlichen Grüßen,

Indium1

PS: Da ich in AS Programmierung noch recht unerfahren bin, bitte ich um Verständnis wenn es nicht Fachgerecht beschrieben wurde.
 
A

ad86

Guest

AW: new URLRequest

Hi,

ich mach mal ein kleines (für MICH leserliches) Beispiel:

Die XML-Datei:
Code:
<images>
	<image>
		<title>Mein Titel1</title>
		<thumburl>img/thumb/01.png</thumburl>
		<url>img/url/01.png</thumburl>
	</image>
	<image>
		<title>Mein Titel2</title>
		<thumburl>img/thumb/02.png</thumburl>
		<url>img/url/02.png</thumburl>
	</image>
	<image>
		<title>Mein Titel3</title>
		<thumburl>img/thumb/03.png</thumburl>
		<url>img/url/03.png</thumburl>
	</image>
</images>

In Deiner Hauptklasse, oder AS-Ebene
Code:
//Variablen
var toLoad:int=0; //Wieviele Bilder geladen werden müssen
var isLoaded:int=0;//Wieviele Bilder bisher geladen wurden
var imgArray:Array=new Array(); //hier werden die Bildobjekte gespeichert

//init kann auch in Deinem Konstruktor sein
function init():void{
	var loader:URLLoader= new URLLoader();
	loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
	loader.addEventListener(Event.COMPLETE, completeHandler);
	loader.load(new URLRequest("images.xml"));
}

function completeHandler(e:Event):void{
	var xml:XML=new XML(e.target.data);
	for each (var imgItem:XML in xml.image) {
		toLoad++;
		var img:Image= new Image();
		img.addEventListener(Event.COMPLETE,loadedHandler);
		img.addEventListener(IOErrorEvent.IO_ERROR,errorImgHandler);
		img.init(imgItem);
		imgArray.push(img);
	}
}

function loadedHandler(e:Event){
	isLoaded++;
	if (isLoaded==toLoad){
		//do something, e.g. position the images
	}
}

function errorImgHandler(e:Event){
	//do something, if image loading error occurs
}

function errorHandler(e:Event){
	//do something, if error occurs
}

Und nun noch die Image-Klasse
Code:
package {
	
	public class Image extends EventDispatcher{
		
		protected var titles:String;
		protected var thumbImg:Loader;
		protected var img:Loader;
		protected var actLoaded:int=0;

		public function initImg(xml:XML):void{
			this.titles=xml.title;
			this.thumbImg= new Loader();
			this.thumbImg.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
			this.thumbImg.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedHandler);
			this.thumbImg.load(new URLRequest(xml.thumburl));
			this.img= new Loader();
			this.img.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
			this.img.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedHandler);
			this.img.load(new URLRequest(xml.url));
		}
		
		/*	Methode, die das Vorschaubild, eingebettet in einen MovieClip, zurueckgibt.
			Hier kannst Du ihm auch einen Rahmen geben, oder sonstwas
		*/
		public function getThumb():MovieClip{
			var mc:MovieClip= new MovieClip();
			var bm:Bitmap=new Bitmap((this.thumbImg.content as Bitmap).bitmapData.*****());
			bm.height=80;//if you need to change the height
			bm.width=114;//if you need to change the height
			mc.addChild(bm);
			return mc;
		}
		
		/*	Methode, die das Bild, eingebettet in einen MovieClip, zurueckgibt.
			Hier kannst Du ihm auch einen Rahmen geben, oder einen Titel hinzufügen
		*/
		public function getContent():MovieClip{
			var mc:MovieClip= new MovieClip();
			var bm:Bitmap=new Bitmap((this.img.content as Bitmap).bitmapData.*****());
			bm.height=80;//if you need to change the height
			bm.width=114;//if you need to change the height
			mc.addChild(bm);
			//Titel hinzufügen, positionieren nicht vergessen!
			var txt:TextField= new TextField();
			txt.text=this.titles;
			mc.addChild(txt);
			return mc;
		}
		
		/*	Methode, die aufgerufen wird, wenn das Bild (klein und groß) erfolgreich geladen wurde.
		*/
		private function loadedHandler(e:Event){
			actLoaded++;
			if (actLoaded==2){
				this.dispatchEvent(new Event(Event.COMPLETE));
			}
		}
		
		/*	Methode, die aufgerufen wird, wenn ein Bild (klein und groß) nicht erfolgreich geladen wurde.
		*/
		protected function errorHandler(e:Event){
			this.dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR));
		}		
	}
}

ACHTUNG! Erstens hab ich es nicht getestet, auch wenn der Sourcecode aus meiner BA-Arbeit zusammengestellt wurde und zweitens fehlen die Import-Anweisungen. Es sollte aber funktionieren (wenn alles importiert wurde).

EDIT: Die fünf Sternchen, die da auftreten sollen c-l-o-n-e (ohne die Bindestriche) sein. Keine Ahnung warum da die Sternchen sind.

MFG ad86
 
Zuletzt bearbeitet von einem Moderator:

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Guten morgen ad86,

wollte mich kurz bei Dir bedanken!

Ausprobieren kann ich aber erst am Wochenende!

Viele Grüße,

Indium1
 

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Hallo ad86,

ich habe in den letzten Tagen versucht mit Deinem Script klarzukommen, vorher hatte ich keine Zeit dafür gehabt. Was für ein Krampf kann ich nur sagen, dass liegt aber daran das ich nicht viel Ahnung von Flash geschweige den von AS3 habe. Jetzt stehe ich vor einem Punkt wo ich absolut nicht mehr weiter weiß und nochmals um Deine Hilfestellung bitte.

Mein Problem:

Nachdem ich alles (hoffe ich jedenfalls) importiert habe, gibt es immer noch einen Fehler in der Image.as. In der private function loadedHandler(e:Event) steht actLoaded und hier wird zweimal der Fehler 1120: Zugriff auf eine nicht definierte Eigenschaft actLoaded ausgegeben. In der AS-Ebene steht aber in der function loadedHandler(e:Event) nicht actLoaded sondern isLoaded. Ich komme irgendwie darauf gar nicht klar und ich weiß auch nicht wie ich jetzt was Importieren oder sonst was machen soll.

Hier mal Dein Script (wurde etwas verändert z. B. var img:Img = new Img(); geändert auf Image = new Image wegen der Klassendatei):

AS-Ebene:

Code:
[FONT=Arial][SIZE=3]/* Verbindung (flashvars) für die XML-Datei:
-------------------------------------------*/
try 
{
 var myURL:String;
 var keyStr:String;
 var valueStr:String;
 var butterfly_foto_xml:XML;
 var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
 for (keyStr in paramObj) {
 valueStr = String(paramObj[keyStr]);
 if(keyStr == "xmlurl")
  {
   myURL = valueStr;
  }
  trace("\t" + keyStr + ":\t" + valueStr + "\n");
  }
 } 
 catch (error:Error) 
 {
 trace(error.toString());
}
init(myURL);

//Variablen
var toLoad:int=0; //Wieviele Bilder geladen werden müssen
var isLoaded:int=0;//Wieviele Bilder bisher geladen wurden
var imgArray:Array=new Array(); //hier werden die Bildobjekte gespeichert

function init(String):void
{
 var loader:URLLoader= new URLLoader();
 //loader.load(new URLRequest(xml_akte));
 loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
 loader.addEventListener(Event.COMPLETE, completeHandler);
 //loader.load(new URLRequest("images.xml"));
}

function completeHandler(e:Event):void
{
 var xml:XML=new XML(e.target.data);
 for each (var imgItem:XML in xml.image)
 {
  toLoad++;
  var img:Image= new Image();
  img.addEventListener(Event.COMPLETE,loadedHandler);
  img.addEventListener(IOErrorEvent.IO_ERROR,errorImgHandler);
  img.init(imgItem);
  imgArray.push(img);
 }
}

function loadedHandler(e:Event)
{
 isLoaded++;
 if (isLoaded==toLoad)
 {     
 //do something, e.g. position the images
 }
}

function errorImgHandler(e:Event)
{
 //do something, if image loading error occurs
}

function errorHandler(e:Event)
{
 //do something, if error occurs
}[/SIZE][/FONT]
Image-Klasse (Image.as):

Code:
[FONT=Arial][SIZE=3]package
{
 import flash.events.EventDispatcher;
 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.display.Loader;
 import flash.events.IOErrorEvent;
 import flash.net.URLRequest;
 import flash.display.Bitmap;
 import flash.text.TextField;
 
 public class Image extends EventDispatcher
 {
  protected var titles:String;
  protected var thumbImg:Loader;
  protected var img:Loader;

  public function initImg(xml:XML):void
  {
   this.titles=xml.title;
   this.thumbImg= new Loader();
   this.thumbImg.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
   this.thumbImg.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedHandler);
   this.thumbImg.load(new URLRequest(xml.thumburl));
   this.img= new Loader();
   this.img.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
   this.img.contentLoaderInfo.addEventListener(Event.COMPLETE, loadedHandler);
   this.img.load(new URLRequest(xml.url));
  }

  /* Methode, die das Vorschaubild, eingebettet in einen MovieClip, zurueckgibt.
     Hier kannst Du ihm auch einen Rahmen geben, oder sonstwas */

  public function getThumb():MovieClip
  {
   var mc:MovieClip= new MovieClip();
   var bm:Bitmap=new Bitmap((this.thumbImg.content as Bitmap).bitmapData.*****());
   bm.height=80;//if you need to change the height
   bm.width=114;//if you need to change the height
   mc.addChild(bm);
   return mc;
  }

  /* Methode, die das Bild, eingebettet in einen MovieClip, zurueckgibt.
     Hier kannst Du ihm auch einen Rahmen geben, oder einen Titel hinzufügen */

  public function getContent():MovieClip
  {
   var mc:MovieClip= new MovieClip();
   var bm:Bitmap=new Bitmap((this.img.content as Bitmap).bitmapData.*****());
   bm.height=80; //if you need to change the height
   bm.width=114; //if you need to change the height
   mc.addChild(bm);
   //Titel hinzufügen, positionieren nicht vergessen!
   var txt:TextField= new TextField();
   txt.text=this.titles;
   mc.addChild(txt);
   return mc;
  }

  /* Methode, die aufgerufen wird, wenn das Bild (klein und groß) erfolgreich geladen wurde. */

  private function loadedHandler(e:Event)
  {
   actLoaded++;
   if (actLoaded==2)
   {
    this.dispatchEvent(new Event(Event.COMPLETE));
   }
  }

  /* Methode, die aufgerufen wird, wenn ein Bild (klein und groß) nicht erfolgreich geladen wurde. */

  protected function errorHandler(e:Event)
  {
   this.dispatchEvent(new IOErrorEvent(IOErrorEvent.IO_ERROR));
  }        
 }
}[/SIZE][/FONT]


Die Sternchen ***** stehen jetzt bei mir auch, da sollte normalerweise c-l-o-n-e ohne Bindestriche stehen!

Vielen Dank für Deine Stellungnahme!



Freundliche Grüße,

Indium1
 
A

ad86

Guest

AW: new URLRequest

Hi,

in der Image.as fehlt wirklich eine Eigenschaft.

Hier nochmal der Anfang der Image-Klasse:

Code:
public class Image extends EventDispatcher{
protected var titles:String;
protected var thumbImg:Loader;
[COLOR="Red"]protected var actLoaded:uint=0;[/COLOR]
protected var img:Loader;

Wenn noch Fehler auftreten, kannst Sie posten. Ich schau ja immer mal vorbei.

MFG ad86
 

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Hallo ad86,

ich danke Dir, das eine hat schon mal funktioniert!!! :)

Ein weiteres Dankeschön für die Annahme meines Problems!!!

Wie von mir schon erwartet kommen tatsächlich noch andere Fehler zum Vorschein. :uhm:

Und zwar init wird von Flash bemängelt mit dem Fehler 1061: Aufruf für eine möglicherweise nicht definierte Methode init über einen Verweis mit statischem Typ Image. Der Fehler tritt auf in der AS-Ebene actions in der function completeHandler(e:Event):void:

Code:
  [FONT=Arial][SIZE=3]img.init(imgItem);[/SIZE][/FONT]

init ist doch die function init():void, oder täusche ich mich da?
Diese habe ich doch schon mal definiert mit String, also function init(String):void! Wenn ich diese aber leer lasse bekomme ich einen Fehler 1137 ausgegeben: Falsche Anzahl von Argumenten. Nicht mehr als 0 erwartet.

Versuche ich init als Variable zu definieren also:

Code:
  [FONT=Arial][SIZE=3]var init:String;[/SIZE][/FONT]
  
  [FONT=Arial][SIZE=3]oder[/SIZE][/FONT]
  
  [FONT=Arial][SIZE=3]var init:XML;[/SIZE][/FONT]
  
  [FONT=Arial][SIZE=3]oder[/SIZE][/FONT]
  
  [FONT=Arial][SIZE=3]var init:int=0;[/SIZE][/FONT]

dann kommen die Fehler 1023: Nicht zulässiges außer Kraft Setzen und 1021: Doppelte Funktionsdefinition bei der function init():void.

Dann habe ich versucht init einfach so, also ohne Var, zu definieren vor beginn der function init():void:

Code:
[FONT=Arial][SIZE=3]init:String;[/SIZE][/FONT]
  
[FONT=Arial][SIZE=3]oder[/SIZE][/FONT]
  
[FONT=Arial][SIZE=3]init:XML;[/SIZE][/FONT]

[FONT=Arial][SIZE=3]oder[/SIZE][/FONT]

[FONT=Arial][SIZE=3]init:int=0;[/SIZE][/FONT]

Hat aber auch nicht funktioniert!

Also init muss definiert werden aber ich stehe da wie ein Ochse vor dem Berg!
Annmerkung: Die function init():void habe ich jetzt wieder mit String definiert ( function init(String):void ).

Freundliche Grüße,

Indium1
 
A

ad86

Guest

AW: new URLRequest

Hi,

wieder ein Fehler von mir. Kommt davon, wenn man aus mehreren Klassen etwas kopiert, um eine zu erstellen.
Code:
function completeHandler(e:Event):void
{
 var xml:XML=new XML(e.target.data);
 for each (var imgItem:XML in xml.image)
 {
  toLoad++;
  var img:Image= new Image();
  img.addEventListener(Event.COMPLETE,loadedHandler);
  img.addEventListener(IOErrorEvent.IO_ERROR,errorImgHandler);
  img.init[COLOR="Red"]Img[/COLOR](imgItem);
  imgArray.push(img);
 }
}
Die init-methode gibt es in der Image-Klasse ja nicht. Da heißt Sie initImg, und das ist der Fehler. Die init-Methode auf deiner As3-Ebene hat damit nichts zu tun, denn
img.initImg(imgItem)
Er soll die Methode initImg vom img aufrufen. img ist eine Instanz der Klasse Image, also muss er innerhalb dieser Klasse suchen. Findet er sie dort nicht, sucht er in der Superklasse vom Image (in diesem Fall EventDispatcher). Findet er in keiner Superklasse diese Methode, wirft er die Fehlermeldung.

Noch etwas zu der init-Methode auf deiner AS3-Ebene:

Du rufst Sie so auf:
Code:
init(myURL);

und die Methodendefinition mit Rumpf lautet:
Code:
function init([COLOR="Red"]url:[/COLOR]String):void
{
 var loader:URLLoader= new URLLoader();
 //loader.load(new URLRequest(xml_akte));[COLOR="red"]//Nach den beiden EventListener ist besser. [/COLOR]
 loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
 loader.addEventListener(Event.COMPLETE, completeHandler);
[COLOR="red"] loader.load(new URLRequest(url));//Vorsicht wenn url leer ist[/COLOR]
 //loader.load(new URLRequest("images.xml"));
}
Mit rot sind Verbesserungen angezeigt, die Du NICHT übernehmen musst

MFG ad86
 

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Hallo ad86,

img.initImg(imgItem);

genau das war es! DANKESCHÖN!!! :)

Ich habe zwar schon mal in die Image-Klasse geschaut und init als einzelnes nicht gefunden, aber soweit habe ich nicht gedacht das es dann in der AS-Ebene initImg heißen müsste. Vielleicht wäre ich in 100tausend Jahren selbst draufgekommen, vielleicht aber auch nicht!
Compiler-Fehler wurden mir jetzt keine mehr ausgegeben, mal schauen wie ich den Rest Händel.

Das mit der Methodendefinition muss ich mir dann noch mal zu gemühte führen. Heute aber nicht mehr da ich jetzt wieder weg muss. Ich danke nochmals für die freundliche Unterstützung und wünsche Dir ein schönes Wochenende!

Grüße,

Indium1

PS: Ich meinte natürlich einen schönen Feierabend!!!
 
Zuletzt bearbeitet:

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Hallo ad86,

Entschuldigung dass ich mich wieder bei Dir melde aber ich komme einfach nicht zurecht mit Deinem Script! Es hakt an allen Ecken und Enden und ich versuche schon seit 2 Tagen irgendwas hinzubekommen, leider ohne Ergebnis! Daher bitte ich Dich nochmals auf mein Script einzugehen, welches ich enorm gekürzt habe!

Zur Erinnerung: Es soll bei den Vorschaubildern (die alle auf einmal geladen werden) auch die dazugehörigen Bildnamen (aus nabild) erscheinen. Momentan erhalte ich bei allen Vorschaubildern ein und denselben Bildnamen (das ist der erste Eintrag in der XML).

Die XML-Datei gekürzt:

Code:
[FONT=Arial][SIZE=3]<bilder>
 <bild>
  <klbild>1111111.jpg</klbild>
  <grbild>1111111.jpg</grbild>
  <nabild>Bild Nr.: 1111111.jpg</nabild>
  <tbild>Bildtext Test Wordwrap: <br /><br />Gaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanz laaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanger Teeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeext
  </tbild>
 </bild>
</bilder>[/SIZE][/FONT]

Die AS-Ebene:

Code:
[FONT=Arial][SIZE=3]/* Verbindung (flashvars) für die XML-Datei:
-----------------------------------------------------------*/
try 
{
 var myURL:String;
 var keyStr:String;
 var valueStr:String;
 var butterfly_foto_xml:XML;
 var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;
 for (keyStr in paramObj) {
 valueStr = String(paramObj[keyStr]);
 if(keyStr == "xmlurl")
  {
   myURL = valueStr;
  }
  trace("\t" + keyStr + ":\t" + valueStr + "\n");
  }
 } 
 catch (error:Error) 
 {
 trace(error.toString());
}
init(myURL);


/* Bewegungen mit Tweener Caurina:
---------------------------------------------------*/
import caurina.transitions.*;

/* Variablen:
----------------*/
var zaehler_bilder_wurden_uebergeben:Number;
var i:Number; //62
var erstellte_xml_bildergalerie_ausgabe = new Array(); // XML Array
var bilderordner:String = "photos/";
var zaehler_kleines_bild_wird_geladen:Number = 0;
var bilder_gruppe:MovieClip = new MovieClip();
var buehne_bilder:MovieClip;
var xml_variablen_anzeigen:Number = 0;

this.addChild(bilder_gruppe);

info_bilder_geladen.text = "";

function init(url:String):void
{
 var xml_laden:URLLoader = new URLLoader();
 xml_laden.addEventListener(Event.COMPLETE, bildergalerie_aus_xml_erstellen);
 xml_laden.load(new URLRequest(url));
}

function bildergalerie_aus_xml_erstellen(ev:Event):void 
{
 butterfly_foto_xml = new XML(ev.target.data);
 zaehler_bilder_wurden_uebergeben = butterfly_foto_xml.bild.length();
 for(i = 0; i < zaehler_bilder_wurden_uebergeben; i++)
 {
  erstellte_xml_bildergalerie_ausgabe.push( {
  klbild: butterfly_foto_xml.bild[i].klbild.toString(), 
  grbild: butterfly_foto_xml.bild[i].grbild.toString(), 
  nabild: butterfly_foto_xml.bild[i].nabild.toString(), 
  tbild: butterfly_foto_xml.bild[i].tbild.toString() } );
 }
 kleine_bilder_laden(ev);
}

function kleine_bilder_laden(ev:Event):void
{ 
 var bilder_laden:Loader = new Loader();   
 bilder_laden.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, anzeige_kleine_bilder_werden_geladen);
 bilder_laden.contentLoaderInfo.addEventListener(Event.COMPLETE, vorgaben_kleine_bilder); 
 var bilder_suchen:URLRequest = new URLRequest(bilderordner + erstellte_xml_bildergalerie_ausgabe[zaehler_kleines_bild_wird_geladen].klbild);
 bilder_laden.load(bilder_suchen);
 zaehler_kleines_bild_wird_geladen++;
}

function anzeige_kleine_bilder_werden_geladen(ev:ProgressEvent):void
{
 info_bilder_geladen.text = "Bilder werden geladen: " + zaehler_kleines_bild_wird_geladen + " von " + zaehler_bilder_wurden_uebergeben;
}

function vorgaben_kleine_bilder(ev:Event):void
{
 if(zaehler_kleines_bild_wird_geladen < zaehler_bilder_wurden_uebergeben)
 kleine_bilder_laden(ev);
 else
 info_bilder_geladen.text = "";

 var bild_klein:Bitmap = new Bitmap();
 var mc_bild_klein:MovieClip = new MovieClip();
 
 bild_klein = Bitmap(ev.target.content);
 bild_klein.smoothing = true;
 bild_klein.width = 120; // Breite Bild klein
 bild_klein.height = 90; // Höhe Bild klein
 
 mc_bild_klein.addChild(bild_klein);
 mc_bild_klein.buttonMode = true;
 mc_bild_klein.tabEnabled = false;
 mc_bild_klein.focusRect = false;
 mc_bild_klein.smoothing = true;
 mc_bild_klein.x = 470; // Start der kleinen Bilder X Achse
 mc_bild_klein.y = 470; // Start der kleinen Bilder Y Achse
 mc_bild_klein.alpha = 0;
 
var txt:TextField = new TextField();
txt.text = butterfly_foto_xml.bild[xml_variablen_anzeigen].nabild.toString(); // Hier sollen die Bildnamen geladen werden

var myBitmapData:BitmapData = new BitmapData(80, 20);
myBitmapData.draw(txt);
var bmp:Bitmap = new Bitmap(myBitmapData);
mc_bild_klein.addChild(bmp);

Tweener.addTween(mc_bild_klein, {x: Math.random() * 350 + 450, y: Math.random() * 170 + 100, alpha: 1, rotation: Math.random() * 90 - 45, time: 1, transition: "easeOutQuart"});
 bilder_gruppe.addChild(mc_bild_klein);
}[/SIZE][/FONT]

Wäre echt nett von Dir wenn Du dafür eine Lösung parat hättest, Danke!

Grüße,

Indium1
 
A

ad86

Guest

AW: new URLRequest

Hi,

Entschuldigung dass ich mich wieder bei Dir melde aber ich komme einfach nicht zurecht mit Deinem Script! Es hakt an allen Ecken und Enden und ich versuche schon seit 2 Tagen irgendwas hinzubekommen, leider ohne Ergebnis! Daher bitte ich Dich nochmals auf mein Script einzugehen, welches ich enorm gekürzt habe!

1. Versuchs doch nur einen Tag und melde Dich dann. Ich bin ja täglich hier.

2. Da ist ein Fehler mit der Variablen xml_variablen_anzeigen. Du hast am Anfang Sie auf 0 gesetzt und fragst Sie ab. Du erhöhst Ihren Wert aber nicht. Wenn Du in deinem Script ein
Code:
xml_variablen_anzeigen++;
hast, sollte es funktionieren. Dies kannst zum Beispiel in der Methode schreiben, in der Du Sie abfragst.

MFG ad86
 

Indium1

Nicht mehr ganz neu hier

AW: new URLRequest

Hallo ad86,

Zu 2.: Jaaaaaaaa, mega Euphorie :danke:, das sieht schon mal sehr gut aus. Was da zwei Pluszeichen ausmachen können ist schon ein Wahnsinn. Das hätte ich alleine nicht geschafft, glaub es mir! Übrigens, direkt in die Methode schreiben funktioniert:

Code:
[FONT=Arial][SIZE=3]
txt.text = butterfly_foto_xml.bild[xml_variablen_anzeigen++].nabild.toString();
[/SIZE][/FONT]
Im Script gab es Fehler, entweder wurden nur 2 von 4 Bildern oder 3 von 4 Bildern geladen!

Ich danke Dir für diesen wertvollen Tipp!!! :)

Zu 1.: Das werde ich auch versuchen, nicht nur einen Tag lang, kannst Dich schon mal mental darauf Einstellen ;)! Ich halte Deine Methode auch für den besseren Weg nur scheiterte es an meine Unwissenheit und da ist es mir einfach peinlich für jede Kleinigkeit nachzufragen. Ich bin eher der Typ der erst einmal alles ausprobiert was geht. Bei Deinem Script stand ich aber von Anfang an neben den Schuhen! Das Script habe ich auf meiner Platte gespeichert und komme in nächster Zeit auf jeden Fall darauf zurück und versuche mein jetziges (in Zusammenarbeit des Users ssandner bezüglich des Scrollbalkens und Textsmooth) aufzuarbeiten!

Also nochmals vielen, vielen Dank für Deine Unterstützung!

Grüße,

Indium1
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben