Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-01-2006, 13:53   #1 (permalink)
#no.991 @ MM
 
Benutzerbild von hugeinc
 
Registriert seit: Apr 2003
Ort: München
Beiträge: 327
XML Menu mit Leerplätzen

Hi zusammen,
ich hab mal ne Frage.
In einem Menu, was per XML gefüllt wird, en Childnode aus designgründen NICHT anzeigen lassen.
Mein Script:
Code:
function menuInit() {
	_global.host = 'local';
	mXML = new XML();
	mXML.ignoreWhite = true;
	mXML.onLoad = function(success) {
		if (success) {
			this.oLocation.onEnterFrame = null;
			mXML = this.firstChild;
			doArray();
			doMenu();
		} else {
			trace("*** menu.xml loading failed! ***");
		}
	};
	mXML.oLocation = this;
	if (_global.host == 'server') {
		this.mXML.load('menu.xml?random='+Math.random());
	} else if (_global.host == 'local') {
		this.mXML.load('menu.xml');
	}
}
menuArray = new Array();
eventArray = new Array();
function doArray() {
	for (var counter = 0; counter<mXML.childNodes.length; counter++) {
		// ausageb fuer text
		var nodePath = mXML.childNodes[counter];
		arr = [nodePath.firstChild.firstChild.nodeValue];
		menuArray.push(arr);
		// ausgabe für mEvent
		mAktion = nodePath.attributes.mEvent;
		eventArray.push(mAktion);
	}
}
function doMenu() {
	var nodePath = mXML.childNodes[counter];
	var nodesCount = mXML.childNodes.length;
	// trace("nodesCount: " + nodesCount)
	align = bottom;
	centerx = Stage.width/2;
	centery = Stage.height/2;
	menuholder = createEmptyMovieClip("menuholder", -1);
	menuholder._y = centery;
	// anzahl anhand childNodes
	menucount = nodesCount;
	menuitems = [];
	miwidth = 50;
	miborder = 5;
	startx = centerx-((menucount-1)*(miwidth+miborder));
	itemText.anz.text = "";
	itemText._alpha = 0;
	itemText.scaleTo(1, 1);
	for (var i = 0; i<menucount; i++) {
		
		
		if (eventArray[i] != "null") {
			var menuitem = menuholder.attachMovie('menuitem',  "menu"+i, i, _visible:false);
		} else {
			var menuitem = menuholder.attachMovie('menuitem', "menu"+i, i);
		}

		
		// var menuitem = menuholder.attachMovie("menuitem", "menu"+i, i);
		menuitem._x = startx+i*(miwidth+miborder);
		menuitem.id = i;
		menuitem.index = i;
		menuitem.onRollOver = function() {
			_root.selected = this;
			itemText.scaleTo(100, 5);
			// ausgabe der entsprechenden arrayinhalte
			anzeige = menuArray[this.index].toString();
			randomTypo.setText(instanceFake, anzeige, "|", ls1, ls2, ls3, ls4);
			itemText.alphaTo(100, 20);
			// itemText.slideTo(this._x,this._y, 3, "easeOutSine");
			itemText.slideTo(_root._xmouse, _root._ymouse);
			this.colorTo(0x990000, 1, "easeOutSine");
			this.scaleTo(300, 1);
		};
		menuitem.onRelease = function() {
			trace(eventArray[this.index]);
		};
		menuitem.onRollOut = function() {
			itemText.scaleTo(1, 10);
			itemText.alphaTo(0, 6);
			itemText.slideTo(centerx, centery, 6, "easeOutSine");
			// itemText.anz.text = ""
			this.scaleTo(100, 1);
			this.colorTo(0xCCCCCC, 1, "easeOutSine");
		};
		menuitems.push(menuitem);
	}
	onEnterFrame = function () {
		var width = 0;
		for (var i = 0; i<menucount; i++) {
			var xxm = menuitems[i]._xmouse;
			var yym = menuitems[i]._ymouse;
			var xm = Math.sqrt(xxm*xxm+yym*yym);
			if (xm<50) {
				menuitems[i]._xscale = menuitems[i]._yscale += ((200-xm)-menuitems[i]._yscale)/3;
			} else {
				menuitems[i]._xscale = menuitems[i]._yscale += (100-menuitems[i]._yscale)/3;
			}
			width += menuitems[i]._width;
		}
		width += (menucount-1)*miborder;
		var xpos = Math.round(centerx-width/2);
		for (var i = 0; i<menucount; i++) {
			xpos += menuitems[i-1]._width/2+miborder+menuitems[i]._width/2;
			menuitems[i]._x = xpos;
		}
	};
}
Meine XML sieht so aus:
Code:
<?xml version="1.0" encoding="UTF-8"?>
<navigation>
   <navElement mEvent="link A">
      <mName>erster linktext</mName>
   </navElement>
   <navElement mEvent="null"/>
   <navElement mEvent="link B">
      <mName>zweiter linktext</mName>
   </navElement>
   <navElement mEvent="link C">
      <mName>dritter linktext</mName>
   </navElement>
</navigation>
Ein beispielmovie hab ich mal dazuglegt.
Wenn das Movie losrennt, werden 4 Kästen erzeugt, die noch Funktionen haben. Ich würde aber gerne den (hier) zweiten Kasten unsichtbar bzw. so inaktiv machen, das dort ein Leerplatz ist.
In dem Menuscript bekomme ich vor dem erstellen des Menus die "null" Position raus.
Nur wie krieg ich das hin, dass mir die zweite Position als _visible angezeigt wird.
Bin echt für jede Hilfe dankbar.

Ach ja, später möchte ich es so machen, dass maximal 6 Rechtecke angezeigt werden und die folgenden in eine zweite reihe gestellt werden :-)

Gruss, Micha
Angehängte Dateien
Dateityp: zip flas.zip (13,5 KB, 13x aufgerufen)
__________________
Arbeit ist keine Lösung...
hugeinc 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 13:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele