Nikes Napisano 10 Luty 2011 Napisano 10 Luty 2011 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ć?
olaf Napisano 10 Luty 2011 Napisano 10 Luty 2011 zalezy jak robiles pierwsza akcje. jezeli na play(), to musisz odwrocic animacje albo dodac animacje powrotną, jezeli skryptem to odwrotnie do tego jak robiles.
illy Napisano 10 Luty 2011 Napisano 10 Luty 2011 on mouseover gotoandplay on mouseout gotoandplay ja zawsze tak robilem, ale to pewnie jeszcz action script 0.5 beta
Grave Napisano 10 Luty 2011 Napisano 10 Luty 2011 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)
Nikes Napisano 10 Luty 2011 Autor Napisano 10 Luty 2011 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.
olaf Napisano 10 Luty 2011 Napisano 10 Luty 2011 (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 10 Luty 2011 przez olaf
Nikes Napisano 10 Luty 2011 Autor Napisano 10 Luty 2011 (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 10 Luty 2011 przez Nikes
BizU Napisano 10 Luty 2011 Napisano 10 Luty 2011 (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 10 Luty 2011 przez BizU
Grave Napisano 11 Luty 2011 Napisano 11 Luty 2011 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.
Nikes Napisano 11 Luty 2011 Autor Napisano 11 Luty 2011 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 ?
panzerYeti Napisano 11 Luty 2011 Napisano 11 Luty 2011 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
Grave Napisano 11 Luty 2011 Napisano 11 Luty 2011 Tutaj masz pokazane na filmie jak to zrobić ;) http://www.wrzuc.to/k4K7pd.wt
Nikes Napisano 11 Luty 2011 Autor Napisano 11 Luty 2011 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ć?
Grave Napisano 11 Luty 2011 Napisano 11 Luty 2011 Nic skomplikowanego - zobacz kolejny filmik ;) http://www.wrzuc.to/mgPlxhUTM5.wt 1
Nikes Napisano 11 Luty 2011 Autor Napisano 11 Luty 2011 ok, Grave rozwiązał moje aktualnie wszystkie problemy :) Dzięki wielkie.
Rekomendowane odpowiedzi
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ę