|
SWiSH Forum
Forum użytkowników programów SWiSH
|
Lekcja 7. Zmiana właściwości obiektu |
Autor |
Wiadomość |
roland
Site Admin Roland Zimek
Wersja SWiSH: Max4
Pomógł: 31 razy Wiek: 58 Dołączył: 21 Sty 2005 Posty: 424 Skąd: Opole
|
Wysłany: Pon 22 Sie, 2005 08:31 Lekcja 7. Zmiana właściwości obiektu
|
|
|
Na początku spróbujemy obrócić obiekt. Zakładam, że narysowany obiekt posiada nazwę Prostokat.
Aby wpłynąć na właściwość obiektu, taką jak na przykład jego obrót należy po nazwie obiektu wpisać nazwę zmienianej cechy (w tym przypadku, obrót jest oznaczony jako _rotation). Nazwę obiektu rozdziela się od jego właściwości kropką. Ostatecznie więc, działający przykład może wyglądać następująco:
Kod: | onLoad () {
Prostokat._rotation = 60;
} |
Innymi słowy, obiektowi o nazwie Prostokat, przypisaliśmy nową wartość kąta obrotu _rotation, która wynosi 60 stopni. Zmiana właściwości obiektu nastąpi oczywiście w momencie uruchomienia animacji. Jeżeli jednak zatrzymasz animację, to w oknie roboczym obiekt powróci do swojej poprzedniej postaci.
Możesz także obrócić obiekt w przeciwnym kierunku, w tym celu wystarczy wpisać znak minus przed kątem obrotu:
Kod: | onLoad () {
Prostokat._rotation = -60;
} |
Chcąc zmienić kąt obrotu kilku obiektów (o przykładowych nazwach Prostokat i Elipsa), możesz zastosować jeden z trzech przykładów:
Kod: | onLoad () {
Prostokat._rotation = 60;
Elipsa._rotation = 60;
} |
W tym przypadku przypisujesz kąt obrotu wprost poszczególnym obiektom.
Kod: | onLoad () {
x = 60;
Prostokat._rotation = x;
Elipsa._rotation = x;
} |
Ten przykład bardzo dobrze się sprawdza, gdy często chcesz zmieniać kąt obrotu, a nie chcesz zmieniać tej wartości w kilku miejscach kodu. Możesz skorzystać z tej wersji, gdy kąt obrotu będziesz obliczał na podstawie wzoru matematycznego.
Kod: | onLoad () {
Prostokat._rotation = 60;
Elipsa._rotation = Prostokat._rotation;
} |
Z kolei ten przykład jest szczególnie ciekawy, gdyż kąt obrotu obiektu Elipsa, został ustalony na podstawie kąta obrotu obiektu Prostokat.
Modyfikacja ostatniego przykładu, pozwala na uzyskanie przykładowo kąta obrotu Elipsy zawsze większego od kąta obrotu Prostokata o 20 stopni:
Kod: | onLoad () {
Prostokat._rotation = 60;
Elipsa._rotation = Prostokat._rotation+20;
} |
Spróbuj poeksperymentować z większą liczbą obiektów i innymi ustawieniami. Możesz także wypróbować operacje matematyczne, wykonywane bezpośrednio na właściwościach obiektów:
Kod: | onLoad () {
Prostokat._rotation = 60;
Elipsa._rotation = Prostokat._rotation+20;
Gwiazda._rotation = Elipsa._rotation + Prostokat._rotation;
} |
W tym przypadku kąt obrotu obiektu Gwiazda, został obliczony na podstawie kątów obrotów pozostałych obiektów. Czy wiesz ile on wyniesie? |
|
|
|
|
maru
Przyjaciel
Pomógł: 2 razy Dołączył: 01 Gru 2006 Posty: 45 Skąd: 3M
|
Wysłany: Pią 05 Sty, 2007 21:50
|
|
|
bardzo fajnie wytlumaczone:)
a jak skierowac obiekt w jakas wskazana strone. powiedzmy tak zeby wieka strzalka na srodku ekranu podazala za kursorem? chodzi o to jak pobrac kat miedzy obiektami i skierowac jeden w strone drugiego? |
|
|
|
|
roland
Site Admin Roland Zimek
Wersja SWiSH: Max4
Pomógł: 31 razy Wiek: 58 Dołączył: 21 Sty 2005 Posty: 424 Skąd: Opole
|
Wysłany: Pon 08 Sty, 2007 08:07
|
|
|
Aby skierować dowolny obiekt w kierunku, w którym znajduje się myszka, musimy powiedzieć jak sprawdzić jej położenie w obszarze animacji.
Po pierwsze należy zdawać sobie sprawę, iż lewy górny narożnik obszaru animacji, ma współrzędne (0,0), a prawy dolny narożnik, takie jaką szerokość i wysokość ustaliliśmy w zakładce Movie (pol. Animacja).
Współrzędne kursora myszy sprawdzimy przy pomocy _xmouse oraz _ymouse.
Wpiszmy następujący skrypt:
Kod: | onEnterFrame(includingFirstFrame) {
trace(_xmouse+" "+_ymouse);
} |
spowoduje on wyświetlenie w oknie Debug, współrzędnych X i Y wskaźnika myszy.
Jeżeli jednak powyższy skrypt umieścimy wewnątrz obszaru duszka, to odczytamy położenie kursora myszy względem punktu zakotwiczenia duszka. Chcąc dowiedzieć się, jakie położenie kursora myszy jest względem obszaru animacji, musimy zmodyfikować nasz skrypt następująco:
Kod: | onEnterFrame(includingFirstFrame) {
trace(_root._xmouse+" "+_root._ymouse);
} |
Zapis _root powoduje, że odwołujemy się do "głównej animacji".
Przydałoby się jeszcze opisać, w jaki sposób sprawdzić jakie jest położenie punktu zakotwiczenia duszka, bądź innego obiektu (UWAGA. Czasami punkt zakotwiczenia obiektu/duszka pokrywa się z jego środkiem, nie jest to jednak reguła).
Skorzystamy tutaj z poleceń this._x oraz this._y.
Można także uprościć te zapisy, do zwykłych _x oraz _y.
Reszta, to już zwykła matematyka.
Aby obrócić duszka o nazwie Kierunek w kierunku wskaźnika myszy, należy więc wprowadzić piniższy skryt dla tegoż duszka:
Kod: | onEnterFrame(includingFirstFrame) {
Xm = _root._xmouse-this._x;
Ym = _root._ymouse-this._y;
kat = (Math.atan(Ym/Xm) * 180) / Math.PI;
kat += (_root._xmouse < this._x) ? 180 : 0;
_root.Kierunek._rotation = kat;
} |
Poniżej do pobrania plik z gotową animacją. |
|
|
|
|
5uck
Praktyk
Pomógł: 2 razy Dołączył: 20 Sie 2007 Posty: 32 Skąd: tu się wziełeś?
|
Wysłany: Sro 16 Sty, 2008 12:50
|
|
|
Czy da radę zrobić kwadrat który porusza się w poziomie po animacji, w zależności od tego gdzie znajduje się myszka?
np: myszka znajduje się na środku animacji: kwadrat nie rusza się, razem z ruchem myszki w prawo np o 1cm kwadrat przyspiesza w prawo o 1cm/sec, 2cm=2cm/sec. Kwadrat po opuszczeniu animacji z prawej strony zmienia swoje położenie i przechodzi na początek animacji (lewy bok) i porusza się dalej z prędkością jaką nadaje mu położenie poziome myszki. |
|
|
|
|
yanek83
Początkujący
Dołączył: 06 Lip 2006 Posty: 7
|
Wysłany: Czw 08 Maj, 2008 20:49 kontynuacja pytania :)
|
|
|
jak w TEN sposób poruszać obiektami? funkja Math.approach daje jakieś rezultaty ale sprawia troche kłopot poniewać obiekty nadrzędne (parent.) niestety ale jakoś nie przesuwają się płynnie. Dodaje plik źródłowy może ktos mi pomoze w tym ćwiczeniu |
|
|
|
|
|
Wysłany: Wto 03 Mar, 2009 20:16
|
|
|
Oczekuje na akceptację |
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
|
|
|
|
Nowe zasady dotyczące cookies. Wykorzystujemy pliki cookies, aby nasz serwis lepiej spełniał Państwa oczekiwania. Można zablokować zapisywanie cookies, zmieniając ustawienia przeglądarki.
| Strona wygenerowana w 0.32 sekundy. Zapytań do SQL: 14 |
|
|