Scriptabsturz (Actionscript 2)

SonMiko

Erfahrenes Mitglied
Hallo zusammen,

ich habe das Problem, dass mein Script sich einfach aufhängt.
Irgendwo mache ich wohl etwas falsch...
Mein Ziel ist das folgende: Ich lade x Bilder in x Clips rein.
Nun möchte ich zwischen diesen Bildern faden (immer nur in eine Richtung).
Meine Funktion nimmt dabei einen Clip, gibt diesem eine onEnterFrame Funktion welche
den Aplhawert schrittweise erhöht und zeitgleich gibt es allen anderen Clips eine onEnterFrame Methode,
die deren Alphawert schrittweise reduziert.

Die Funktion läuft auch an - sofern ich Sie mit einem Intervall aufrufe (1000ms und größer).

Allerdings ist dies ja nicht ganz korrekt - abhängig von den Bildern pro Sekunde die ich eingestellt habe (30 momentan)
variiert ja das Ergebnis was eigentlich berücksichtigt werden muss.

Also wäre es ja theoretisch besser, meine Funktion einmalig aufzurufen und davor einen Boolschen Wert anzugeben welcher beim starten auf true gesetzt ist.
Dann beim start der Funktion wird er auf false gesetzt und erst wenn alle onEnterFrame-Methoden gelöscht sind, sollte die Funktion erneut aufgerufen werden,
damit sich nichts überschneidet.

Dazu habe ich ein Objekt erstellt das die Eigenschaft überprüft um dann die Methode neu aufzurufen -
leider klappts nicht...

Also - hier mal der Code:
Code:
//variables
actualimage = 0;
fadingspeed = 5;

//function
function changePicture(){
	myObj.readychange = false;
	if(actualimage<pictures){
		actualimage++;
	}
	else{
		actualimage = 1;
	}
	//picture fading in and out
	_root["picture"+actualimage].onEnterFrame = function(){
		this._alpha+=fadingspeed;
		if(this._alpha >= 100){
			myObj.readychange = true;
			delete this.onEnterFrame;
		}
	}
	for(i=0;i<=pictures;i++){
		if(i!=actualimage){
			_root["picture"+i].onEnterFrame = function(){
				this._alpha-=fadingspeed;
				if(this._alpha <= 0){
					delete this.onEnterFrame;
				}
			}
		}
	}
}

var myObj:Object = new Object();
myObj.readychange = true;
myObj.watch(readychange, changePicture(), true);

Über Ratschläge wäre ich sehr verbunden...
 
Keiner eine Ahnung? :(

Was mir auch total unbegreiflich ist, ist die Tatsache dass ein einuelner Aufruf nicht furchläuft, also wenn ich changePicture() aufrufe wird die Funktion nicht einmal halb ausgeführt,
das erste Bild ist absolut transparent und leicht schwer zu erkennen.
Wenn ich aber
onMouseDown = function(){
als Funktions-Kopf verwende, läuft mit einem Klick alles sauber durch - also der erste Fade.

Kein Mensch kennt die Antwort - wie geil...

Fühlt man sich wenigstens gleich besser.
 
Zuletzt bearbeitet von einem Moderator:
Nett. Da fühlt man sich doch gleich genötigt zu antworten.

Ich hätte das eher mit tweens, respektive tweenlite gemacht anstatt mit einem onEnterFrame. Allerdings ist mein AS2 mittlerweile etwas eingerostet.
 
Das ist ja auch ein ziemlich langer Text zum lesen, da muss man Geduldig sein, SonMiko ;)

Was genau ist denn myObj bzw was ist readychange, wodurch werden diese Funktionen aufgerufen und verändert? Was ergeben trace-Befehle an folgenden Stellen:
a. direkt am Anfang von changePicture()
b. in der for-Schleife, dort noch in der if - und zwar lass dir da mal i ausgeben.
c. jeweils vor den delete this.onEnterFrame

Außerdem würde ich vor jedem Zuweisen eines neuen onEnterFrames erst einmal das alte Löschen. Von wievielen Objekten sprechen wir denn hier?

Was genau macht das Script jetzt nochmal? Magst du mal ne swf oder fla posten? Kann mir das ganze noch nicht wirklich vorstellen.
 
Zurück