JAVAScript animacja obiektów, tworzenie własnych obiektów



Podobne dokumenty
Wykład 4 Wybrane zagadnienia programowania w C++

Laboratorium 14: Bazy Danych Konstruowanie interfejsu dla prostej bazy danych wykorzystującą technologię dbexpress

STRONA GŁÓWNA SPIS TREŚCI. Zarządzanie zawartością stron... 2 Tworzenie nowej strony... 4 Zakładka... 4 Prawa kolumna... 9

Wyższa Szkoła Zarządzania i Bankowości w Krakowie

Przedmiot: Projektowanie dokumentów WWW. Laboratorium 3: Strona domowa cz. III Formularze. Opracował: Maciej Chyliński

DEMERO Automation Systems

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

API transakcyjne BitMarket.pl

SZABLONY KOMUNIKATÓW SPIS TREŚCI

np. tu - na pierwszej formatce kreatora zaznaczamy opcję nr 3

Specyfikacja techniczna banerów Flash

Surowiec Zużycie surowca Zapas A B C D S 1 0,5 0,4 0,4 0, S 2 0,4 0,2 0 0, Ceny x

Funkcje składowe (metody)

Arkusz kalkulacyjny MS Excel podstawy

Instalacja. Zawartość. Wyszukiwarka. Instalacja Konfiguracja Uruchomienie i praca z raportem Metody wyszukiwania...

Kalkulator Kalorii by CTI. Instrukcja

Matematyka:Matematyka I - ćwiczenia/granice funkcji

Kurier POCZTEX XL by CTI. Instrukcja

Kompozycja i dziedziczenie klas

Rozliczenia z NFZ. Ogólne założenia. Spis treści

Programowanie obiektowe. Wykład 4

XIII KONKURS MATEMATYCZNY

System Zarządzania Relacyjną Bazą Danych (SZRBD) Microsoft Access 2010

STEROWNIK BIOLOGICZNYCH OCZYSZCZALNI ŚCIEKÓW

Tematyka i rozwiązania metodyczne kolejnych zajęć lekcyjnych wraz z ćwiczeniami.

W wyświetlonym okienku New Web Server Application wybierz opcję Web App Debugger Executable, a w polu Class Name wpisz: P1.

ostatni dzień miesiąca (yyyy-mm-dd) miejsce zam. - ulica nr miejscowość wypełnienia oświadczenia

Użytkowanie elektronicznego dziennika UONET PLUS.

System zarządzania bazą danych (SZBD) Proces przechodzenia od świata rzeczywistego do jego informacyjnej reprezentacji w komputerze nazywać będziemy

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

0.1 Hierarchia klas Diagram Krótkie wyjaśnienie

Laboratorium nr 2. Edytory tekstu.

Metody opracowywania dokumentów wielostronicowych. Technologia Informacyjna Lekcja 28

Wtedy wystarczy wybrać właściwego Taga z listy.

JAVAScript obiekty modyfikacja drzewa obiektów

INSTRUKCJA WebPTB 1.0

Rozdział 7. Wykorzystanie funkcji daty i czasu do analizy danych

14.Rozwiązywanie zadań tekstowych wykorzystujących równania i nierówności kwadratowe.

Wiedza niepewna i wnioskowanie (c.d.)

INSTRUKCJA UŻYTKOWANIA. Projekt: Syrena. wersja: Program: Krzysztof Gosławski Kontakt:

Architektura komputerów

SCHEMATY STRON. Baner Nawigacja Nawigacja okruszkowa Prawa kolumna zobacz również Boksy Zwykła strona...

WYMAGANIA EDUKACYJNE SPOSOBY SPRAWDZANIA POSTĘPÓW UCZNIÓW WARUNKI I TRYB UZYSKANIA WYŻSZEJ NIŻ PRZEWIDYWANA OCENY ŚRÓDROCZNEJ I ROCZNEJ

PRAWA ZACHOWANIA. Podstawowe terminy. Cia a tworz ce uk ad mechaniczny oddzia ywuj mi dzy sob i z cia ami nie nale cymi do uk adu za pomoc

Systemy mikroprocesorowe - projekt

Platforma zamówień personelu JOBMAN.pl

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Zmiany w programie C GEO v. 6.5

2.Prawo zachowania masy

Czy zdążyłbyś w czasie, w jakim potrzebuje światło słoneczne, aby dotrzeć do Saturna, oglądnąć polski hit kinowy: Nad życie Anny Pluteckiej-Mesjasz?

Ogólna charakterystyka kontraktów terminowych

SCHEMAT ZBIORNIKA HYDROFOROWEGO ZE STALI NIERDZEWNEJ

InsERT GT Własne COM 1.0

Elementy cyfrowe i układy logiczne

Zagadnienia transportowe

INSTRUKCJA DO INTERNETOWEGO ROZKŁADU JAZDY

Logika I. Wykład 2. Działania na zbiorach

Ćwiczenie: "Ruch harmoniczny i fale"

Test F- Snedecora. będzie zmienną losową chi-kwadrat o k 1 stopniach swobody a χ

Praca na wielu bazach

WF-FaKir dla Windows

Jak spersonalizować wygląd bloga?

Ćwiczenie nr 2 Zbiory rozmyte logika rozmyta Rozmywanie, wnioskowanie, baza reguł, wyostrzanie

VinCent Office. Moduł Drukarki Fiskalnej

Informacje o omawianym programie. Założenia programu omawianego w przykładzie

Instrukcja rejestracji do sprawozdania PARPA G1

w wersji Comarch ERP XL Zmiany techniczne w wersji

Rozdział 6. Pakowanie plecaka. 6.1 Postawienie problemu

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

BLOK I. 3. Korzystając z definicji pochodnej w punkcie, obliczyć pochodne podanych funkcji we wskazanych punktach:

Twierdzenie Bayesa. Indukowane Reguły Decyzyjne Jakub Kuliński Nr albumu: 53623

Tworzenie aplikacji internetowych E14

Historia zmian w aplikacji. Rejestr Podmiotów Wykonujących Działalność Leczniczą

Instrukcja. 1 Zamawiając kuriera. W Paczkomacie lub POK. 3 Nadając list polecony. nadawania przesyłek z Allegro: (Punkt Obsługi Klienta)

Moduł Pulpit opcji oraz Narzędzia. Opis v 1.0

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

DE-WZP JJ.3 Warszawa,

PERSON Kraków

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Microsoft Management Console

WordPad. Czyli mój pierwszy edytor tekstu

Odtwarzanie dźwięków i filmów automatycznie a odtwarzanie po kliknięciu

TWIERDZENIE PITAGORASA

INSTRUKCJA OBSŁUGI PILOTA DreamFIRE

4.3. Struktura bazy noclegowej oraz jej wykorzystanie w Bieszczadach

Zintegrowane Systemy Zarządzania Biblioteką SOWA1 i SOWA2 SKONTRUM

Spring MVC Andrzej Klusiewicz 1/18

Trenuj przed sprawdzianem! Matematyka Test 4

Aplikacje internetowe i rozproszone - laboratorium

Stypendia USOS Stan na semestr zimowy 2013/14

Bazy danych. Andrzej Łachwa, UJ, /15

Konfiguracja programu RMS do współpracy z wagami DIBAL. Programowanie artykułów 3

INTERAKTYWNA APLIKACJA MAPOWA MIASTA RYBNIKA INSTRUKCJA OBSŁUGI

Konfiguracja historii plików

Firma Informatyczna JazzBIT

Jak korzystać z Group Tracks w programie Cubase na przykładzie EWQLSO Platinum (Pro)

Instrukcja obsługi Czujnik refleksyjny O5PG

Formularze i ramki w HTML

SSK - Techniki Internetowe

Transkrypt:

Programowanie obiektowe ćw.5 JAVAScript animacja obiektów, tworzenie własnych obiektów Tworzenie i usuwanie obiektów (Uzupełnienie) Przykład zawiera kod dodawania i usuwania komórek tabeli: <HTML><HEAD> </HEAD> <BODY style="font-size:30px"> <TABLE name="xxx" id="t1" style="margin-left:30px;border:1px solid black"> <TR id="w"></tr> </TABLE> <DIV style="text-align:center;padding-top:30px"> <INPUT type="submit" value="dodaj" onclick="dodaj( )" /> <INPUT type="submit" value="usuń" onclick="usun( )" /> </DIV> function dodaj() { var wiersz = document.getelementbyid("w");//referencja do elementu o id="w" var kom=document.createelement("td") //ustalamy styl komórki kom.style.border="2px solid red"; kom.style.textalign="center"; kom.style.fontsize="22px"; //tworzymy węzeł tekstowy, tekst jest numerem komórki o 1 większy niż aktualna ich liczba var t3=document.createtextnode(wiersz.childnodes.length+1); //dołączamy do wiersza tabeli kom.appendchild(t3); wiersz.appendchild(kom);// function usun( ) { var wiersz = document.getelementbyid("w"); //pobranie ostatniej komórki jej indeks o 1 mniejszy od liczby komórek ostatni=wiersz.childnodes[wiersz.childnodes.length-1] //usunięcie jej wiersz.removechild(ostatni);//usuwamy ostatni </BODY></HTML> Sprawdzić i zrozumieć działanie powyższego kodu. Animacja obiektów Wykorzystamy tu poznaną wcześniej funkcję (metodę obiektu window) settimeout() opóźniającą wykonanie czynności o określony czas. settimeout("funkcja", czas w milisekundach) Uruchamianie i zatrzymywanie <HTML><HEAD></HEAD><BODY style="font-size:30px">

licznik=0;//początkowy licznik function stoper( ) { //wstaw aktualny licznik jako tekst elementu T1 document.getelementbyid('t1').innerhtml=licznik; //zwiększ licznik o 1 licznik++; // po 1 sekundzie jeszcze raz wykonaj funkcję stoper( ) t=settimeout("stoper()",1000); function startuj( ) { //uruchom stoper stoper(); function stopuj( ){ //wyczyść zmienną powtarzania metoda obiektu window cleartimeout(t); <P id="t1"></p> <INPUT type="button" value="start" onclick="startuj( )" /> <INPUT type="button" value="stop" onclick="stopuj( )" /><br> </BODY> </HTML> Animacja elementu Teraz już stosunkowo łatwo możemy wykonać animację obiektu na bazie powyższego przykładu. Umieszczamy na stronie element <DIV> z odpowiednim stylem i z opóźnieniem 50ms wykonujemy zmianę jej cechy stylu left (Uwaga: konieczne ustawienie dla stylu cechy position:absolute). Wykonajmy poniższy przykład: <HTML><HEAD></HEAD><BODY style="font-size:30px"> //zmienne pomocnicze licznik=0; function stoper( ) { el=document.getelementbyid("t1"); el.style.left = licznik; licznik++; t=settimeout("stoper( )",op); function jazda( ) { //ustalenie opóźnienia (szybkości) op=50; //zmienna globalna //uruchom stoper stoper( );

function stopuj( ) { cleartimeout(t); <INPUT type="button" value="start" onclick="jazda( )" /> <INPUT type="button" value="stop" onclick="stopuj( )" /> <DIV id="t1" style="position: absolute; left: 0px; top: 60px; width:100px; height:100px; background-color:red"> </DIV> </BODY></HTML> Sprawdzić działanie powyższego przykładu. Zadanie Dodać dodatkową funkcję szybciej( ) uruchamianą trzecim przyciskiem, z inną wartością op (mniejsza wartość to szybszy ruch). Zauważyć, że da się przyspieszać tylko po uprzednim zatrzymaniu ruchu. Czy można sobie poradzić z tym problemem? Tak... można uruchamiać funkcję stopuj() tuż przed uruchomieniem stopera w obu funkcjach: jazda() i szybciej() konieczna jest jednak inicjacja zmiennej t przed definicjami funkcji: var t; ponieważ przed pierwszym wykorzystaniem funkcji settimeout() zmienna ta byłaby nieznana. Tworzenie własnych obiektów Dotychczas wykorzystywaliśmy obiekty wizualne w dokumencie HTML. Przy pomocy skryptów JavaScript wykonywaliśmy na nich pewne operacje, ustalając i zmieniając ich właściwości oraz korzystaliśmy ze zdefiniowanych dla nich metod, które wspomagały wykorzystanie obiektów reprezentowanych przez znaczniki HTML (i innych, jak np. obiekt typu Date) w hierarchii DOM, ustalanie i zmianę ich właściwości, wykorzystywanie metod dla tworzenia nowych obiektów, ich usuwania itp. W dalszej części poznamy sposoby tworzenia własnych obiektów, definiowania ich właściwości i metod oraz ich korzystania z nich w skryptach JavaScript. Spróbujemy również poznać pewne charakterystyczne cechy programowania obiektowego, jak dziedziczenie obiektów czy polimorfizm. Słowo kluczowe this Nadając i wykorzystując identyfikatory właściwości i metod obiektów korzystamy ze słowa kluczowego this. Rozumiane jest ono jako odniesienie do obiektu bieżącego, właściciela metody lub właściwości. Poniżej prosty przykład wyjaśniający znaczenie słowa kluczowego this: <HTML> <HEAD> </HEAD> <BODY style="font-size:18px"> <PRE> function kolor1( ) { this.document.bgcolor = "red"; function kolor2(e) { e.style.color = "yellow";

</PRE> <INPUT type="button" value="kolor dla tła okna" onclick="kolor1( )"> <INPUT type="button" value="kolor dla napisu na przycisku" onclick="kolor2(this)"> </BODY> </HTML> W powyższym przykładzie mamy dwie własne funkcje. W pierwszej o nazwie kolor1 ustalamy kolor tła dla dokumentu, którego właścicielem (this) - jest domyślnie obiekt window (okno przeglądarki). Druga funkcja o nazwie kolor2 zmienia kolor czcionki przekazanego do funkcji jako argument obiektu e - wywoływana jest kliknięciem przycisku z przekazaniem odniesienia do tego właśnie przycisku (this), a więc zmienia się kolor napisu na przycisku. Definicja obiektu i tworzenie instancji obiektu W definicji obiektu tworzymy: właściwości obiektu (zmienne proste lub obiektowe), metody obiektu (funkcje wewnętrzne). W JavaScript można tworzyć własne definicje obiektów (tzw. konstruktor obiektu) z wykorzystaniem funkcji. Potem można tworzyć ich egzemplarze (instancje). Przykładowo funkcja definiująca obiekt składający się z samych właściwości: function Nazwa(argument1, argument2) { this.właściwość1 = argument1; //nadanie wartości przez argument this.właściwość2 = argument2; //nadanie wartości przez argument this.właściwość3 = 5; //nadanie stałej wartości liczbowej this.właściwość4 = true; //nadanie stałej wartości logicznej //itd. Jak widzimy właściwości obiektu (z wykorzystaniem słowa kluczowego this) są nadawane przy pomocy argumentów funkcji, mogą też mieć nadane stałe wartości. Teraz możemy wygenerować wiele "egzemplarzy" (instancji) obiektu o definicji Nazwa() i przypisać je do zmiennych referencji p1 i p2. Wykorzystujemy tu zapis ze słowem kluczowym new: var p1 = new Nazwa( argumenty aktualne); //zmienna lokalna p2 = new Nazwa( inne argumenty aktualne); //zmienna globalna Poniżej dodamy już na konkretnym przykładzie - oprócz właściwości także metody (funkcje) w definicji obiektu: <PRE> //funkcja konstruktor (definicja) function Pies(imie, rasa, kolor, plec) { //własciwości this. imie = imie; this. rasa = rasa; this. kolor = kolor; this. plec = plec; this.glos ="HAUUUU"; //dla wszystkich psów ten sam //metoda this.dajglos = function () { document.writeln ("robię ", this.glos); ;

;//koniec definicji //teraz utworzymy dwie instancje (dwa obiekty klasy Pies) var piesek1 = new Pies( "Misia", "Labrador", "czekoladowa", "suka" ); var piesek2 = new Pies( "Misiek", "Seter", "rudy", "pies" ); //możemy mieć dostęp do właściwości i metod document.writeln("mam na imię:", piesek1.imie); // ->Misia piesek1.dajglos ( ); //-> HAUUUU //itd. </PRE> Zwróćmy uwagę, że zmienne argumentów mają tu takie same nazwy jak właściwości obiektu (rozróżnienie dzięki słowu this), choć mogą też się różnić. Zwróćmy uwagę na sposób operowania na właściwościach można je wyświetlić na ekranie, zmienić wartości itp. Metody też mogą wpływać na właściwości. Metody (funkcje obiektu) wykonujemy jako: osobne instrukcje, można funkcję użyć w kontekście zmiennej rezultatu - jeśli metoda zwraca jakieś dodatkowe rezultaty (tu wykorzystujemy słowo kluczowe return). Przykład Zdefiniujmy obiektowi dodatkową właściwość waga: this.waga=waga; Uwaga: Trzeba też dopisać wagę do listy argumentów funkcji Pies( ) Utworzymy też definicję metody jedz( ) jako: this.jedz= function(x){ this.waga+=x/10; return this.waga Jako argument x przekazywany do funkcji jedz rozumiemy ilość jedzenia. Teraz możemy metodę wykorzystać, np. document.writeln("waga początkowa:",piesek1.waga); piesek1.jedz(5); document.writeln("waga po zjedzeniu +5:",piesek1.waga); //albo document.writeln("waga po zjedzeniu +10:",piesek1.jedz(10)); Ćwiczenie 1. Sprawdzić powyższy przykład, dopisać metodę jedz() i wykorzystać w skrypcie. 2. Dopisać definicję metody biegaj(), która powoduje odpowiednie zmniejszanie wagi. Wykorzystać tę metodę. Zadania 1. Wykonać powyższe skrypty i zrozumieć ich działanie. 2. Utworzyć skrypt, w którym: a. utworzona jest definicja obiektu Prostokat z właściwościami: szerokosc i wysokosc oraz metodą obliczpole(). b. tworzone są dwie instancje obiektu Prostokat, c. dla obu wypisywane są długości oby wymiarów oraz wykorzystana jest metoda obliczania pola powierzchni zwracająca obliczone pole,

Spróbować wykonać zadanie wykorzystując obie metody definiowania obiektów. 3. Utworzyć skrypt, w którym: utworzona jest definicja obiektu Auto z zaprojektowanymi właściwościami, np. marka, pojemnosc, moc, predkosc itp. Wszystkie wartości właściwości inicjować przez argumenty funkcji definiującej, z wyjątkiem prędkości, którą dla wszystkich nowotworzonych obiektów ustawić na 0. zdefiniować metody: wypiszdane(), której zadaniem jest wypisanie danych auta, start(s) gdzie s będzie prędkością początkową, stop(), której zadaniem jest zatrzymanie pojazdu, przyspiesz(p), gdzie p będzie wartością, o którą należy zwiększyć prędkość. tworzona jest instancja (lub kilka) obiektu Auto, po utworzeniu instancji wypisywane są wszystkie właściwości z wykorzystaniem metody wypiszdane(), a. następnie wykorzystujemy metody: start() przyspiesz() stop() (przyspieszać można wielokrotnie), każdorazowo wypisywać na ekranie dane (szczególnie interesuje nas prędkość początkowa, po starcie, po przyspieszeniu itd. można utworzyć dodatkowo metodę wypiszpredkosc() i ją wykorzystać. Spróbować wykonać zadanie wykorzystując obie metody definiowania obiektów.