Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 10-03-2006, 11:27   #1 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 36
Zuviele setInterval()-Parameter?

Hi Leute!

Bin grad an ner Navigation.
Nun soll sich ein MovieClip auf der Y-Achse verschieben, per setInterval()
Code:
// Die Funktion
_global.setMove = function(daClip:MovieClip,daStartY:String,daStopY:String,daInterval:Number){
	trace(daInterval)
	if(daClip._y > daStopY){
		daClip._y--
		} else {
			clearInterval(daInterval)
			}
	}
// Die Auslösung
this.holderOfAll_mc.onRollOver = function(){
	if(!this.startMove){
	this.startMove = setInterval(setMove,100,this,75,55,this.startMove)
	}
}
Irgendwie wills mir den bedepperten Interval net stoppen
Und das
Code:
trace(daInterval)
bringt immer nur undefined zurück...
Hätte es auch mit onEnterFrame machen können, ich weiss....hatte aber schon einige male probleme mit setInterval parametern, will nun mal wissen wieso das nicht funzt


Gruss
Laws
laws ist offline   Mit Zitat antworten
Alt 10-03-2006, 12:29   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Hi Laws!
Greetz @bict!

Ich würde mal schwer darauf tippen, dass der Interval, zu dem Zeitpunkt, wo du ihn als Parameter übergibst, noch nicht definiert ist. Der Interval holt sich aber keine neuen Werte für die Parameter, sondern nimmt jenen, den der Paramter zur Zeit der Übergabe gehabt hat. Und da zu diesem Zeitpunkt der Interval noch nicht definiert war, kann er logischerweise auch nicht als Parameter übergeben werden. Als Verständinsbeispiel:
definiere eine globale Variable _global.test und setze diese auf 1. Übergib anstatt der Interval-Referenz _global.test als Referenz. Starte dann neben dem RollOver einen zweiten Interval, der in 500 ms-Schritten _global.test um eines erhöht. Der Intveral-Parameter wird immer den Wert tracen, den er beim Interval-Aufruf gehabt hat - egal wie hoch _global.test in der Zwischenzeit ist! Alles klar?
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 10-03-2006, 14:08   #3 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 36
Hm, wie könnt ich das umgehen?
laws ist offline   Mit Zitat antworten
Alt 10-03-2006, 14:21   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Wie wäre es denn mal so?
PHP-Code:
// Die Funktion
_global.setMove = function(daClip:MovieClipdaStartY:NumberdaStopY:NumberdaInterval:Number) {
    
trace(daInterval);
    if (
daClip._y>daStopY) {
        
daClip._y--;
    } else {
        
clearInterval(daInterval);
    }
};
// Die Auslösung
this.holderOfAll_mc.onRollOver = function() {
    if (!
this.startMove) {
        
this.startMove setInterval(setMove100this7555,1);
    }
}; 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 10-03-2006, 14:37   #5 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 36
ja das würde auch gehen, hab nun aber anderen wordaround gefunden, mit dem ich zufrieden bin:

Code:
// Die Funktion
_global.setMove = function(daClip:MovieClip, daStopY:String, daDirection:String) {
	switch (daDirection) {
	case 'up' :
		if (daClip._y>daStopY) {
			daClip._y--;
		} else {
			clearInterval(daClip.startMove);
		}
		break;
	case 'down' :
		if (daClip._y<daStopY) {
			daClip._y++;
		} else {
			clearInterval(daClip.startMove);
		}
	}
};
// Die Auslösung
this.holderOfAll_mc.onRollOver = function() {
	trace('->onRollOver<-')
	clearInterval(this.startMove);
	this.startMove = setInterval(setMove, 1, this, 35, 'up');
};
this.holderOfAll_mc.onRollOut = function() {
	trace('->onRollOut<-')
	clearInterval(this.startMove);
	this.startMove = setInterval(setMove, 1, this, 75, 'down');
};
Leider hab ich nun ein anderes Problem...manchmal wird ein "onRollOut" getracet, obwohl ich mir der Maus auf der Schalftfläche bin.
Der Effekt: Die Navi fährt hoch und runter...
Anschauen: http://www.alfredlaws.com/navigation.html


Gruss
Laws
laws ist offline   Mit Zitat antworten
Alt 10-03-2006, 14:46   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Nur anschauen bringt da nicht viel. Häng doch mal die fla an.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 10-03-2006, 14:51   #7 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 36
Ok, hier die .fla-Datei: http://www.alfredlaws.com/navigation.fla

Edit:
Hab den Code erst teilweise so dynamisch wie möglich geschrieben...am Schluss sollte alles per XML geladen werden können.

Geändert von laws (10-03-2006 um 14:52 Uhr)
laws ist offline   Mit Zitat antworten
Alt 10-03-2006, 15:33   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Gottogott..

Da denkt man, jetzt kommt ne Datei mit ein paar Zeilen und dann sowas .

Ich denke, das Problem ist, dass dein Intervall schneller läuft, als die Frames des Films eingestellt sind. Das soll bedeuten: der kommt nicht hinterher.

Eine Möglicheit wäre die Erstellung einer großen Fläche in der Größe des gesamten Menüs. Das sähe dann z.B. so aus:
PHP-Code:
createMenuPoint(this.holderOfAll_mc'holderx_mc'this.holderOfAll_mc.getNextHighestDepth(), 55'template''upHolder_mc'100upBreite600x6699CC'up_txt'202upBreiteUpHoehe""); 
Diese Zeile also über die 3 anderen packen. Dann geht's zumindest und das kann man ja später auch dynamisch machen (also die 60 Höhe).
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 10-03-2006, 15:39   #9 (permalink)
Neuer User
 
Registriert seit: Sep 2005
Beiträge: 36
Danke nun funzts....aber ich check net ganz, warum es nun läuft...

Also genauer gesagt, was der moviclip der über menu gelegt wird, für auswirkungen hat, durch welche der fehler net mehr auftritt.
laws ist offline   Mit Zitat antworten
Alt 10-03-2006, 15:46   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Naja, weil zwischen den MCs Lücken entstanden sind. Es geht übrigens auch, wenn du bei den ersten beiden Menüpunkten "upHoehe+10" benutzt und nur beim letzen "upHoehe".
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (10-03-2006 um 15:48 Uhr)
Der Frager 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 12:18 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele