Jump to content

Flash: Movie clip button


Krystian Szabat
 Share

Recommended Posts

klatki sluza tylko po to zeby dawac mu stany, natomiast wszystko dajesz z kodu masz klatke w ktorej znajduje sie MClip. Daj nad nia klatke w ktorej umiesc kod:

 

To wersja dla AS2

 

nazwaMovieclipa.onRollOver = function()

{

tu umieszczasz co sie ma dziac na RollOver np.

this.gotoAndPlay(jakas klatka)

}

 

wtedy na najazd na ten MovieClip uruchomi animacje w tym mowiclipie od jakiejs klatki

 

 

nazwaMovieclipa.onRollOut = function()

{

tu umieszczasz co sie ma dziac na RollOut np.

this.gotoAndPlay(jakas klatka)

}

 

to na zjazd...

 

a to na nacisniecie

 

 

nazwaMovieclipa.onRelease = function()

{

tu umieszczasz co sie ma dziac na RollOver np.

this.gotoAndPlay(jakas klatka)

}

 

pisz jak nie rozumiesz, pomoge ;)

Link to comment
Share on other sites

Witam serdecznie.

 

Mój problem tematycznie jest podobny, natomiast merytorycznie na niższym poziomie.

 

Bardzo bym prosił o podanie "receptury" tworzenia buttonów w Movie Clipie. Do tej pory robiłem tylko przyciski, które odwoływały się do konkretnej klatki na osi czasu i to wystarczało. W tej chwili muszę zrobić przyciski, które animują się niezależnie od pozostałej treści strony. Problem w tym, że nie do końca wiem co najpierw powinienem zrobić, buttona czy movie clipa (i dopiero później do niego wsadzać buttona)?

 

Dalej, jak w movie clipie (na przykład po najechaniu jak i po zjechaniu z buttona) zatrzymać oś czasu (kiedyś próbowałem zastosować w movie clipie funkcję "stop();", przypisaną do klatki ale wtedy movie clip w ogóle mi się nie wykonywał.

 

Bardzo bym prosił o podpowiedź.

Link to comment
Share on other sites

ach jakby to wyjasnic

 

robisz movie clip. potem do niego dorabiasz buttony. i tobisz tak ze w momencie gdy button movie clip jest w fazie wylaczonego przycisku dajesz button z akcja on rollover go to and play (i tu numer klatki od ktorej sie zaczyna animacja przejscia miedzy stanem off a stanem gdy use najedzie na przycisk). w miejscu gdzie ta animacja sie konczy dajesz akcje stop (na klatce) i znowu wsadzasz buttona i dajesz mu akcje onrollover i animacja w druga strone. potem wracasz do miejsca gdzie przycisk jest w fazie "najechanej" i dajesz mu akcje on press i tu znowu adnimka to wcisnietego przycisku i znowu stop i akcja onrelease w tym momencie i laczysz ja z animka powracania przycisku do normalnego

 

prosciej nie umiem

Link to comment
Share on other sites

Jednak jest lekka lipa (nie wiem jak to zrobić). Funkcje on(rollOver) jak i on(rollOut), działają świetnie, jednak nie do końca wiem jak teraz zrobić, żeby w momencie naciśnięcia tego buttona wewnątrz movie clipa, wracać na główną oś czasu (gdzie mam tekst do wyświetlenia). I jeszcze jedno pytanie, czy można przy kliknięciu zrealizować dwie funkcje (przerzucić sie poza movie clipa jak i wyświetlić zawartość movie clipa)? Chodzi o to, że jak pisałem wyżej, na głównej osi czasu mam do wyświetlenia tekst, natomiast wewnątrz movie clipa, ostatnia klatka akcji on(rollOver), odpowiada stanowi klawisza, podczas wyświetlania w/w tekstu. Jeśli napisałem w sposób mało zrozumiały postaram się to wyjaśnić bardziej klarownie.

Link to comment
Share on other sites

Myślę, że pomoże ci _parent, this lub ewentualnie _root ale lepiej unikać.

To pomoże ci się przemieszczać po drzewie twoich clipów i głownej osi czasowej.

 

this - odnosi się do 'tego':), czyli np. wpiszesz

guzik.onRollOver=function(){
 trace(this.jakasWartosc)
}

to wyświetli się wartość w tym konretnym movieClipie.

 

_parent jak sama nazwa mówi odnosi się do rodzica, więc jeśli masz w głównej scenie jakiś movieClip, to rodzicem oczywiście będzie główna oś czasu. Można też dać np. _parent._parent jeśli obiekt jest jakoś bardziej zagnieżdżony.

 

_root to odwołanie to najniższego poziomu - w sumie najkrótsza metoda ale pojawiają się problemy gdy postanowisz wstawić do pliku inny plik .swf.

 

Tak więc, jeśli dobrze zrozumiałem - chcesz umieścić/uwzględnić coś z tego movieClipa na głównej osi czasu.

np:

guzik.onRollOver=function(){
  _parent.jakisTekst.text = this.jakasWartosc
}

Mam nadzieję, że trochę rozjaśniłem:)

Link to comment
Share on other sites

Jako, że przez noc pozbierałem myśli i dokładnie wiem czego chcę, jeszcze raz dokładnie opiszę problem(to co już mam i to czego jeszcze nie mam).

 

Dysponuję wersją 8 Flasha (w pracy CS3).

Do tej pory zrobiłem klawisze wsadzone do movie clipa. Klawisze, po najechaniu, robią coś tam, po zjechaniu wracają do punktu początkowego (efekt wyjeżdżającej szuflady - takie dość banalne).

 

Obecnie akcje przypisane do klawisza wyglądają tak:

 

on(rollOver){

gotoAndPlay("kl1")

}

on(rollOut){

gotoAndPlay("kl11")

}

 

gdzie "kl1" jak i "kl11" są "frame label'ami" konkretnych klatek.

 

Teraz pytanie właściwe. Jak powinna wyglądać dalsza część akcji przypisana do klawisza aby:

 

1. po kliknięciu przerzucało mnie na główną oś czasu do klatki "start".

2. akcje rollOver jaki rollOut wykonywały się poprawnie - piszę o tym dlatego, bo jak dopisywałem do istniejących akcji, on(release) lub on(press), po najechaniu na klawisz, dostawałem, zamiast chowania się kwadracika, skakanie tego kwadracika.

3. po kliknięciu (tym samym co w punkcie 1), wyświetlało w movie clipie klatke "skl1".

 

Jako, że jestem w ogromnej desperacji, będę ogromnie wdzięczny za pomoc.

Edited by PiotrRo
Link to comment
Share on other sites

Trochę dziwne, że jak dajesz on(press) to reszta się kaszani, nie powinna. Proponuję trochę zmienić składnię, nie wiem czy to rozwiąże problem ale w przyszłości zobaczysz, że ułatwia pracę:

 

zamiast pisać bezpośrednio w movieClipie: 'on(press)', napisz w dowolnym miejscu (np główny timeline): 'nazwaMovieClipa.onPress=function(){' i tu akcję.

 

Dzięki temu łatwiej będzie później odnaleźć te fragmenty w celu edycji, bo możesz napisać wszystko tak, by mieć cały kod w jednej klatce i nie szukać po całej scenie.

 

Co do pkt 1 i 3

on(press){ //lub tak jak napisałem wyżej: movieClip.onPress=function(){
   gotoAndPlay("skl1");
   _parent.gotoAndPlay("start") //lub _root.gotoAndPlay("start") jeśli nie wychodzi
}

  • Confused 1
Link to comment
Share on other sites

Tak - już to znalazłem. Tylko, że gdy wpisuję w skrypt "instance name" tego movie clipa, jest on czarny (instance name), nierozpoznawalny przez skrypt, co zresztą skutkuje tym, że po naciśnięciu klawisza dokładnie nic się nie dzieje. Nie mam pojęcia gdzie jest błąd.

Edited by PiotrRo
Link to comment
Share on other sites

sam skrypt wygląda tak:

 

on(release){

in_zu.gotoAndPlay("pgospodarcze")

}

 

no i właśnie to "in_zu" jest instance name'mem mojego movie clipa. W skrypcie powinie być niebieski - a nie jest. Cały czas jest czarny, jak by na niego nie patrzeć...

Link to comment
Share on other sites

Jaka to wersja Flasha Studio? Szczerze mówiąc nie przypominam sobie, żeby kiedykolwiek nazwy MC się podświetlały, no chyba, że o czymś nie wiem:).

 

Być może sytuacja jak poprzednio: ponieważ wpisałeś skrypt bezpośrednio do jakiegoś MC, spróbuj dodać _parent albo _root (_parent.in_zu.gotoAndPlay("pgospodarcze") )

Link to comment
Share on other sites

Wersja 8. Zaraz to jeszcze przećwiczę na CS3. Jeszcze jedna ciekawostka mi wyskoczyła (z którą w CS3 nigdy nie miałem problemu) mianowicie, przypisując do klawisza skrypt:

 

on (release) {

getURL ("mailto:[email protected]?subject=TematMaila")

}

 

Pole "temat" było wypełnione. Teraz jest puste...!!!???

Za Chiny Ludowe nie wiem czemu.

 

Co do wpisanie _root, lub _parent, to chyba nie ma to wiekszego zastosowania w tym przypadku.

Obecnie chcę się "dostać/uruchomić", klawiszem znajdującym się na głównej osi czasu, klatkę z movie klipa. Klawisz uruchamiający nie jest w movie clipie.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy