Skocz do zawartości

Rekomendowane odpowiedzi

Napisano

Witam.

 

Stworzyłem buttona. Na początku jest to zwykły kolor zielony. Po najechaniu myszką zmienia płynnie kolor na niebieski.

Chce zrobić, aby teraz jezeli ktos zjedzie myszką z guzika, ten spowrotem płynnie zmienia się do niebieskiego koloru.

 

Jak to zrobić?

  • Odpowiedzi 16
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

zalezy jak robiles pierwsza akcje. jezeli na play(), to musisz odwrocic animacje albo dodac animacje powrotną, jezeli skryptem to odwrotnie do tego jak robiles.

Napisano

on mouseover gotoandplay

on mouseout gotoandplay

 

ja zawsze tak robilem, ale to pewnie jeszcz action script 0.5 beta

Napisano

ma najechanie dajesz PLAY, a na zjechanie interwał z PREV FRAME (interwał wywołujący akcję cofania o jedną klatkę). Potem żeby interwał PREV FRAME nie kolidował z PLAY do akcji na najechanie trzeba jeszcze dodać instrukcję zatrzymującą interwał.

Aby to zoptymalizować możesz jeszcze dodać warunek IF który automatycznie wyłączy interwał po cofnięciu do pierwszej klatki (aby w tle nie pracował bez sensu interwał, który non stop próbuje cofnąć animację, kiedy to jest już niemożliwe)

Napisano

Cóż, ja to zrobiłem inaczej.

 

Stworzyłem sobie movieclip'a zielonego kwadratu, który zmienia sie płynnie na niebieski. Na ostatnie klatce dałem akcje "stop()"

Następnie stworzyłem buttona:

i mamy :

UP - tutaj wlepiłem movieclipa

OVER - nic

DOWN - nic

HIT - nic

 

dało mi to efekt po najechaniu na guzika myszką, che uzyskać teraz efekt powrotu gdy zjadę myszką.

 

Z tego co piszecie, rozumiem że wy podaliście mi troche inną możliwość.

Zrozumiałem to tak, że w movieclip musze wprowadzić action powodujący otworzenie animacji po najechaniu myszką, nastepnie w ostatniej klatce wklepać prevFrame() którego jeszcze nie znam. A o tym co kolega Grave pisze, a dokładniej (Aby to zoptymalizować możesz jeszcze dodać warunek IF który automatycznie wyłączy interwał po cofnięciu do pierwszej klatki (aby w tle nie pracował bez sensu interwał, który non stop próbuje cofnąć animację, kiedy to jest już niemożliwe) ) nie bardzo rozumiem.

Napisano (edytowane)

tam nie masz kontroli nad OUT. Nie wrzucaj niczego do buttona.

Zró movie clip. z 20klatkami w pierwszej i 10 wpisz: stop() - klatki kluczowe tworzysz przez f6

nazwij go jakos i daj nad niego przezroczysty button. nazwij movie clipa mc a buton bt i w oknie akcji (f9 jak wybierzesz klatkę ale nie zaznaczony zaden obiekt na scenie bo wklei kod do niego)

 

bt.onRollOver = function () {mc.gotoAndPlay(2)}

bt.onRollOut = function () {mc.gotoAndPlay(11)}

 

w AS3

 

bt.addEventListener (MouseEvent:MOUSE_OVER) {goUp}

function goUp (e:MouseEvent) {mc.gotoAndPlay (2)}

 

bt.addEventListener (MouseEvent:MOUSE_OUT) {goDown}

function goDown (e:MouseEvent) {mc.gotoAndPlay (11)}

 

jakos tak

Edytowane przez olaf
Napisano (edytowane)

Dzięki, próbuje to ogarnąć.

 

--- Jeżeli sie nie uda >

W takim razie muszę zrobić wszystko w movieclipcie. Pomoże mi ktoś znaleźć w miarę pomocnego videotutka na Youtube ?

Edytowane przez Nikes
Napisano (edytowane)

dla torma pokazywałem ten trik ostatnio:

http://asria.pl/backPlayer.fla

tam powinno być, tak czy inaczej, w momencie przypisujesz dla zmiennej offset, jakiś skok, powiedzmy -10, to cofasz się o 10 klatek(przypadkiem tyle ile ma Twoja animacja zmiany koloru)

czyli:

Dodajesz nową warstwę dla kodu AS (klatka kluczowa musi obejmować całego timeline), w niej:

if (!hasEventListener(Event.ENTER_FRAME)) addEventListener(Event.ENTER_FRAME, backPlayer);
var offset:int = 0;
function backPlayer(e:Event):void
{
if (offset!=0) stop();
if (offset>0) 
{
	nextFrame();
	offset--;
}
else if(offset	{
	prevFrame();
	offset++;
}
}
function goToFrame(fr:int):void
{
offset = fr - currentFrame;
}

 

gdzieś tam w czeluściach tego movieclipa masz animacje bittona. ów przycisk nazwałeś: "przycisk",

to dajesz mu akcje:

przycisk.addEventListener(MouseEvent.ROLL_OVER, przyciskOver);
przycisk.addEventListener(MouseEvent.ROLL_OUT, przyciskOut);
function przyciskOver(e:Event):void
{
play();
}
function przyciskOut(e:Event):void
{
goToFrame(1);
}

 

to Ci zagwarantuje ze będzie działać w każdym przypadku, i animacja w trakcie jej wykonywania zacznie się cofać

-----------

 

up:

bt.addEventListener (MouseEvent:MOUSE_OVER) {goUp}

function goUp (e:MouseEvent) {mc.gotoAndPlay (2)}

 

bt.addEventListener (MouseEvent:MOUSE_OUT) {goDown}

function goDown (e:MouseEvent) {mc.gotoAndPlay (11)}

bt.addEventListener(MouseEvent.ROLL_OVER,goUp);
bt.addEventListener(MouseEvent.ROLL_OUT,goDown);
function goUp (e:MouseEvent) {mc.gotoAndPlay (2)}
function goDown (e:MouseEvent) {mc.gotoAndPlay (11)}

Edytowane przez BizU
Napisano

Aj ja jaj... Walnij movieclip który ma być przyciskiem i zrób w nim animację jaką tam chcesz. Potem w pierwszą klatkę tego klipu wklej poniższy kod, a w ostatnią tylko "stop();" I tyle filozofii ;)

 

stop();

addEventListener(MouseEvent.ROLL_OVER, cursorOver);

addEventListener(MouseEvent.ROLL_OUT, cursorOut);

 

function goPrev(e:Event) {

prevFrame();

if (currentFrame==1) {

removeEventListener(Event.ENTER_FRAME, goPrev);

}

}

 

function cursorOver(e:MouseEvent):void {

removeEventListener(Event.ENTER_FRAME, goPrev);

play();

}

 

function cursorOut(e:MouseEvent):void {

addEventListener(Event.ENTER_FRAME, goPrev, false, 0, true);

}

 

To w AS3, a w AS2 jest jeszcze łatwiej.

Napisano
Aj ja jaj... Walnij movieclip który ma być przyciskiem i zrób w nim animację jaką tam chcesz. Potem w pierwszą klatkę tego klipu wklej poniższy kod, a w ostatnią tylko "stop();" I tyle filozofii ;)

 

 

 

To w AS3, a w AS2 jest jeszcze łatwiej.

 

Zrobiłem tak.

1 warstwa. Namalowałem kropkę. F8 movieclip.

Otworzyłem movieclipa i animowalem krope.

W 1 klatce walnalem kod ktory podales, w ostatniej stop()

wracam do sceny. Odpalam scene i efekt jest taki ze po najechaniu mychą, kropka wykonuje tylko animacje od 1 klatki do 5 i zapętla. A klatek jest ponad 20.

Gdzie popełniłem błąd ?

Napisano

jeżeli pracujesz w AS 2.0 to moze tak:

 

v.1

button_mc.stop();
button_mc.onRollOver = function(){
this.onEnterFrame = function(){

	if(this._currentframe			this.nextFrame()

	}else {
		delete this.onEnterFrame
	}
}
}
button_mc.onRollOut = function(){
this.onEnterFrame = function(){

	if(this._currentframe>1){
		this.prevFrame()

	}else {
		delete this.onEnterFrame
	}

}
}

potrzebujesz tylko MC z animacja na 20 klatek, kod wklejasz do wolnej klatki, w scenie w której jest wrzucony MC

 

lub v 2.

import mx.transitions.Tween;
import mx.transitions.easing.*;
button2_mc.kolor_mc._alpha = 0;
button2_mc.onRollOver = function(){
new Tween(button2_mc.kolor_mc, "_alpha", None.easeOut,button2_mc.kolor_mc._alpha, 100,.5, true);
}
button2_mc.onRollOut = function(){
new Tween(button2_mc.kolor_mc, "_alpha", None.easeOut,  button2_mc.kolor_mc._alpha,0, .5, true);
}

 

w tym przypadku w MC button2_mc nie ma zadnej animacji na timline, na 1 warstwie rysujesz sobie obiekt np. czerwony, a na drugiej duplikujesz go i tworzysz MC kolor_mc (instance name) ze zmienionym kolorem. Kod steruje wartoscia alpha MC kolor_mc

 

pozdr

Napisano

Dzieki Grave !

 

Mam teraz kolejny problem.

 

http://www.tocomam.com/new.html

 

Najeżdżając myszka na lewą ikone "Q" rozwija sie animacja. OK. Problem w tym, że pole " nacisku " jest rownież do okoła ikony Q. Dla tego ktos najedzie myszką obok "Q" to animacja sie otworzy. Nie odpowiada mi to.

Można coś z tym zrobić?

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności