mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Mi 07.12.2016 19:58 Benutzername: Passwort: Auto-Login

Thema: [Actionscript]dyn. XML-Menü wird nicht angezeigt vom 25.06.2005


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Multimedia -> [Actionscript]dyn. XML-Menü wird nicht angezeigt
Autor Nachricht
l'Audiophile
Threadersteller

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 35
Geschlecht: Männlich
Verfasst Sa 25.06.2005 12:22
Titel

[Actionscript]dyn. XML-Menü wird nicht angezeigt

Antworten mit Zitat Zum Seitenanfang

Jaja, der PeJot sieht mal wieder den Wald vor lauter Bäumen nicht. Menno!

Ich habe ein dynamisches Menü gescriptet, in welchem die Informationen zu Format und Anordnug des Menüs aus einer XML-Datei bezogen werden.
Mein Problem ist jetzt, das die Menüeigenschaften einwandfrei aus der XML ausgelesen werden; sie lassen sich auch ohne Probleme austracen.
Allerdings werden sie nicht verarbeitet bzw. die Buttons werden nicht angezeigt.
Ich denke mal, dass es sich nur um ein kleinen Flüchtigkeitsfehler handelt, da vor der XML-Anbindung (fast) alles wunschgemäß funktionierte.

Mein Actionscript:
Code:

///////////////////////////////// OPTIK ///////////////////////////////////
// XML
format_xml = new XML();
format_xml.ignoreWhite = true;
format_xml.load("format.xml");
format_xml.onLoad = function(status) {
if (status && this.loaded) {
trace('format.xml geladen');
//++++++++++++++++++++++++++++++ optik des menues +++++++++++++++++++++++++
format_menue = format_xml.firstChild.childNodes[0].attributes;
_global.abstand_menuepunkte = format_menue.buttonabstand;
_global.xposition_menue = format_menue.xposition;
_global.yposition_menue = format_menue.yposition;
_global.buttonhoehe = format_menue.buttonhoehe;
_global.buttonbreite = format_menue.buttonbreite;
_global.buttonfarbe = format_menue.buttonfarbe;
_global.buttonfarbe_rand = format_menue.buttonrandfarbe;
_global.buttontransparenz = format_menue.buttontransparenz;
_global.buttonrandtransparenz = format_menue.buttonrandtransparenz;
_global.randbreite = format_menue.buttonrandtransparenz;
//++++++++++++++++++++++++++++++ optik des balkens +++++++++++++++++++++++++
format_balken = format_xml.firstChild.childNodes[1].attributes;
_global.startx = format_balken.xposition;
_global.starty = format_balken.yposition;
_global.breite = format_balken.breite;
_global.hoehe = format_balken.hoehe;
_global.farbe = format_balken.farbe;
_global.alpha = format_balken.transparenz;
//++++++++++++++++++++++++++++++ schriftformatierung ++++++++++++++++++++++
format_text = format_xml.firstChild.childNodes[2].attributes;
_global.textfarbe = format_text.farbe;
_global.schriftart = format_text.schriftart;
_global.schriftgroesse = format_text.schriftgroesse;
_global.schriftfett = format_text.schriftfett;
_global.schriftkursiv = format_text.schriftkursiv;
_global.schriftunterstrichen = format_text.schriftunterstrichen;
_global.textausrichtung = format_text.textausrichtung;
//++++++++++++++++++++++++++++++ ziel mc format ++++++++++++++++++++++
format_ziel = format_xml.firstChild.childNodes[3].attributes;
_global.ziel_xpos = format_ziel.xposition;
_global.ziel_ypos = format_ziel.yposition;
var geladen = true;
createziel();
}
};
stop();
///////////////////////////////// TECHNIK //////////////////////////////////
createziel = function () {
// ++++++++++++++++++++++++++++++ externe dateien +++++++++++++++++++++++++++
_root.createEmptyMovieClip("ziel", 2);
_root.ziel._x = ziel_xpos;
_root.ziel._y = ziel_ypos;
_root.ziel.loadMovie("test.swf");
preloader();
};
// XML
pfade_xml = new XML();
pfade_xml.ignoreWhite = true;
pfade_xml.load("pfade.xml");
pfade_xml.onLoad = function(status) {
if (status && this.loaded) {
_global.anzahl_menuepunkte = pfade_xml.firstChild.childNodes.length;
var geladen = true;
buttons();
}
};
//
buttons = function () {
for (var i = 0; i<anzahl_menuepunkte; i++) {
_global.path = pfade_xml.firstChild.childNodes[i].attributes.pfad;
// +++++++++++++++++++++++++++++ buttons zeichnen ++++++++++++++++++++++++++
_root.createEmptyMovieClip("btnFill"+i, i+1000);
mcName = "btnFill"+i;
trace(xposition_menue);
trace(buttonhoehe);
trace(abstand_menuepunkte);
trace(buttonfarbe);
trace(buttonbreite);
trace(buttontransparenz);
this[mcName]._x = xposition_menue;
this[mcName]._y = yposition_menue+buttonhoehe*(i)+abstand_menuepunkte*(i);
with (this[mcName]) {
beginFill(buttonfarbe, buttontransparenz);
moveTo(0, 0);
lineTo(buttonbreite, 0);
lineTo(buttonbreite, buttonhoehe);
lineTo(0, buttonhoehe);
lineTo(0, 0);
endFill;
}
_root.createEmptyMovieClip("btnBorder"+i, i+2000);
mcName2 = "btnBorder"+i;
this[mcName2]._x = xposition_menue;
this[mcName2]._y = yposition_menue+buttonhoehe*(i)+abstand_menuepunkte*(i);
with (this[mcName2]) {
lineStyle(randbreite, buttonfarbe_rand, buttonrandtransparenz);
moveTo(0, 0);
lineTo(buttonbreite, 0);
lineTo(buttonbreite, buttonhoehe);
lineTo(0, buttonhoehe);
lineTo(0, 0);
}
trace(path);
// ++++++++++++++++++++++++++++++ buttonereignisse ++++++++++++++++++++++++++
this[mcName].onPress = function() {
ziel.loadMovie(path);
preloader();
};
}
// Ende For-Schleife
};
//////////////////////////////// PRELOADER ////////////////////////////////
preloader = function () {
//+++++++++++++++++++++++++++++++ der balken +++++++++++++++++++++++++++++++++
_root.createEmptyMovieClip("balken_mc",1);
balken_mc._x = startx;
balken_mc._y = starty;
with(balken_mc){
beginFill(farbe,alpha);
lineTo(0,hoehe);
lineTo(breite,hoehe);
lineTo(breite,0);
lineTo(0,0);
endFill();
};
//++++++++++++++++++++++++++++++ die anzeige +++++++++++++++++++++++++++++++++
for(var i = 1;i <= 5;i++){
_root.createTextField("anzeige"+i,20+i,startx,starty+(20*i),300,20);
anzeigeformat = new TextFormat();
anzeigeformat.color = textfarbe;
anzeigeformat.font = schriftart;
anzeigeformat.size = schriftgroesse;
anzeigeformat.bold = schriftfett;
anzeigeformat.italic = schriftkursiv;
anzeigeformat.underline = schriftunterstrichen;
anzeigeformat.align = textausrichtung;
}
_root.onEnterFrame = function(){
var total = _root.ziel.getBytesTotal();
var geladen = _root.ziel.getBytesLoaded();
var zeit = getTimer();
var sekunden = Math.round((zeit-at)/1000);
var b = Math.round((total*sekunden)/geladen);
var togo = Math.round(-(sekunden-b));
if(geladen == total){
for(var i = 1;i <= 5;i++){
_root["anzeige"+i].removeTextField();
}
balken_mc.clear();
delete this.onEnterFrame;
}
else {var prozent = (geladen/total)*100;
anzeige1.text = "Es wurden "+Math.round(geladen/1024)+" Kb von "+Math.round(total/1024)+" Kb geladen";
anzeige1.setTextFormat(anzeigeformat);
anzeige2.text = "Das sind nach Adam Riese "+Math.round(prozent)+" %";
anzeige2.setTextFormat(anzeigeformat);
anzeige3.text = "Die abgelaufene Zeit beträgt "+sekunden+" Sekunden";
anzeige3.setTextFormat(anzeigeformat);
anzeige4.text = "Sie müssen sich noch ca. "+togo+" Sekunden gedulden";
anzeige4.setTextFormat(anzeigeformat);
balken_mc._xscale = prozent;
}

}
};



die XML-Datei:
Code:

<?xml version='1.0' encoding='utf-8'?>
<format>
    <menue buttonabstand="5" xposition="20" yposition="20" buttonhoehe="20" buttonbreite="80" buttonfarbe="0x009900" buttonrandfarbe="0x000000" buttontransparenz="100" buttonrandtransparenz="100" randbreite="1" />
    <balken xposition="290" yposition="190" breite="250" hoehe="10" farbe="0x009900" transparenz="100" />
    <schrift farbe="0x009900" schriftart="'Verdana'" schriftgroesse="10" schriftfett="0" schriftkursiv="0" schriftunterstrichen="0" textausrichtung="'left'"/>
    <container xposition="150" yposition="20" breite="" hoehe="" />
</format>


Danke schon mal für eure Hilfe.

Gruß PeJot
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tuxedo

Dabei seit: 10.10.2002
Ort: ~/
Alter: 44
Geschlecht: -
Verfasst Sa 25.06.2005 14:34
Titel

Antworten mit Zitat Zum Seitenanfang

rofl...

ich baue gerade eine komplette seite, welche sämtliche contents und eigenschaften aus
xmls bezieht. keine leichte aufgabe, wenn ein flashfilm nur aus drei frames besteht und
alles via script abläuft....Lächel...egal. wenn ich gleich ein wenig zeit haben sollte, schau
ich da mal drüber....

// edit...

ok, also auf den ersten blick:
mir scheint es so, als ob du flash nicht genügend zeit gibst. klingt blöd, ist aber
so. ich habe die erfahrung gemacht das es besser ist, eine kurze funktion zu
schreiben, die den status des parsens überwacht, und dann erst die initialisierungen
aufzurufen (am besten sogar mit nem simplen gotoAndStop, bei dem im aufgerufenen
frame die initfunktion steht. also erster frame das inklude samt stop, im inklude
die onEnterFrame-geschichte starten usw.).
ausserdem: lass dir mal die vorhandenen objekte und variablen ausgeben. stell sicher,
das dein erstellen der mcs tatsächlich funktioniert. ich habe mir angewöhnt, dummys
anzulegen, welche dupliziert werden und die eigenschaften vererbt bekommen.


Zuletzt bearbeitet von tuxedo am Sa 25.06.2005 14:57, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden
Anzeige
Anzeige
common svensson

Dabei seit: 23.06.2005
Ort: -
Alter: 35
Geschlecht: Männlich
Verfasst Mo 27.06.2005 18:53
Titel

Antworten mit Zitat Zum Seitenanfang

Die Buttons werden erstellt - allerdings außerhalb des sichtbaren Bereichs.
Hier liegt der Fehler:
Code:
this[mcName]._y = yposition_menue+buttonhoehe*(i)+abstand_menuepunkte*(i);


Wenn du this[mcName]._y mit trace() ausgibst, dann wirst du feststellen, dass da astronomisch hohe Werte bei rauskommen, z.B. "204010". Das liegt daran, dass du Strings addierst (yposition_menue, etc.), denn die Daten aus XML werden grundsätzlich als String übergeben. Einfach bei Rechenoperationen die Strings vorher umwandeln:

Code:
this[mcName]._y = Number(yposition_menue)+Number(buttonhoehe)*i+Number(abstand_menuepunkte)*i;


Oder einfach beim Auslesen der Daten aus XML generell die Werte in Zahlen umwandeln, die auch als Zahlen gedacht sind:

Code:
_global.yposition_menue = Number(format_menue.yposition); // etc.
  View user's profile Private Nachricht senden
l'Audiophile
Threadersteller

Dabei seit: 16.09.2004
Ort: Berlin
Alter: 35
Geschlecht: Männlich
Verfasst Mo 27.06.2005 18:57
Titel

Antworten mit Zitat Zum Seitenanfang

Hat sich schon erledigt. Aber danke fürs Gedanken machen. *zwinker*


Gruß PeJot






an die Mods:
Ihr könnt den Thread ruhig zumachen, wenn ihr Lust habt. *zwinker*
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen [Flash MX] Brauche Denkanstoß - dyn. Menü aus XML / rekursiv
Actionscript - XML Bildpfad auslesen
[actionscript] punkte aus xml auf landkarte schreiben
ausgelesene xml wird nicht angezeigt
[AS3] XML wird nicht komplett ausgelesen/angezeigt
java script menü wird über flash film nicht angezeigt
Neues Thema eröffnen   Neue Antwort erstellen
MGi Foren-Übersicht -> Multimedia


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.