Strona 1 z 1

cofanie animacji

: pt lut 25, 2005 12:51 am
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

cofanie zawracanie

: pt lut 25, 2005 5:02 pm
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;

Re: cofanie animacji

: pt lut 25, 2005 6:02 pm
autor: staralfur
dziękuję :)

Re: cofanie animacji

: czw cze 28, 2007 8:30 pm
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ę

Re: cofanie animacji

: czw cze 28, 2007 9:57 pm
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 :)

Re: cofanie animacji

: pt cze 29, 2007 11:47 am
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;
}

Re: cofanie animacji

: pt cze 29, 2007 12:56 pm
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);
		}
	};
};

kolejny problem...

: ndz sty 27, 2008 4:51 pm
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 :)

Re: cofanie animacji

: pn sty 28, 2008 10:03 am
autor: Marek_bf