Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-01-2006, 21:35   #1 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
onEnterFrame abschalten

Hallo,

ich habe für eine Animation folgendes Script geschrieben:

Code:
stop();
flip_rewind = true;
// Rewind Funktion
this.onEnterFrame = function() {
	var frame = this.flip_maske_mc._currentframe;
	trace(frame);
	if (this.flip_rewind) {
		this.flip_maske_mc.prevFrame();
		this.blattrücken_mc.prevFrame();
		if (frame == 1) {
			delete this.onEnterFrame;
		}
	} else {
		this.flip_maske_mc.nextFrame();
		this.blattrücken_mc.nextFrame();
		if (frame == 8) {
			delete this.onEnterFrame;
		}
	}
};
//
this.flip_activator_mc.onRollOver = function() {
	flip_rewind = false;
};
this.flip_activator_mc.onRollOut = function() {
	flip_rewind = true;
};
Die MovieClips flip_maske_mc und blattrücken_mc haben jeweils 8 Frames und im ersten sowie im letzten Frame ist ein stop();.
Wenn ich
Code:
if (frame == 8) {
			delete this.onEnterFrame;
		}
bzw
Code:
if (frame == 1) {
			delete this.onEnterFrame;
		}
lösche funktioniert das Script wunderbar, jedoch möchte ich das onEnterFrame nicht ständig laufen lassen. Aber wenn ich das nicht lösche passiert garnichts. Die Varible frame hat den Wert 1 und bei RollOver wird die Animation nicht abgespielt.

Wo könnte der Fehler in diesem Script liegen?

MfG Alpha
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (03-01-2006 um 21:48 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 03-01-2006, 22:16   #2 (permalink)
is learning
 
Registriert seit: Oct 2005
Beiträge: 1.019
Ich habe mal den Skript getestet und einiges ausprobiert.

Dabei ist das hier rausgekommen, hoffe das das sowas ist was du brauchst:
Code:
stop();
flip_rewind = false;
// Rewind Funktion
function rewind() {
	this.onEnterFrame = function() {
		var frame = this.flip_maske_mc._currentframe;
		trace(frame);
		if (this.flip_rewind) {
			this.flip_maske_mc.prevFrame();
			this.blattrücken_mc.prevFrame();
			if (frame == 1) {
				delete this.onEnterFrame;
			}
		} else {
			this.flip_maske_mc.nextFrame();
			this.blattrücken_mc.nextFrame();
			if (frame == 8) {
				delete this.onEnterFrame;
			}
		}
	};
}
rewind();
// 
this.flip_activator_mc.onRollOver = function() {
	flip_rewind = false;
	rewind();
};
this.flip_activator_mc.onRollOut = function() {
	flip_rewind = true;
	rewind();
};
edit:
2. Zeile im Skript: flip_rewind = true;
__________________
helping helps

Geändert von moonartist (03-01-2006 um 22:25 Uhr)
moonartist ist offline   Mit Zitat antworten
Alt 03-01-2006, 22:22   #3 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Genial vielen Dank.
Ein kleiner Fehler war trotzdem noch drin.
In der zweiten Zeile muss es flip_rewind = true; heisen.
Aber jetzt funktioniert das ganze sehr gut.

MfG Alpha
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 03-01-2006, 22:23   #4 (permalink)
is learning
 
Registriert seit: Oct 2005
Beiträge: 1.019
Gut.
__________________
helping helps
moonartist ist offline   Mit Zitat antworten
Alt 19-01-2006, 11:41   #5 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hallo,

sorry wenn ich diesen Thread nochmal hochhole aber ich hab ein Problem im zusammenhang mit diesem Script und ich wollte keinen neuen Thread aufmachen.
Dieses Script regelt ja das vorwärts und rückwäts abspiel von MC's. Nun wollte ich das für meine Bildergalerie benutzen, für die RollOver Animation bei den Thumbnails. Es sind 12 Thumbnails auf der Bühne, abstand zueinander 10 Punkte.

Das Script:

PHP-Code:
pic_rewind true;
// Rewind Funktion
function rewind(bi) {
    
this.onEnterFrame = function() {
        var 
frame this["m"+bi]._currentframe;
        if (
this.pic_rewind) {
            
this["m"+bi].prevFrame();
            if (
frame == 1) {
                
delete this.onEnterFrame;
            }
        } else {
            
this["m"+bi].nextFrame();
            if (
frame == 12) {
                
delete this.onEnterFrame;
            }
        }
    };
}
rewind(1);
// Bilder
this.m1.onRollOver = function() {
    
pic_rewind false;
    
rewind(1);
};
this.m1.onRollOut = function() {
    
pic_rewind true;
    
rewind(1);
};
this.m2.onRollOver = function() {
    
pic_rewind false;
    
rewind(2);
};
this.m2.onRollOut = function() {
    
pic_rewind true;
    
rewind(2);
};
this.m3.onRollOver = function() {
    
pic_rewind false;
    
rewind(3);
};
this.m3.onRollOut = function() {
    
pic_rewind true;
    
rewind(3);
};
this.m4.onRollOver = function() {
    
pic_rewind false;
    
rewind(4);
};
this.m4.onRollOut = function() {
    
pic_rewind true;
    
rewind(4);
}; 
Das Problem ist das man die Maus schneller von einem zum anderen Thumbnail bewegen kann als das die Animation an Zeit braucht um wieder Frame 1 zu erreichen. Fazit die Animation bleibt irgendwo stehen.
Ich könnte das per enable regeln aber dann müsste die alte Animation immer erst fertig sein bis eine neue aufgerufen werden kann. Das möchte ich aber nicht. Ich will das es möglich ist das eine Animation rückwärts abgespielt wird und gleichzeite eine andere startet.
Kann man das irgendie regeln? Evtl indem man die pic_rewind Funktion aufspaltet?
Bitte helft mir.


MfG Alpha
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 19-01-2006, 12:07   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo!
PHP-Code:
// Rewind Funktion 
MovieClip.prototype.vor_zurueck = function(zurueck) {
    
this.onEnterFrame = function() {
        
zurueck this.prevFrame() : this.nextFrame();
        if (
this._currentframe == || this._currentframe == this._totalframes) {
            
delete this.onEnterFrame;
        }
    };
};
for (var 
1x<=12x++) {
    
this["m"+x].stop();
    
this["m"+x].onRollOver = function() {
        
this.vor_zurueck(false);
    };
    
this["m"+x].onRollOut this["m"+x].onDragOut=function() {
        
this.vor_zurueck(true);
    };

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 19-01-2006, 12:14   #7 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Auch wenn das jetzt blöd klingt, wollte ich fragen ob du mir das AS erklären kannst. Ich kapiers nicht.
Funktionieren tut es aber wunderbar.

Vielen Dank Alpha
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 19-01-2006, 12:54   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hoffe es hilft
PHP-Code:
// Rewind Funktion 
MovieClip.prototype.vor_zurueck = function(zurueck) {
    
//Prototypen erstellen - also MovieClips um diese Funktion erweitern
    
this.onEnterFrame = function() {
        
//kennste ja
        
zurueck this.prevFrame() : this.nextFrame();
        
//wenn zurueck true ist, dann einen Frame weiter, sonst einen Frame zurück
        
if (this._currentframe == || this._currentframe == this._totalframes) {
            
//wenn entweder der erste Frame oder der letzte Frame vom MC erreicht wurde
            
delete this.onEnterFrame;
            
//onEnterframe löschen
        
}
    };
};
for (var 
1x<=12x++) {
    
this["m"+x].stop();
    
this["m"+x].onRollOver = function() {
        
this.vor_zurueck(false);
        
//hier wird zurueck nicht true übergeben, also läuft der MC vorwärts
    
};
    
this["m"+x].onRollOut this["m"+x].onDragOut=function () {
        
this.vor_zurueck(true);
        
// hier wird zurueck true übergeben, also läuft der MC rückwärts
    
};

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 20-01-2006, 14:30   #9 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Wie läuft das eigentlich wenn ich auch noch einen zweiten MC gleichzeitig animieren will?

Also bei m1,m2,... ist ein RollOver und t1,t2,... führt dann eine Animation aus?
Wie kann ich das Programmieren?

Hab versucht diese Zeile zu verändern:

this.vor_zurueck(false);

in

this["t"+x].vor_zurueck(false);

aber das funktioniert nicht.
Ich glaube ich hab da etwas falsch verstanden mit den Prototypes.
Wird nicht jeder MC um diese Funktion erweitert? Wenn es doch so ist muss doch meine Veränderung wirkung zeigen.

MfG
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 20-01-2006, 14:34   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Wahrscheinlich fehlt nur ein _parent.
PHP-Code:
this._parent["t"+x].vor_zurueck(false); 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 20-01-2006, 14:39   #11 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Hat auch nicht funktioniert.

Ich hab die .fla mal hochgeladen.

MfG und Danke
Angehängte Dateien
Dateityp: zip test.zip (6,9 KB, 7x aufgerufen)
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt
Alpha.ONE ist offline   Mit Zitat antworten
Alt 20-01-2006, 15:06   #12 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Kann ich nicht öffnen. Habe aber auch was vergessen:
PHP-Code:
for (var 1x<=12x++) { 
   
this["m"+x].x
    this
["m"+x].onRollOver = function() { 
       
this._parent["t"+this.x].vor_zurueck(false); 
       
    }; 
    } 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 20-01-2006, 15:14   #13 (permalink)
ich lerne noch
 
Benutzerbild von Alpha.ONE
 
Registriert seit: Mar 2004
Ort: Konstanz
Beiträge: 267
Funktioniert.

Vielen Dank

EDIT:

Ich hab noch eine Frage (Sorry wenn ich dir auf die Nerven gehe).
Wie muss ich das ganze Adressieren wenn die MCs t1, t2,... in einem anderen MC liegen?
Also z.B. mc.t1, mc.t2, ...
__________________
Auge um Auge - und die ganze Welt wird blind sein.
(Mahatma Gandhi)

Portfolio | deviantArt

Geändert von Alpha.ONE (20-01-2006 um 15:39 Uhr)
Alpha.ONE ist offline   Mit Zitat antworten
Alt 20-01-2006, 16:17   #14 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
ganz einfach den Pfad erweitern!
PHP-Code:
this._parent.mc["t"+this.x].vor_zurueck(false); 
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha 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 23:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele