cofanie animacji

Technologia Flash, czyli animacja na potrzeby stron WWW to świat daleko odbiegły od zwykłego programowania i kodu. Zapytaj o pomoc i podziel się z nami Twoimi problemami z zakresu Flasha.
staralfur
Posty: 2
Rejestracja: pt lut 25, 2005 12:36 am

cofanie animacji

Post autor: staralfur »

Witam,
jestem w tym wszystkim zielona więc nie zlinczujcie mnie od razu ;)
Chciałabym się dowiedzieć, w jakis sposób moge uzyskać taki efekt, by po najechaniu na animacje ona się ruszała, nastepnie po cofnięciu kursora cofała się.. zresztą lepiej żebyście taki efekt zobaczyli:
www.rammstein.pl -> na gorze strony jest flashowy baner ;) oraz efekt o ktory mi chodzi (patrz środek, bądź lewa strona)
rozumiem, że trzeba stworzyć Movie Clip.. ok, stworzylam, ale co dalej?
szukałam na forum, czy nie było czasem juz takiego tematu, ale nie znalazłam... chyba że przeoczyłam ;)
pozdrawiam
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

cofanie zawracanie

Post autor: Marek_bf »

Tworzysz MC animacją. Umieszczasz jego klon na scenie. W Instancje Name tego MC wpisujesz my_mc.
W pierwszej klatce sceny wstawiasz kod:

Kod: Zaznacz cały

 my_mc.stop();
my_mc.onRollOver = function() {
	this.play();
	this.step = true;
	this.onEnterFrame = function() {
		if (this._currentframe == this._totalframes) {
			this.stop();
		}
		if (this.step == false) {
			this.gotoAndStop(this._currentframe - 1);
		}
		if (this._currentframe == 1) {
			delete this.onEnterFrame;
		}
	};
};
my_mc.onRollOut = function() {
	this.step = false;
};
my_mc.onDragOut = my_mc.onRollOut;
Ostatnio zmieniony wt sie 30, 2005 7:21 pm przez Marek_bf, łącznie zmieniany 2 razy.
staralfur
Posty: 2
Rejestracja: pt lut 25, 2005 12:36 am

Re: cofanie animacji

Post autor: staralfur »

dziękuję :)
nothing
Posty: 12
Rejestracja: wt cze 26, 2007 12:41 am

Re: cofanie animacji

Post autor: nothing »

odświeżę wątek. proszę o rozwianie wątpliwości.
czy poniższy kod w efekcie działa tak samo jak kod podany przez Marka? konkretnie w poniższym kodzie chodzi mi o to, czy gdy kursor zjedzie z my_mc i zakończy się animacja, to oEF zostanie usunięty i nie będzie zatrudniał procesora do niepotrzebnej pracy.
a jeżeli wszystko jest ok, to czy dwukrotne użycie oEF wpływa w takim samym stopniu na procesor jak w jednokrotne użycie oEF w przykładzie Marka. ja myślę, że tak, ponieważ oba oEF-y powstają i działają niezależnie od siebie w dwóch różnych sytuacjach. jeżeli źle kombinuję to proszę o sprostowanie.


problematyczny kod:
my_mc.stop();

my_mc.onRollOver = function() {
this.onEnterFrame = function() {
if (this._currentframe<10) {
this.nextFrame();
}
};
delete this.onEnterFrame;
};

my_mc.onRollOut = function() {
this.onEnterFrame = function() {
if (this._currentframe>0) {
this.prevFrame();
}
};
delete this.onEnterFrame;
};
z góry dziękuję
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: cofanie animacji

Post autor: Marek_bf »

W obu skryptach są użyte inne metody do poruszania.
oEF w obu działałby tak samo gdybyś... Nie kasował go zraz po wywołaniu :)
nothing
Posty: 12
Rejestracja: wt cze 26, 2007 12:41 am

Re: cofanie animacji

Post autor: nothing »

chyba rozumiem :]
a czy tak będzie lepiej?
my_mc.stop();

{
my_mc.onRollOver = function() {
this.onEnterFrame = function() {
if (this._currentframe<10) {
this.nextFrame();
}
};
};
delete this.onEnterFrame;
}

{
my_mc.onRollOut = function() {
this.onEnterFrame = function() {
if (this._currentframe>0) {
this.prevFrame();
}
};
};
delete this.onEnterFrame;
}
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: cofanie animacji

Post autor: Marek_bf »

W tym momencie starasz się skasować oEF, który nie istnieje. Słowo this jest użyte poza poza metodą onRoll więc odnosi się do klipu nadrzędnego a ten nie miał przypisanego oEF.

Delete zwraca booleana, jeżeli udało się usunąć to true, jeśli nie to false.
Twój kod:

Kod: Zaznacz cały

 
my_mc.stop();
my_mc.onRollOver = function() {
	this.onEnterFrame = function() {
		if (this._currentframe < 10) {
			this.nextFrame();
		}
	};
};
czy_skasowalem = delete this.onEnterFrame;
trace(czy_skasowalem);
my_mc.onRollOut = function() {
	this.onEnterFrame = function() {
		if (this._currentframe > 0) {
			this.prevFrame();
		}
	};
};
czy_skasowalem = delete this.onEnterFrame;
trace(czy_skasowalem);
Damy oEF do this

Kod: Zaznacz cały

 this.onEnterFrame = function() {
};
my_mc.stop();
my_mc.onRollOver = function() {
	this.onEnterFrame = function() {
		if (this._currentframe < 10) {
			this.nextFrame();
		}
	};
};
czy_skasowalem = delete this.onEnterFrame;
trace(czy_skasowalem);
my_mc.onRollOut = function() {
	this.onEnterFrame = function() {
		if (this._currentframe > 0) {
			this.prevFrame();
		}
	};
};
czy_skasowalem = delete this.onEnterFrame;
trace(czy_skasowalem);
Pierwszy wynik true drugi false bo przy drugim kasowaniu nie było już oEF. Ale kasowany jest oEF nie my_mc tylko nadrzędny. Nawet gdybyś kasował oEF dla my_mc w tym miejscu, ,w którym to robisz teraz to nic byś nie uzyskał, gdyż kasowanie nie może nastąpić, też zwróci false bo jeszcze nie ma oEF, będzie dopiero po akcji buttona, a że delete leży poza zdarzeniami buttona zachodzi tylko raz po wczytaniu klatki. Później nie jest już wywoływane.

Żeby kasować trzeba sprawdzać czy kasowanie jest wymagane.

Kod: Zaznacz cały

 my_mc.stop();
my_mc.onRollOver = function() {
	this.onEnterFrame = function() {
		if (this._currentframe < 10) {
			this.nextFrame();
		} else {
			trace(delete this.onEnterFrame);
		}
	};
};
delete mc.onEnterFrame;
my_mc.onRollOut = function() {
	this.onEnterFrame = function() {
		if (this._currentframe != 1) {
			this.prevFrame();
		} else {
			trace(delete this.onEnterFrame);
		}
	};
};
pingweb
Nowy
Nowy
Posty: 30
Rejestracja: sob sty 06, 2007 2:12 am

kolejny problem...

Post autor: pingweb »

Odswieze wątek. Wiec mam pytanie co zrobic zeby ten skrypt przerobic tak, aby aktywna zakladka byla widoczna ? moze inaczej jak mam menu i dajmy na to po najechaniu jest czerwone tojak zrobic zeby po wybraniu tej opcji zostało dalej czerwone, az do chwili gdy wybierzemy inna opcje itd. ? troche to zagmatwane ale chodzi o to zeby bylo widoczne w jakiej aktualnie sie znajdujemy zakladce :)
Marek_bf
Administrator
Posty: 4419
Rejestracja: czw lut 24, 2005 2:14 am
Kontakt:

Re: cofanie animacji

Post autor: Marek_bf »

ODPOWIEDZ