SWiSH Forum Strona Główna SWiSH Forum
Forum użytkowników programów SWiSH

FAQFAQ  SzukajSzukaj  UżytkownicyUżytkownicy  GrupyGrupy  StatystykiStatystyki
RejestracjaRejestracja  ZalogujZaloguj  DownloadDownload

Poprzedni temat «» Następny temat
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ę
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
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

Skocz do:  


Powered by phpBB modified by Przemo © 2003 phpBB Group
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.14 sekundy. Zapytań do SQL: 14