Willkommen auf dem Portal für Mediengestalter
|
|
Autor |
Nachricht |
l'Audiophile
Threadersteller
Dabei seit: 16.09.2004
Ort: Berlin
Alter: 44
Geschlecht:
|
Verfasst Sa 25.06.2005 13:22
Titel [Actionscript]dyn. XML-Menü wird nicht angezeigt |
 |
|
Jaja, der PeJot sieht mal wieder den Wald vor lauter Bäumen nicht.
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
|
|
|
|
 |
tuxedo
Dabei seit: 10.10.2002
Ort: ~/
Alter: 53
Geschlecht: -
|
Verfasst Sa 25.06.2005 15:34
Titel
|
 |
|
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.... ...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 15:57, insgesamt 1-mal bearbeitet
|
|
|
|
 |
Anzeige
|
|
 |
common svensson
Dabei seit: 23.06.2005
Ort: -
Alter: 43
Geschlecht:
|
Verfasst Mo 27.06.2005 19:53
Titel
|
 |
|
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. |
|
|
|
|
 |
l'Audiophile
Threadersteller
Dabei seit: 16.09.2004
Ort: Berlin
Alter: 44
Geschlecht:
|
Verfasst Mo 27.06.2005 19:57
Titel
|
 |
|
Hat sich schon erledigt. Aber danke fürs Gedanken machen.
Gruß PeJot
an die Mods:
Ihr könnt den Thread ruhig zumachen, wenn ihr Lust habt.
|
|
|
|
 |
|
|
 |
Ähnliche Themen |
java script menü wird über flash film nicht angezeigt
wie erstelle ich diesen menü effekt bzw. das gesammte menü?
CSS Menü - Finde nicht das richtige Menü
Actionscript 2.0 für Scollpane
Flash Actionscript
Applescript & Actionscript
|
 |
|
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.
|
|