Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash MX

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26-07-2007, 10:07   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 2
Red face Button-Link auf Array einfügen ... nur wie?

Hallo an alle,

ich habe folgendes Problem:
Ich habe ein Movie kreiert, in dem die Buttons einer Navigation per AS und einer XML Datei erzeugt werden. In der XML Datei stehen die Aufschrift für die Buttons und
die Datei, die später geladen werden soll:
Code:
<?xml version="1.0" encoding="utf-8"?>
<mainmenu>
     <menuitem name="HOME"	loader="rare_home.swf" />
     <menuitem name="ÜBER RARE" loader="rare_theband.swf" />
     <menuitem name="OnSTAGE" loader="rare_onstage.swf" />
     <menuitem name="CDs" loader="rare_cds.swf" />
     <menuitem name="FOTOALBUM" loader="rare_fotos.swf" />
     <menuitem name="GÄSTEBUCH" loader="rare_guestbook.swf" />
     <menuitem name="LINKS" loader="rare_links.swf" />
</mainmenu>
Im Movie wird die XML dann ausgelesen und pro Attribute jeweils ein Array angelegt.
Pro Array-Position wird dann ein Button mit der korrekten Aufschrift erzeugt.
Mein Problem ist jetzt nur, dass ich es nicht hin bekomme, dem Button die zu öffnende Datei zu übergeben, also eine onPress() Handler zu erstellen in den die korrekte Datei per loadMovie() geöffnet wird:

Diese Script habe ich auf _root im ersten Bild erzeugt:
Code:
// Ausrichtung des gesamten Films
stage.scaleMode = "noscale";
stage.align = "B";
stage.showMenu = false;

// welcher Button wurde zuletzt geklickt?
var pressedButton = null;

stop();

// Hauptnavigation laden
var xmlMainNavi = new XML();
xmlMainNavi.ignoreWhite = true;
xmlMainNavi.load("../xml/rare.mainnavi.xml");

xmlMainNavi.onLoad = function(success) {
	xmlMainNavi_namen = [];
	xmlMainNavi_loader = [];
	
	if (success) {
		anzahl = xmlMainNavi.firstChild.childNodes.length;
		// Navi-Punkte in Arrays schreiben
		for (var i=0; i<xmlMainNavi.firstChild.childNodes.length; i++) {
			xmlMainNavi_namen[i] = xmlMainNavi.firstChild.childNodes[i].attributes.name;
			xmlMainNavi_loader[i] = xmlMainNavi.firstChild.childNodes[i].attributes.loader;
		}
		gotoAndPlay(2);
	}
}

// Globale Funktion zum Faden von Instanzen
_global.fade = function(mc, nr) {
	mc.onEnterFrame = function() {
		this._alpha += nr;
		if (this._alpha>100 || this._alpha<0) {
			delete this.onEnterFrame;
		}
	};
};

// Globale Funktion die beim Klick auf einen Button ausgeführt werden kann
// und einen MC ins Movie lädt.
_global.onClick = function(distance,button) {
	if(pressedButton != null) {
		pressedButton.gotoAndPlay(1);
	}
	pressedButton = button;
	trace(distance);
	trace(xmlMainNavi_loader[distance]);
	leerFuerInhalt.loadMovie(xmlMainNavi_loader[distance]);
}
und hier werden die Buttons erzeugt. Dieses AS steht an der Stelle, an der die Buttons erscheinen sollen:
Code:
stop();

// Hauptnavigation Button einfügen
var old_y = 806;
var old_x = 218;
var my_length = 143;

for(var j=0; j<xmlMainNavi_namen.length; j++) {
	//neuen X-Wert errechnen
	var new_x = old_x + (my_length * j);
	// Leeren Movie-Clip erstellen
	var myMC = this.createEmptyMovieClip("hm_but_mc"+j,j+1);
	// Alpha = 0 setzen
	myMC._alpha = 0;
	// X und Y zuweisen
	myMC._x = new_x;
	myMC._y = old_y;
	
	// Button hinzufügen
	// Alpha = 0%
	var myBut = myMC.attachMovie("Hauptmenu_Button", "hm_but"+j, j+10, {_y:0,_x:0});
	
	// Textfeld hinzufügen
	myMC.createTextField("hm_but_text"+j, j+100, -61, -11, 122, 18);
	var myButFld = myMC["hm_but_text"+j];
	with(myButFld) {
		text = xmlMainNavi_namen[j];
		multiline = false;
		wordWrap = false;
		selectable = false;
		border = false;
		myMCtf = new TextFormat();
		myMCtf.font = "Verdana";
		myMCtf.size = 11;
		myMCtf.align = "center";
		myMCtf.color = 0xFFFFFF;
		myMCtf.bold = true;
		myButFld.setTextFormat(myMCtf);
	}
	
	// Butten einfaden
	fade(myMC,30);
}

// Weiter machen
gotoAndPlay(26);
und zum Schluss noch das AS des Button-MCs aus Bild Nr. 1:
Code:
stop();

var thisNum = null;

function aktiv() {
	gotoAndPlay(1);	
}

function mouseOver() {
	gotoAndPlay(2);
}

function pressDown() {
	gotoAndPlay(11);
	delete this.onRollOver;
	delete this.onRollOut;
	delete this.onPress;
}

function mouseOut() {
	gotoAndPlay(13);
}
	
this.onRollOver = function() {
	mouseOver();
}
	
this.onRollOut = function() {
	mouseOut();
}
	
this.onPress = function() {
	onClick(thisNum,this);
	pressDown();
}
im Script in dem die Buttons erstellt werden möchte ich gerne jedem Button die variable j übergeben.
Ich weiß aber nicht wie. Ich im AS des Buttons schon eine variable thisNum erstellt. Aber wie kann ich ihr einen Wert übergeben?
Wäre echt prima wenn mir da jemand helfen kann. Ich verzweifle noch an der Sache.
fmueller ist offline   Mit Zitat antworten
Alt 26-07-2007, 10:16   #2 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 23
hi,


var myBut = myMC.attachMovie("Hauptmenu_Button", "hm_but"+j, j+10, {_y:0,_x:0});

und dann den wert setzen:

myBut.thisNum = j;


im as des buttons kannst du dann mit this.thisNum auf den wert zugreifen...

gruesse unbenannt
unbenannt ist offline   Mit Zitat antworten
Alt 26-07-2007, 10:24   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2007
Beiträge: 2
Das hatte ich schon versucht. Das funktioniert nicht. Ich habe ja im AS des Buttons var thisNum = null; gesetzt. Und diesen Wert verliert er auch nicht.
Ist das vielleicht das Problem?
fmueller ist offline   Mit Zitat antworten
Alt 26-07-2007, 11:28   #4 (permalink)
Neuer User
 
Registriert seit: May 2006
Beiträge: 23
klar dann überschreibst du den wert ja wieder
lass die zeile einfach weg
unbenannt ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele