Flashhilfe.de - Flash Community

Laden über XML [Flash 10]

Forum > ActionScript 3.0 > Laden über XML

 


AntwortenRegistrieren Seite1  

 03.03.2009, 00:31 
Beiträge: 7
Registriert: Mar 2009

Laden über XML
Hi,

ich möchte eine Art Bildergallerie erstellen, in welcher verschaltete MC geladen werden sollen. Wie sollte es anders sein, hängt das vorhaben an der einen oder anderen Stelle.

Meine vorgehensweise sieht folgendermaßen aus:

1. Erstellen eines Sprites
ActionScript:
1
2
var container:MovieClip = new MovieClip();
addChild(container);


2. Das einalden der Bilder aus einer XML-Datei
ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var bilder = [];
var eingeladen:URLLoader = new URLLoader();
eingeladen.load(new URLRequest("bilder.xml"));
eingeladen.addEventListener(Event.COMPLETE, parseXML);

function parseXML(ev) {
var xml_dokument:XML = new XML(ev.target.data);
for (var i:int = 0; i < xml_dokument.bild.length(); i++) {
var bild = new Object();
bild.dateiname = xml_dokument.bild[i].dateiname.text();
bilder[bilder.length] = bild;
}      
rahmen();
}


3. Dann wird aus der Bibliothek heraus ein Rahmen geladen
ActionScript:
1
2
3
4
5
6
7
8
9
function rahmen() {
for (var i:uint = 0; i < 5; i++) {
var frame_mc:MovieClip = new ( getDefinitionByName( 'frame' ) )();
frame_mc.name = "bild"+i;
frame_mc.x = (68*i);
container.addChild(frame_mc);
}
ladeBild();
}


4. Danach sollen die Bilder in die Rahmen eingefasst werden, welche zuvor aus der XML-Datei gealden wurden
ActionScript:
1
2
3
4
5
6
7
8
function ladeBild() {
for (var j:uint; j < 2; j++) {
var bild:MovieClip = new MovieClip();
bild.name = "beispiel" + j;
var loader:Loader = new Loader();
container.addChild(bild);
loader.load(new URLRequest (bilder[nr + count].dateiname));
}}


Der 4. Punkt läuft auch durch, ich sehe aber die eingeladenen Bilder nicht.
Kann mir jemand einen Hinweis geben, wie die Bilder in den Movieclip z.B. bild0 geladen werden können bzw. wie Syntax dazu auszusehen hat?

Vielen Dank!
 03.03.2009, 13:57Re1
Beiträge: 21
Registriert: Mar 2009

grüße dich ...

...setzt den loader auch mal auf die bühne dann sollten die bilder auch zu sehen sein ....

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
function ladeBild()
{
for (var j:uint; j < 2; j++) {
var bild:MovieClip = new MovieClip();
var loader:Loader = new Loader();
bild.addChild(loader);    //<-----------------
container.addChild(bild);
bild.name = "beispiel" + j;
loader.load(new URLRequest (bilder[nr + count].dateiname));
}
}


..ich glaub so könnte es funktionieren ...

mfg
Geändert von malaclypse am 03.03.09 um 13:58 Uhr

 03.03.2009, 14:09Re2
Beiträge: 604
Registriert: Jan 2007

woher kommen die beiden Variablen nr und count? Zähl die schleife j auch dann wenn die Bedingung j=0 nicht erfüllt ist?

mfg
jill
 
nicht sichtbar bei eingeloggten Mitgliedern
 03.03.2009, 14:38Re3
Beiträge: 7
Registriert: Mar 2009

Themenautor/in

@malaclypse

Dein Hinweis bringt schon ein ganzes Stück weiter.
Ich würde den Loader gerne in den davor erzeugten Rahmen laden. Müsste ungefähr so aussehen, aber irgendwie stimmt die Syntax hier nicht:

ActionScript:
1frame_mc.addChild(loader);


Sehe gerade das dort die Bezeichnungen indentisch sind. Aber egal, die einzelnen Bilder sollen jeweils in einen Rahmengeladen werden (verschachtelt).

Wenn du mir hier noch einen Tip geben würdest, wäre ich glücklich.

@jill

Die beiden Variablen stammen eigentlich direkt aus dem Aufruf der Funktion heraus. Der Übersicht wegen habe ich den Code etwas gekürzt, aber nicht kurz genug gemacht. :-)
 03.03.2009, 21:13Re4
Beiträge: 21
Registriert: Mar 2009

...ich glaub so könnte es funktionieren ...

ActionScript:
1
2
3
4
5
6
function ladeBild() :Loader //<<---korrigiert!!
{
    var loader:Loader = new Loader();
    loader.load(new URLRequest (bilder[nr + count].dateiname));
    return loader;//<<<----
}


beim erstellen eines neuen frames, erstellst du auch gleich den loader und übergibst ihm dem frame_mc beim aufruf der funktion.

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
function rahmen()
{
    for (var i:uint = 0; i < 5; i++)
    {
    var frame_mc:MovieClip = new ( getDefinitionByName( 'frame' ) )();
    frame_mc.name = "bild"+i;
    frame_mc.x = (68*i);
    frame_mc.addChild(ladeBild());//<<---
    container.addChild(frame_mc);
    }
}


..ich hoffe ich habe dein vorhaben richtig verstanden ...

mfg
Geändert von malaclypse am 03.03.09 um 23:17 Uhr

 03.03.2009, 22:32Re5
Beiträge: 7
Registriert: Mar 2009

Themenautor/in

Der Ansatz klingt wirklich vielversprechend.

Es wird jetzt eine Fehlermeldung ausgegeben, das in der Zeile
ActionScript:
1function ladeBild() : loader

1046: Typ wurde nicht gefunden oder war keine Kompilierungszeit-Konstante: loader.

Bekommen wir das noch gefixt?

Dickes Danke auch schon an dich für deine Bemühungen.
 
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting
 03.03.2009, 23:16Re6
Beiträge: 21
Registriert: Mar 2009

... jo stimmt, da hab ich mich verschrieben, es muß groß geschrieben werden
ActionScript:
1function ladeBild():Loader //<<---


mfg
 04.03.2009, 18:18Re7
Beiträge: 7
Registriert: Mar 2009

Themenautor/in

Jetzt hat es mit dem Laden der Bilder aus der XML-Datei funktioniert.

Vielen Dank nochmal.
 07.04.2009, 09:31Re8
Benutzerbild von fahluk
Beiträge: 15
Registriert: Jan 2009

Hallo,

würde gerne dieses Script verwenden, kann mir bitte jemand sagen wie die bilder.xml aussehen sollte?

Vielen Dank
fahluk
 07.04.2009, 09:47Re9
Beiträge: 7
Registriert: Mar 2009

Themenautor/in

Die von mir in dieser Anfrage verwendete XML-Datei hat folgendes Format:

<?xml version="1.0"?>
<bilder>
   <bild id="1">
      <dateiname>1.jpg</dateiname>
   </bild>
   <bild id="2">
      <dateiname>2.jpg</dateiname>
   </bild>
</bilder>
 07.04.2009, 10:08Re10
Benutzerbild von fahluk
Beiträge: 15
Registriert: Jan 2009

Danke, aber etwas will bei mir nicht klappen, ich bekomme folgende Fehlermeldungen:
1120: Access of undefined property count.
1120: Access of undefined property nr.
 07.04.2009, 12:42Re11
Beiträge: 7
Registriert: Mar 2009

Themenautor/in

Die beiden Variablen count und nr sind von mir gesetzt worden, damit die Bildnummern hochgezählt werden können. Diese Variablen musst du aber nicht zwangsweise verwenden.

Du kannst dort irgendeine Variable verwenden.
Oder alternativ dazu schreibst du:
ActionScript:
1loader.load(new URLRequest (bilder[0].dateiname));
 07.04.2009, 13:30Re12
Benutzerbild von fahluk
Beiträge: 15
Registriert: Jan 2009

Oje, jetzt bekomme ich plötzlich eine ganze Menge Fehlermeldungen:
ActionScript:
1
2
3
4
5
6
7
ReferenceError: Error #1065: Variable frame is not defined.
   at global/flash.utils::getDefinitionByName()
   at diaschau_fla::MainTimeline/rahmen()
   at diaschau_fla::MainTimeline/parseXML()
   at flash.events::EventDispatcher/dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at flash.net::URLLoader/onComplete()

Kann es sein daß ich zusätzlich zu deinem Code, der xml-Datei und den Bildern sonst noch was brauche?
 05.05.2009, 16:20Re13
Beiträge: 13
Registriert: Apr 2009

ich habe das gleiche problem. Muss man im header vielleicht noch was einbinden?
 
Themen
Ähnliche Beiträge zum Thema
swf über xml laden [Flash 10] 05.12.2010 - beamer
 

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.
Partner Webseiten: DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   PSD-Tutorials.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2012 Sebastian Wichmann - Flashhilfe.de