Laden über XML [Flash 10]
| 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:57 | Re1 | 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:09 | Re2 | 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:38 | Re3 | 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:| 1 | frame_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:13 | Re4 | 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:32 | Re5 | Beiträge: 7 Registriert: Mar 2009
Themenautor/in
| Der Ansatz klingt wirklich vielversprechend.
Es wird jetzt eine Fehlermeldung ausgegeben, das in der Zeile
ActionScript:| 1 | function 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 Mitgliedern | 
|
| 03.03.2009, 23:16 | Re6 | Beiträge: 21 Registriert: Mar 2009
| ... jo stimmt, da hab ich mich verschrieben, es muß groß geschrieben werden
ActionScript:| 1 | function ladeBild():Loader //<<---
|
mfg | |
| 04.03.2009, 18:18 | Re7 | 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:31 | Re8 | 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:47 | Re9 | 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:08 | Re10 | 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:42 | Re11 | 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:| 1 | loader.load(new URLRequest (bilder[0].dateiname));
|
| |
| 07.04.2009, 13:30 | Re12 | 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:20 | Re13 | 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 | 05.12.2010 - beamer 04.01.2010 - nameschonweg 14.09.2009 - Todeszucken 26.10.2009 - Aryn |
|
Flashhilfe.de Flash Platform Tipps & Tutorials Flash Platform Andere Programmiersprachen Jobangebote Diskussionen
Flashhilfe News 
Regeln & Bedingungen
|