Sieciowe Technologie Mobilne. Laboratorium 4



Podobne dokumenty
Sieciowe Technologie Mobilne. Laboratorium 2

Sieciowe Technologie Mobilne. Laboratorium 1

Referat Pracy Dyplomowej

Multimedia i interfejsy. Ćwiczenie 5 HTML5

Podstawy programowania, Poniedziałek , 8-10 Projekt, część 1

Dokument hipertekstowy

6.4. Efekty specjalne

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

Widżety KIWIPortal. tworzenie umieszczanie na stronach internetowych opcje zaawansowane. Autor: Damian Rebuś Data: Wersja: 1.

Aplikacje WWW - laboratorium

która metoda jest najlepsza

Spis treści. Konwencje zastosowane w książce...5. Dodawanie stylów do dokumentów HTML oraz XHTML...6. Struktura reguł...9. Pierwszeństwo stylów...

Idea of responsive web design. Roman Białek Mateusz Mikołajczak Kacper Palmowski Krzysztof Szot

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows Vista

Aplikacje WWW - laboratorium

I. Dlaczego standardy kodowania mailingów są istotne?

Zajęcia nr 15 JavaScript wprowadzenie do JavaScript

Ćwiczenie 23 Praca z plikiem.psd

E.14.1 Tworzenie stron internetowych / Krzysztof T. Czarkowski, Ilona Nowosad. Warszawa, Spis treści

Reguły plików cookies witryny i usług internetowych tsop.pl

Powtórzenie materiału: CSS3 Spis treści

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows 7

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Spis treści CZĘŚĆ I JĘZYK SIECI 17. Wstęp 13. Rozdział 1 Wprowadzenie do HTML5 19. Rozdział 2 Znajomość znaczników HTML5 37

Podstawy technologii cyfrowej i komputerów

Utworzenie aplikacji mobilnej Po uruchomieniu Visual Studio pokazuje się ekran powitalny. Po lewej stronie odnośniki do otworzenia lub stworzenia

ANIMACJE W CSS3. Czyli po co płacić podatek o Javy Script i JQuery

PROBLEMY TECHNICZNE. Co zrobić, gdy natrafię na problemy związane z użytkowaniem programu DYSONANS

Programowanie Multimediów. Programowanie Multimediów JAVA. wprowadzenie do programowania (3/3) [1]

Język Java część 2 (przykładowa aplikacja)

narzędzie Linia. 2. W polu koloru kliknij kolor, którego chcesz użyć. 3. Aby coś narysować, przeciągnij wskaźnikiem w obszarze rysowania.

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL III TI 4 godziny tygodniowo (4x30 tygodni =120 godzin ),

GRAFIKA KOMPUTEROWA I TWORZENIE STRON WWW

REKLAMA INTERNETOWA WYMAGANIA TECHNICZNE

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

Dokumentacja WebMaster ver 1.0

Laboratorium Programowanie urządzeń mobilnych

Laboratorium - Monitorowanie i zarządzanie zasobami systemu Windows XP

SPOSOBY POMIARU KĄTÓW W PROGRAMIE AutoCAD

Szczegółowy opis zamówienia:

I. Formatowanie tekstu i wygląd strony

Programowanie gier 3D w HTML5. Andrzej P.Urbański Politechnika Poznańska

Część II Wyświetlanie obrazów

WIZUALIZACJA INFORMACJI TEKSTOWEJ WSTĘP DO HTML 5 CANVAS

- 1 Laboratorium fotografii cyfrowej Foto Video Hennig

Spis treści. 1 Moduł Mapy 2

Zad. 6: Sterowanie robotem mobilnym

Adobe InDesign lab.1 Jacek Wiślicki, Paweł Kośla. Spis treści: 1 Podstawy pracy z aplikacją Układ strony... 2.

MIKROKONTROLERY ARM DOKUMENTACJA WSTĘPNA PROJEKTU GRA PONG

Programowanie obiektowe

Obsługa grafiki w Delphi, rysowanie na płótnie, obsługa myszki, zapisywanie obrazków do plików, bitmapy pozaekranowe.

RESPONSYWNE INTERFEJSY. Klasy urządzeń klienckich Responsywne style CSS. Waldemar Korłub

Programowanie aplikacji na urządzenia mobilne

Tabele. Przykład 15a.htm. <HTML><HEAD><TITLE> Cennik</TITLE></HEAD><BODY><H3>Cennik</H3> <TABLE BORDER="1"> <TR>

Za pomocą atrybutu ROWS moŝemy dokonać podziału ekranu w poziomie. Odpowiedni kod powinien wyglądać następująco:

Pytanie: Odpowiedź: Pytanie: Odpowiedź: . Pytanie: Odpowiedź: Pytanie: element multimedialny lub interaktywny Odpowiedź: Pytanie:

Dynamiczne i wydajne tworzenie interfejsu. Piotr Michałkiewicz

Polityka bezpieczeństwa.

Pliki zorganizowano w strukturze drzewiastej odzwierciedlając strukturę logiczną aplikacji:

AUDYT DOSTĘPNOŚCI STRONY INTERNETOWEJ

Układy witryn internetowych

Systemy wirtualnej rzeczywistości. Komponenty i serwisy

CSS. Kaskadowe Arkusze Stylów

Przygotowanie do nowoczesnego programowania po stronie przeglądarki. (HTML5, CSS3, JS, wzorce, architektura, narzędzia)

Cookies Zewnętrzne - oznacza Cookies zamieszczane przez partnerów Administratora, za pośrednictwem strony internetowej Serwisu.

RAMOWY HARMONOGRAM SZKOLENIA

Defilada - przykład wykorzystujący animowane modele Copperlicht. Andrzej P.Urbański Politechnika Poznańska

Nowy interfejs w wersji 11.0 C8 BETA

5.4. Efekty specjalne

Obiektowy model dokumentu. Katedra Mikroelektroniki i Technik Informatycznych

2 Przygotował: mgr inż. Maciej Lasota

Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer)

Instytut Chemii Bioorganicznej PAN Poznańskie Centrum Superkomputerowo-Sieciowe

Tworzenie menu i authoring w programie DVDStyler

Rys.2.1. Drzewo modelu DOM [1]

Front-end: solidne podstawy. Wszystko, co warto wiedzieć o HTML, CSS, JavaScript i Bootstrap.

1 Zrozumieć Flasha... 1 Co można zrobić za pomocą Flasha?... 2 Tworzenie obrazków do strony 3 Animowanie witryny 4 Tworzenie filmów

REGULAMIN. Cookies. Co to są ciasteczka?

LIVE Gra w życie. LIVE w JavaScript krok po kroku. ANIMACJA Rozpoczynamy od podstawowego schematu stosowanego w animacji

Danuta ROZPŁOCH-NOWAKOWSKA Strona Moduł 4. Przykład 1. Przykład 2. HTML 4.01 Transitional).

Generatory pomocy multimedialnych

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012. Przygotowanie do druku

Wykorzystano fragmenty wykładu Krystyny Dziubich GRAFIKA WEKTOROWA. Aplikacje i Usługi Internetowe KASK ETI Politechnika Gdańska.

Polityka prywatności 1. Definicje Administrator Cookies - Cookies Administratora - Cookies Zewnętrzne - Serwis - Urządzenie - Ustawa Użytkownik -

Zmiany funkcjonalne i lista obsłużonych zgłoszeń Comarch DMS , Comarch DMS i Comarch DMS

Projekt K.I.K. Podręcznik użytkownika. Paweł Kieliszczyk, Bartłomiej Kucharczyk, Michał Skrzypkowski, Szymon Wilczek

Komputery I (2) Panel sterowania:

Programowanie na poziomie sprzętu. Programowanie w Windows API

SC-BT100 Aktualizacja firware u (Europe/UK/CIS)

Systemy multimedialne 2015

Przewodnik Google Cloud Print

Teraz bajty. Informatyka dla szkoły podstawowej. Klasa VI

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Ćwiczenie 14 Dmuchawce

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

PRZEWODNIK PO PRZEDMIOCIE

LABORATORIUM 2 WSTĘP DO SIECI TELEINFORMATYCZNYCH TABELE I FORMULARZE

I. Spis treści I. Spis treści... 2 II. Kreator szablonów Tworzenie szablonu Menu... 4 a. Opis ikon Dodanie nowego elementu...

Transkrypt:

Sieciowe Technologie Mobilne Laboratorium 4 Tworzenie wieloplatformowych aplikacji mobilnych przy użyciu biblioteki PhoneGap. Łukasz Kamiński

Laboratorium 4 Urozmaicone zostaną animacje potworów, aby odpowiadały kierunkowi ich ruchu (nowa klasa Actor). Porównamy wydajność aplikacji na telefonie i na komputerze stacjonarnym. Podjęte zostaną próby optymalizacji. 1.1. Klasa Actor Wprowadź nową klasę Actor, wywiedzioną z klasy AnimatedSprite. Klasa ta ma reprezentować szczególny przypadek animowanych obiektów, tj. postaci, które powinny być rysowane w inny sposób, w zależności od kierunku, w którym się poruszają. Obiektom tej klasy towarzyszą z reguły pliki graficzne, które pozwalają zdefiniować wiele różnorodnych sekwencji klatek animacji (patrz przykładowy rysunek poniżej).

Wzbogać klasę Actor o pola, które definiują sekwencje animacji dla czterech kierunków głównych (góra, prawo, dół, lewo) ruchu obiektu. Nadpisz metodę update() klasy Actor, aby: 1. ustalała kierunek ruchu obiektu, w sposób dyskretny, z dokładnością do wspomnianych czterech kierunków głównych (góra, prawo, dół, lewo), 2. ustawiała sekwencję animacji stosownie do ustalonego kierunku ruchu obiektu (np. z użyciem metody setanimationframesseq() przedstawionej w instrukcji nr 2). Zmodyfikuj dotychczasowe obiekty reprezentujące potwory, aby korzystały z nowo powstałej klasy Actor. Oczekiwany efekt został pokazany na poniższym rysunku każdy z 3 potworów (szkieletów) jest zwrócony zgodnie z kierunkiem, w którym się porusza. 1.2. Ustalenie FPS Obliczaj FPS i wyświetlaj jego wartość w dowolnym rogu ekranu gry. Porównaj wydajność gry na komputerze stacjonarnym oraz na urządzeniu mobilnym. 1.3. Wykorzystanie całego ekranu Spraw, aby canvas z grą zajmował całą dostępną przestrzeń. Najprostszym sposobem, aby to osiągnąć, jest nadpisanie atrybutów width i height canvas'a. this.kanwa = document.getelementbyid(canvasid); this.kanwa.width = window.innerwidth; this.kanwa.height = window.innerheight; Dla pewności warto też pozbyć się marginesów z dokumentu, najlepiej korzystająć z CSS: html, body { width: 100%; height: 100%; margin: 0px; 1.4. Optymalizacja Niektóre wyświetlane elementy gry mają charakter statyczny (bohater, tło). Ich wielokrotne

rysowanie w każdym obiegu pętli ma negatywny wpływ na wydajność aplikacji, zwłaszcza w sytuacji, gdy próbujemy dokonywać zmiany rozmiaru obiektu (np. korzystając z przedstawionej w instrukcji nr 2 metody Sprite.resize()). Dużo lepszym rozwiązaniem jest użycie dodatkowego obiektu canvas (tzw. off-screen canvas ), na którym tylko raz narysowane zostaną obiekty statyczne, wraz z wszelkimi niezbędnymi zmianami rozmiaru. Zawartość tego obiektu będzie przenoszona do właściwego canvas'a w każdym obiegu pętli. Funkcjonalność tę możesz zaimplementować z wykorzystaniem poniższej, prostej klasy. kamyk.offscreencanvas = Class.$extend({ init : function(game) { this. renderables = []; //tworzenie "off-screen canvas" o odpowiednim rozmiarze this. offscreencanvas = document.createelement("canvas"); this. offscreencanvas.width = game.width; this. offscreencanvas.height = game.height; //zapamiętanie dwóch kontekstów graficznych this. ctx = this. offscreencanvas.getcontext("2d"); this. maincanvascontext = game.context;, /**Dodanie obiektu, który ma być rysowany za pośrednictwem "off-screen canvas". Należy wykonać na wszystkich obiektach przed wywołaniem renderyourself()*/ addrenderable : function(r) { this. renderables.push(r);, /**Do wykonania na początku metody Game.render()*/ rendertomaincanvas : function() { this. maincanvascontext.drawimage(this. offscreencanvas,0,0);, /**Do wykonania tylko raz, na początku.*/ renderyourself : function() { for(var i = 0; i < this. renderables.length ; i++) { this. renderables[i].render(this. ctx); ); Pamiętaj, że metoda renderyourself() powinna zostać wywołana, gdy załadowane zostaną wszystkie obrazki. Porównaj liczbę FPS po zmianach z liczbą FPS sprzed wprowadzenia off-screen canvas. Z reguły wykorzystywanie wielu elementów typu canvas pozwala osiągnąć w sposób najszybszy znaczny wzrost wydajności aplikacji. Możesz próbować dalszych optymalizacji (nia na ocenę, lecz dla własnej satysfakcji). Najlepiej poprzedzić je profilowaniem gry (narzędzia do profilowania są dostępne w każdej sensownej przeglądarce). Jeśli zajdzie taka konieczność, możesz próbować: 1. Zastępować wywołanie Math.floor(liczba) wywołaniem liczba>>0. Przy rysowaniu należy przekształcać liczby zmiennoprzecinkowe na całkowite (w przeciwnym wypadku może się pojawiać efekt rozmycia ), więc wywołania tego typu są wykorzystywane dosyć intensywnie. 2. Ograniczać tworzenie nowych obiektów, starać się wykorzystywać ponownie istniejące. Takie podejście pozwoli na płynniejsze działanie mechanizmów odśmiecania pamięci języka JavaScript. Pamiętaj, że funkcja też jest obiektem unikaj tworzenia funkcji anonimowych w kluczowych dla wydajności aplikacji miejscach.

3. Jeśli jeszcze tego nie zrobiłeś, pętlę gry oprzyj na metodzie requestanimationframe(). ZADANIE Zadanie do wykonania zostały opisane w poprzedniej części instrukcji. Punktacja: 2 pkt. - zaimplementowano klasę Actor, potwory są animowane w sposób odpowiadający ich kierunkowi ruchu 1 pkt. - wyświetlany jest licznik FPS 1 pkt. - gra zajmuje cały ekran urządzenia 1 pkt. - dokonano optymalizacji z użyciem mechanizmu off-screen canvas, licznik FPS wskazuje wartość większą niż 15 na Samsungu Galaxy SI ;)