Elegantere Laufleisten-Lösung?

NoGFX

Erfahrenes Mitglied
Hallo,
ich erstelle grade eine kleine Navigation, welche als Laufleiste agiert, nur finde die Umsetzung nicht unbedingt sehr gelungen, gibt es einen schöneren Weg, um den Scrolleffekt einsetzen zu lassen, anstatt non-stop einen onEnterFrame durchlaufen zu lassen?

PHP:
var textInput:Array = new Array("Blindeintrag", "Testeintrag", "Teste mich", "Test entry");
var xBut:Number = 0;
// Definieren von Text Format für Buttons
var button_fmt:TextFormat = new TextFormat();
button_fmt.color = 0x333333;
button_fmt.font = "ArialStd";
button_fmt.size = 11;
// Erstellen von MovieClips
this.createEmptyMovieClip("navCont_mc", 1);
this.navCont_mc.createEmptyMovieClip("button_mc", 2);
this.navCont_mc._x = 0;
this.navCont_mc._y = 150;
// Laufleisten"listener"
this.navCont_mc.onEnterFrame = function() {
	if (this._ymouse>=0 && this._ymouse<=this._height) {
		if (this._xmouse>=0 && this._xmouse<=this._width/2) {
			this.button_mc._x += 5;
		} else if (this._xmouse<=this._width && this._xmouse>=this._width/2) {
			this.button_mc._x -= 5;
		}
	}
};
// Zeichnen von Background der Laufleiste
var drawBg:MovieClip = this.navCont_mc.createEmptyMovieClip("background_mc", 1);
drawBg.beginFill(0x000000, 10);
drawBg.lineTo(0, 0);
drawBg.lineTo(Stage.width, 0);
drawBg.lineTo(Stage.width, 35);
drawBg.lineTo(0, 35);
drawBg.endFill();
// Aufbauen des Menüpunkte
function buildMenu(i:Number) {
	var fieldPath_mc:MovieClip = this.navCont_mc.button_mc.createEmptyMovieClip("txtField_mc", i+10);
	//
	fieldPath_mc.createTextField("button_txt", 1, xBut+10, 10, 1, 1);
	fieldPath_mc.button_txt.autoSize = true;
	fieldPath_mc.button_txt.selectable = false;
	fieldPath_mc.button_txt.embedFonts = true;
	fieldPath_mc.button_txt.antiAliasType = "advanced";
	fieldPath_mc.button_txt.text = textInput[i];
	fieldPath_mc.button_txt.setTextFormat(button_fmt);
	//
	fieldPath_mc.onRollOver = function() {
		this._alpha = 20;
	};
	fieldPath_mc.onRollOut = fieldPath_mc.onReleaseOutside=function () {
		this._alpha = 100;
	};
	xBut += fieldPath_mc.button_txt._width+25;
}
// Aufrufen der buildButton Funktion
for (i=0; i<=textInput.length-1; ++i) {
	buildMenu(i);
}
 

Anhänge

Zuletzt bearbeitet:
Hallo,

ich bin nun nicht ganz schlau geworden aus dem Teil:
Wenn ich meine Maus auf den grauen Balken bewege, wird die Navigation abhängig von der Mausposition schlichtweg entweder nach rechts oder nach links aus dem Bild geschoben. Das macht meiner Meinung nach wenig bis gar keinen Sinn. Könntest du die gewünschte Funktionalität mal genauer beschreiben?


gruss
 
Es ist die abgespeckte Version des ganzes, wollte damit die Grundfunktion hervorheben.

Die Originalversion beinhaltet mehr Menüpunkte, eine Maske und ein paar weitere Details. Das ganze würde den Inhalt in das von der Maske bedeckte (somit sichtbare) Feld bewegen.
 
Hallo,

ich verstehe immer noch nicht ganz, aber um deine Frage zu beantworten:
Meiner Meinung nach ist an einer fortlaufenden onEnterFrame-Schlaufe nichts auszusetzen, du könntest aber als Alternative den onMouseMove-Event der Maus-Klasse dazu verwenden, die onEnterFrame-Schlaufe zu starten bzw. zu unterbrechen:

Code:
function onMouseMove (): Void {
	var x: Number = _xmouse;
	var y: Number = _ymouse;
	
	var ctrl: Boolean = navCont_mc.hitTest(x, y, false);
	if (ctrl && !navCont_mc.onEnterFrame) initScrolling();
	else if (!ctrl && navCont_mc.onEnterFrame) delete navCont_mc.onEnterFrame;
	
}

function initScrolling (): Void {
	this.navCont_mc.onEnterFrame = function() {
		if (this._ymouse>=0 && this._ymouse<=this._height) {
			if (this._xmouse>=0 && this._xmouse<=this._width/2) {
				this.button_mc._x += 5;
			} else if (this._xmouse<=this._width && this._xmouse>=this._width/2) {
				this.button_mc._x -= 5;
			}
		}
	}
}

Ob jedoch der Performance-Gewinn den Mehraufwand wert ist, ist zu bezweifeln.

gruss
 
Zurück