onRollOver klappt nicht... falsche Ebene?

FlorianR

Erfahrenes Mitglied
Hallo Zusammen,

ich lade einige Inhalte + Bilder mit XML in mein Flashdokument.

Die Bilder haben ein RollOver, der leider nicht klappt und so langsam weiss ich nicht mehr, was ich machen soll.

Vielleicht kann mir jemand weiterhelfen...

PHP:
stop();

// Variablen die über die Flashvars übergeben werden:
var inhaltInstanzID:String = _root.InhaltInstanzID; // InhaltInstanzId
var fensterBreite:Number = _root.breite; // Breite der Flash
var fensterHoehe:Number = _root.hoehe; // Höhe der Flash

// Variable auslesen:
var titel:Array = new Array (); // Inhalte Titel
var inhalt:Array = new Array (); // Inhalte Inhalt
var bilder:Array = new Array (); // Bilder Inhalt
var anzahlInhalte:Number = null; // Anzahl der angelegten Inhalte
var path:String = "test/";

var timeline:MovieClip = this; // Timeline...

Stage.scaleMode = "noScale";
Stage.width = fensterBreite;
Stage.height = fensterHoehe;
Stage.align = "TL";

// Hintergrund
bgFeld._width = fensterBreite;
bgFeld._height = fensterHoehe;
bgFeld._x = 0;
bgFeld._y = 0;

// Überschrift
headline._width = fensterBreite-20;
headline._height = 40;
headline._x = 10;
headline._y = 10;

// Text Ausgabe
textAusgabe._width = fensterBreite-20;
textAusgabe._height = fensterHoehe-20;
textAusgabe._x = 10;
textAusgabe._y = 55;
textAusgabe.wordWrap = true;
textAusgabe.selectable = true;

function ausgabe(){

	headline.htmlText = titel[0];
	textAusgabe.htmlText = inhalt[0];
	

	for(b = 0; b < bilder.length; b++){
		_root.createEmptyMovieClip("pic" + b, 1000 + b);
		_root["pic" + b]._alpha = 50;
		_root["pic" + b]._x = (Stage.width*0.25)*b;
		_root["pic" + b].onRollOver = function():Void{
			_root["pic" + b]._alpha = 100;
		}
		_root["pic" + b].onRollOut = function():Void{
			_root["pic" + b]._alpha = 50;
		}
		_root["pic" + b].loadMovie(path + bilder[b]);
		
	} 
	
}

var xml = new XML();
xml.ignoreWhite = true;
xml.load("templates/Flash_Produktgalerie/daten.asp?inhaltInstanzID="+InhaltInstanzID+"&breite="+fensterBreite);
xml.onLoad = function(success){
	if(success){
		
		for(var i = 0; i < xml.firstChild.childNodes.length; i++){
			anzahlMenuePunkte = xml.firstChild.childNodes.length;
			titel[i] = xml.firstChild.childNodes[i].firstChild;
			inhalt[i] = xml.firstChild.childNodes[i];
			for(var b = 0; b < xml.firstChild.childNodes[i].childNodes[2].childNodes.length; b++){
				bilder[b] = xml.firstChild.childNodes[i].childNodes[2].childNodes[b].attributes.filename;
			}
		}
		ausgabe();
	}
}
 
Das wird wohl daran, dass du die RollOver in einer for-Schleife erzeugen willst.
D.h. das heißt der RollOver existiert nur für das letzte Element, da die anderen schon "durchlaufen" sind, genauer gesagt solang b=0 ist geht der rollover für pic0, solange b=1 für pic1 und so weiter.

Ich hatte mal so ein ähnliches Problem. Ich muss mal schauen ob ichs noch zusammen bekomm.

EDIT: Probier mal das in der for-Schleife:
PHP:
var mc:MovieClip = this["pic"+i];
mc.onRollOver  = usw.
mc.onRollOut  = usw.
 
Zuletzt bearbeitet:
Hmm, das geht leider schlecht, da ich nur noch in AS3 code und von AS2 schon so gut wie alles vergessen habe. Aber hier im Forum gibt es bestimmt jemanden der so ein Bsp. realisieren kann.
Wenn es dich interessiert, hier ein Beispiel in AS3:
PHP:
var mc0:MovieClip = new MovieClip();
var mc1:MovieClip = new MovieClip();
var mc2:MovieClip = new MovieClip();
for (var i:int = 0; i < 3; i++){
      this[mc + i].addEventListener(MouseEvent.MOUSE_OVER, mcOver);
}
function mcOver(e:MouseEvent):void {
      var tempmc:MovieClip = e.target;
      tempmc.stop();
}
mc0, mc1 und mc2 sind MovieClips die ich da definiert habe um dir den Aufbau zu veranschaulichen! Vielleicht kannst du damit ja etwas anfangen...
 
Okay, ich werde mich jetzt erstmal einlesen und dann ggf. nochmal fragen... bin aber gerne für weitere Ideen offen :)

Edit:

okay so ganz komme ich noch nicht weiter...

ich habe folgenden Ansatz gelesen:
Code:
var clipLoader = new MovieClipLoader();
		var preloader = new Object();
		clipLoader.addListener(preloader);

		clipLoader.loadClip(path + bilder[b]);
		
		
		preloader.onLoadComplete = function(target){
			target.onRollOver = function(){
				this._alpha = 100;
			}
		}

aber dann zeigt er mir gar kein Bild mehr an... hm...
 
Zuletzt bearbeitet:
Ne das klappt leider auch nicht...
Mein Code:

PHP:
for(b = 0; b < bilder.length; b++){
...
	_root["pic" + b].id = b;
	_root["pic" + b].onRollOver = function(){
		_root["pic" +this.id]._alpha = 100;
	}
	_root["pic" + b].onRollOut = function(){
		_root["pic" +this.id]._alpha = 50;
	}
}

Ich erstelle in einer Schleife X MovieClips mit der Bezeichnung pic(x)
in dieser Schleife vergebe ich pro pic(x) ein onRollOver und ein onRollOut mit einer Funktion, die den Alpha-Wert steuert. Und da muss irgendwie der Logikfehler sein. Ich komme aber nicht drauf...
 

Neue Beiträge

Zurück