for schleife + rollOver

Hi,

Dein Prototype muss in etwa so aussehen:
Code:
	MovieClip.prototype.bewegen = function(x, y, speed) {
		
		var mc = this;
		
		mc.onEnterFrame = function() {
			var position_box = position_box_x=position_box_y=true;
			
			if (Math.abs(this._x-x)>1) {
				this._x += (x-this._x)/speed;
				position_box = false;
			}
			if (Math.abs(this._y-y)>1) {
				this._y += (y-this._y)/speed;
				position_box = false;
			}
			if (position_box && position_box_x && position_box_y) {
				this._x = x;
				this._y = y;
				delete this.onEnterFrame;
			}
		};
	};
... und er gehört über (nicht in) die for-Schleife.

Nachteil: Jedes Mal, wenn sich die Maus über einem Menüpunkt befindet, wandert das Ding kurz nach unten, da durch das RollOver auf dem darüberliegenden Link ein rollOut auf dem eigentlichen Menu-MC ausgelöst wird.

In diesem Fall wäre es vielleicht sinnvoller, jedem Menü eine ständig laufende onEnterFrame-Methode zu geben, in der Du die Kollision mit der Maus per hitTest überprüfst.

Achtung: Die onEnterFrame-Methode im Prototype muss dann auf einem eigenen Unter-MC laufen, da Du sonst die Überwachungs-onEnterFrame-Methode überschreibst.

EDIT: Noch einfacher wäre es vielleicht, wenn jeder Untermenüpunkt beim rollOver auch ein rollOver auf dem darunterliegenden Menurahmen auslöst:
Code:
_root["menue_link_mc"+j]["menue_btn"+i].onRollOver = function() {
  _root["menue_link_mc" + this.idx].onRollOver();
Achtung: Hierfür musst Du auch den eigentlichen Menüpunkten den Index "j" als Member (idx) mitgeben!

Gruß
.
 
Danke danke danke....

Hätte das von haus aus so gemacht das ich den buttons die selbe prototypklasse zuweise wie den hazptmenüpkt.

ich habe glabe ich das prinzip der klassen von anfang an falsch verstanden ....
 
hab ich da jetzt wieder was missverstanden... so funktionierts nämlich nich ;)

PHP:
_root["menue_link_mc"+j]["menue_btn"+i].onRollOver = function() 
				 	{
  				 		 _root["menue_link_mc" + this.idx].onRollOver();
						 this.bewegen((160 * this.idx)-70, hoehe-170, 3); 
						 this.box_over._visible = false;
						 this.box_down._visible = true;
					}
 
_root["menue_link_mc" + this.idx].onRollOver();
Du musst den Index (idx) der zu dem Button gehörigen Menübox verwenden, und nicht den des Buttons selbst. In jeder Box stehen ja mehrere Buttons, die alle unterschiedliche Indizes haben - Du willst aber das rollOver-Ereignis der dazugehörigen Box auslösen.

Gruß
.
 
Nein, "j" ist ja nicht mehr gültig.

Du musst jedem einzelnen Button schon beim Anlegen die ID der dazugehörigen Box übergeben.

Gruß
.
 
bin etwas verwirrt....

PHP:
_root["menue_link_mc"+j]["menue_btn"+i].idx = j;

				 _root["menue_link_mc"+j]["menue_btn"+i].onRollOver = function() 
				 	{
						_root["menue_link_mc" + this.idx].onRollOver();
						 this.bewegen((160 * this.idx)-70, hoehe-170, 3); 
						 this.box_over._visible = false;
						 this.box_down._visible = true;
					}

so in etwa ?
 
Zuletzt bearbeitet:
ok habs zwar jetzt gelöst.. aber is das auch die sauberste variante !?

_root["menue_link_mc"+j]["menue_btn"+i].idx = j;

_root["menue_link_mc"+j]["menue_btn"+i].onRollOver = function()
{
_root["menuebox_mc"+this.idx].bewegen((160 * this.idx)-70, hoehe-170, 3);
_root["menuebox_mc"+this.idx].box_over._visible = false;
_root["menuebox_mc"+this.idx].box_down._visible = true;
}
 

Neue Beiträge

Zurück