Napisano 10 Luty 201114 l 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ć?
Napisano 10 Luty 201114 l 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 10 Luty 201114 l on mouseover gotoandplay on mouseout gotoandplay ja zawsze tak robilem, ale to pewnie jeszcz action script 0.5 beta
Napisano 10 Luty 201114 l 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 10 Luty 201114 l Autor 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 10 Luty 201114 l 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 201114 l przez olaf
Napisano 10 Luty 201114 l Autor 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 201114 l przez Nikes
Napisano 10 Luty 201114 l 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 201114 l przez BizU
Napisano 11 Luty 201114 l 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 11 Luty 201114 l Autor 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 11 Luty 201114 l 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 11 Luty 201114 l Tutaj masz pokazane na filmie jak to zrobić ;) http://www.wrzuc.to/k4K7pd.wt
Napisano 11 Luty 201114 l Autor 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ć?
Napisano 11 Luty 201114 l Nic skomplikowanego - zobacz kolejny filmik ;) http://www.wrzuc.to/mgPlxhUTM5.wt
Napisano 11 Luty 201114 l Autor ok, Grave rozwiązał moje aktualnie wszystkie problemy :) Dzięki wielkie.
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto