Tytuł oryginału: Flash iOS Apps Cookbook
Tłumaczenie: Joanna Zatorska
ISBN: 978-83-246-4993-8
Copyright © Packt Publishing 2012.
First published in the English language under the title ‘Flash iOS Apps Cookbook’
© Helion 2013. All rights reserved.
All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,
electronic or mechanical, including photocopying, recording or by any information storage retrieval system,
without permission from the Publisher.
Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej
publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną,
fotograficzną, a także kopiowanie książki na nośniku filmowym, magnetycznym lub innym powoduje
naruszenie praw autorskich niniejszej publikacji.
Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich
właścicieli.
Wydawnictwo HELION dołożyło wszelkich starań, by zawarte w tej książce informacje były kompletne
i rzetelne. Nie bierze jednak żadnej odpowiedzialności ani za ich wykorzystanie, ani za związane z tym
ewentualne naruszenie praw patentowych lub autorskich. Wydawnictwo HELION nie ponosi również
żadnej odpowiedzialności za ewentualne szkody wynikłe z wykorzystania informacji zawartych w książce.
Wydawnictwo HELION
ul. Kościuszki 1c, 44-100 GLIWICE
tel. 32 231 22 19, 32 230 98 63
e-mail: helion@helion.pl
WWW: http://helion.pl (księgarnia internetowa, katalog książek)
Pliki z przykładami omawianymi w książce można znaleźć pod adresem:
ftp://ftp.helion.pl/przyklady/twapre.zip
Drogi Czytelniku!
Jeżeli chcesz ocenić tę książkę, zajrzyj pod adres
http://helion.pl/user/opinie/twapre
Możesz tam wpisać swoje uwagi, spostrzeżenia, recenzję.
Printed in Poland.
Spis treci
O autorze
9
Podzikowania
11
O recenzentach
13
Wstp
15
Rozdzia 1. Wstp do tworzenia aplikacji iOS
21
Wstp
22
Rejestracja w programie iOS Developer Program
22
Dostp do serwisu iOS Provisioning Portal
29
Generowanie wniosku o podpisanie certyfikatu w systemie Windows
32
Generowanie wniosku o podpisanie certyfikatu w systemie MAC OS X
34
Uzyskiwanie certyfikatu programisty
35
Tworzenie certyfikatu P12 w systemie Windows
38
Tworzenie certyfikatu P12 w systemie MAC OS X
41
Rejestracja urzdzenia
43
Tworzenie identyfikatora aplikacji
47
Tworzenie programistycznego profilu informacyjnego
50
Instalacja profilu informacyjnego na urzdzeniu
53
Kup książkę
Poleć książkę
Spis
treci
4
Rozdzia 2. Tworzenie aplikacji iOS w programie Flash
57
Wstp
57
Instalacja AIR SDK
58
Tworzenie dokumentu AIR for iOS
60
Umieszczanie elementów na stole montaowym
63
Opis dziaania
66
Ogólne ustawienia rodowiska AIR for iOS
66
Opis dziaania
68
Ustawienia wdraania aplikacji w rodowisku AIR for iOS
70
Kompilacja w programie Flash Professional
73
Instalacja aplikacji przy uyciu iTunes
75
Rozdzia 3. Tworzenie pierwszej aplikacji
79
Wstp
79
Tworzenie podstawowej klasy dokumentu
80
Zapobieganie przejciu ekranu w stan bezczynnoci
82
Wielozadaniowo
85
Eleganckie zamykanie aplikacji
87
Doczanie klas do symboli klipów filmowych
89
Korzystanie z ptli uaktualnie
92
Doczanie obrazu rozruchowego aplikacji
96
Doczanie ikon
99
Edycja pliku deskryptora aplikacji
101
Zdalne debugowanie
104
Rozdzia 4. Konwersja projektów Flash na platform iOS
109
Wstp
109
Interakcja z uytkownikiem
110
Zapisywanie stanu aplikacji
115
Spaszczanie listy wywietlania
118
Konwersja grafiki wektorowej na rastrow
121
Zmiana rozmiarów bitmap
126
Maskowanie obiektów
129
Praca z zewntrznymi plikami SWF
132
Rozdzia 5. Technologia Multi-touch i gesty
137
Wstp
137
Ustawianie trybu interakcji z punktem kontaktu
138
Wykrywanie kilku punktów kontaktu
141
Przeciganie kilku wywietlonych obiektów
146
ledzenie ruchu
150
Ustawianie trybu interakcji z uyciem gestów
152
Obsuga gestu machnicia
156
Przewijanie obiektu
159
Obracanie obiektu
162
Powikszanie i zmniejszanie obiektu
164
Kup książkę
Poleć książkę
Spis treci
5
Rozdzia 6. Akceleracja sprztowa grafiki
167
Wstp
167
Porównanie grafiki wektorowej i rastrowej
168
Tryb GPU-Blend
171
Tryb GPU-Vector
176
Buforowanie bitmap
181
Buforowanie z uyciem macierzy
187
Dostp do bitmap w kodzie ActionScript
192
Wczytywanie bitmap w trakcie dziaania programu
196
Praca z zestawami sprite’ów
200
Animowanie bitmap z uyciem ActionScript
205
Rozdzia 7. Praca z tekstem i wirtualn klawiatur
209
Wstp
209
Uywanie czcionek urzdzenia w polach tekstowych
210
Korzystanie z osadzonych czcionek w polach tekstowych
213
Wejciowe pole tekstowe
217
Pobieranie tekstu
221
Konfigurowalne przewijanie podczas aktywacji wirtualnej klawiatury
223
Uaktualnianie dynamicznych pól tekstowych
227
Uycie natywnych kontrolek tekstowych iOS
231
Rozdzia 8. Zmiany rozdzielczoci i orientacji ekranu
237
Wstp
237
Wybór docelowego urzdzenia
238
Dostosowywanie do ekranów Retina
241
Obsuga urzdze o rónej rozdzielczoci ekranu
246
Ustawianie domylnego formatu ekranu
251
Wczanie automatycznej orientacji
252
Nasuchiwanie na zmiany orientacji
255
Reakcja na zmiany orientacji
258
Rozdzia 9. API geolokalizacji i akcelerometru
263
Wstp
263
Okrelanie biecego pooenia
264
Okrelanie prdkoci i kierunku poruszania si
269
Sprawdzanie dostpnoci geolokalizacji
273
Reagowanie na zmiany zarejestrowane przez akcelerometr
277
Wykrywanie potrzsania
282
Rozdzia 10. Obsuga kamery i mikrofonu
287
Wstp
287
Zapisywanie w rolce z aparatu
288
Odczyt rolki z aparatu
291
Fotografowanie z uyciem domylnej aplikacji
296
Kup książkę
Poleć książkę
Spis
treci
6
Praca z wbudowanymi aparatami
300
Nagrywanie dwiku z uyciem mikrofonu
304
Odtwarzanie nagranego dwiku
309
Rozdzia 11. Wywietlanie stron WWW
315
Wstp
315
Wywietlanie strony WWW w Safari
316
Renderowanie strony WWW w aplikacji
318
Przegldanie historii wywietlanych stron
321
Renderowanie lokalnej strony WWW
325
Dynamiczne generowanie lokalnej strony WWW
328
Tworzenie zrzutu strony WWW
334
Rozdzia 12. Praca z wideo i dwikiem
337
Wstp
337
Odtwarzanie lokalnego wideo w formacie FLV
338
Odtwarzanie lokalnego wideo w formacie H.264
343
Kontrola odtwarzania wideo
348
Osadzanie dwiku
353
Odtwarzanie osadzonego dwiku
355
Strumie dwiku
358
Kontrola odtwarzania dwiku
362
Rozdzia 13. czno, cigo i schematy URI
367
Wstp
367
Monitorowanie poczenia z internetem
368
Ustawianie staego poczenia Wi-Fi
372
Dostp do wasnych katalogów aplikacji
374
Zapisywanie plików
377
Odczytywanie plików
381
Uruchamianie aplikacji systemowych
385
Uruchamianie App Store
389
Uruchamianie aplikacji Mapy
391
Okrelanie wymaga sprztowych
395
Rozdzia 14. Uywanie natywnych rozszerze i ADT
399
Wstp
399
Kompilacja w wierszu polece w systemie Windows
400
Kompilacja w wierszu polece w systemie Mac OS X
406
Korzystanie z natywnego rozszerzenia
411
Tworzenie pakietu z natywnym rozszerzeniem
416
Wczanie trybu Interpreter Mode
420
Uruchamianie ADT poza katalogiem instalacyjnym programu Flash Professional CS5
424
Kup książkę
Poleć książkę
Spis treci
7
Rozdzia 15. Optymalizacja kodu ActionScript
429
Wstp
429
Deklarowanie typów danych
430
Zastpowanie typu Object wasnymi klasami
432
Optymalizacja ptli
434
Zastpowanie tablic wektorami
437
Ponowne wykorzystanie instancji
440
Korzystanie ze statycznych zmiennych i metod
443
Korzystanie z metod wywoania zwrotnego
446
Wykorzystanie propagacji zdarze
449
Dodatek A. Receptury przeznaczone dla programu Flash Professional CS5.5
455
Dodatek B. Wyniki pomiarów optymalizacji kodu ActionScript
457
Deklarowanie typów danych
458
Zastpowanie typu Object wasnymi klasami
460
Optymalizacja ptli
462
Zastpowanie tablic wektorami
464
Skorowidz
469
Kup książkę
Poleć książkę
Spis
treci
8
Zespó
Author
Christopher Caleb
Reviewers
Daniel Albu
JP Berrie
Simon Buckley
Mark Doherty
Richard England
Stuart McLeman
Brian Rinaldi
David Wagner
Acquisition Editor
Douglas Paterson
Lead Technical Editor
Dayan Hyames
Technical Editor
Kedar Bhat
Copy Editor
Neha Shetty
Project Coordinator
Alka Nayak
Proofreader
Mario Cecere
Indexer
Rekha Nair
Graphics
Valentina D’Silva
Manu Joseph
Production Coordinator
Arvindkumar Gupta
Cover Work
Arvindkumar Gupta
Kup książkę
Poleć książkę
9
API geolokalizacji
i akcelerometru
W tym rozdziale omówione zostan nastpujce zagadnienia:
Q
Okrelanie biecego pooenia.
Q
Okrelanie prdkoci oraz kierunku.
Q
Sprawdzanie dostpnoci geolokalizacji.
Q
Reagowanie na zmiany wykryte przez akcelerometr.
Q
Wykrywanie potrzsania.
Wstp
Rodzina urzdze iOS uywa wielu wbudowanych czujników, wcznie z trójosiowym akcelero-
metrem, kompasem cyfrowym, aparatem, mikrofonem oraz odbiornikiem GPS. Ich doczenie do
urzdze otwaro przed programistami ogromne moliwoci, co doprowadzio do powstania wielu
innowacyjnych i ciekawych aplikacji, które przyczyniy si do ogromnego sukcesu App Store.
W tym rozdziale skupimy si na dwóch z najbardziej popularnych czujników — na akcelero-
metrze oraz odbiorniku GPS; obydwa s obsugiwane przez rodowisko AIR for iOS.
Akcelerometr rejestruje przyspieszenie i pozwala na wykrycie fizycznej orientacji, ruchu i wibra-
cji. Mimo e na pocztku móg si on wydawa gadetem, wraz z rozwojem platformy poja-
wiay si nowe, coraz bardziej wyrafinowane sposoby jego wykorzystania. Od gier, poprzez
zdalne sterowanie, pakiety graficzne, a po generowanie dwiku — akcelerometr sta si rod-
kiem komunikacji z uytkownikiem w wielu aplikacjach.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
264
Urzdzenia takie jak iPhone rozpoznaj równie swoj lokalizacj. Wbudowany w nie odbiornik
GPS pozwala okreli pooenie w dowolnym miejscu na wiecie. Ponadto moliwe stao si
ledzenie ruchu, okrelanie biecej prdkoci, a nawet kierunku, w jakim zwrócone jest urz-
dzenie. Oprócz okrelania pooenia geograficznego serwisy lokalizacyjne znajduj zastosowanie
w rónego rodzaju obszarach, poczwszy od fotografii, a skoczywszy na aplikacjach sucych
do komunikacji.
AIR udostpnia API, które umoliwia skorzystanie z danych zarejestrowanych przez akcelerometr
oraz odbiornik GPS. Obsug akcelerometru zapewnia klasa
flash.sensors.Accelerometer
,
natomiast klasa
flash.sensors.Geolocation
pozwala na tworzenie aplikacji wykorzystujcych
informacje o pooeniu.
Okrelanie biecego pooenia
Urzdzenia z rodziny iOS rozpoznaj swoje pooenie, co pozwala wyznaczy przyblione
wspórzdne geograficzne uytkownika. Sposób, w jaki mona to osign, zaley od sprztu
zainstalowanego na urzdzeniu. Na przykad pierwszy model iPhone’a, wszystkie modele
iPoda touch oraz iPady uzyskuj informacj o pooeniu na podstawie triangulacji sieci Wi-Fi.
Pozostae urzdzenia mog dokadniej obliczy pooenie, korzystajc z wbudowanego od-
biornika GPS lub triangulacji wie przekanikowych telefonii komórkowej.
rodowisko AIR SDK udostpnia warstw abstrakcji, która pozwala na uzyskanie informacji na
temat pooenia w sposób niezaleny od dostpnego sprztu. Oznacza to, e ten sam kod po-
zwoli na dostp do danych geograficznych zarejestrowanych przez dowolne urzdzenie iOS.
Dziki tej recepturze nauczysz si, jak okreli biece pooenie.
Przygotowanie
Na potrzeby tej receptury przygotowano wstpny projekt. W programie Flash Professional
wywietl plik recipe.fla znajdujcy si w katalogu rozdzial09\receptura1 w pakiecie doczonym
do ksiki.
Na stole montaowym znajduje si sze dynamicznych pól tekstowych. Zapenimy kade z nich
danymi o pooeniu zarejestrowanymi przez urzdzenie.
Jak to zrobi...
Wykonaj nastpujce czynnoci, aby pobra i wywietli dane geolokalizacyjne:
1. Utwórz klas dokumentu i nazwij j
Main
.
2. Zaimportuj nastpujce klasy i utwórz zmienn prywatn typu
Geolocation
:
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
265
package {
import flash.display.MovieClip;
import flash.events.GeolocationEvent;
import flash.sensors.Geolocation;
public class Main extends MovieClip {
private var geo:Geolocation;
public function Main() {
// constructor code
}
}
}
3. W konstruktorze klasy zainicjalizuj obiekt
Geolocation
i rozpocznij nasuchiwanie
na jego aktualizacje:
public function Main() {
if(Geolocation.isSupported)
{
geo = new Geolocation();
geo.setRequestedUpdateInterval(1000);
geo.addEventListener(GeolocationEvent.UPDATE, geoUpdated);
}
}
4. Nastpnie napisz funkcj obsugi zdarzenia, która bdzie odczytywa uaktualnione
dane geolokalizacyjne i wywietla je w dynamicznych polach tekstowych:
private function geoUpdated(e:GeolocationEvent):void {
latitudeField.text = e.latitude.toString();
longitudeField.text = e.longitude.toString();
altitudeField.text = e.altitude.toString();
hAccuracyField.text = e.horizontalAccuracy.toString();
vAccuracyField.text = e.verticalAccuracy.toString();
timestampField.text = e.timestamp.toString();
}
5. Zapisz klas w pliku Main.as w tym samym katalogu, w którym znajduje si projekt FLA.
Zapisz równie projekt.
6. Opublikuj i przetestuj aplikacj na urzdzeniu.
7. Po pierwszym uruchomieniu aplikacji pojawi si natywne okno dialogowe iOS
z komunikatem nastpujcej treci:
„c9 r1” chce uy informacji o Twoim pooeniu.
Stuknij przycisk OK, aby udostpni aplikacji dane o pooeniu urzdzenia.
Urzdzenia, na których zainstalowano iOS w wersji 4 lub wyszej, zapamitaj Twój wybór, natomiast
urzdzenia ze starsz wersj iOS bd wywietla ten komunikat po kadym uruchomieniu aplikacji.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
266
Na ekranie zostan wywietlone dane o pooeniu, które bd okresowo uaktualniane. Pospa-
ceruj troch z urzdzeniem i sprawd, jak bd si zmienia wywietlane dane podczas zmian
pooenia geograficznego.
Opis dziaania
W pakiecie
flash.sensors
rodowiska AIR dostpna jest klasa
Geolocation
, która pozwala odczy-
ta dane o pooeniu zarejestrowane przez urzdzenie. W tym celu naley utworzy instancj
klasy
Geolocation
i przechwyci wywoywane przez ni zdarzenie
GeolocationEvent.UPDATE
.
Dokonalimy tego w konstruktorze klasy dokumentu, korzystajc ze zmiennej prywatnej
geo
,
która przechowuje referencj do obiektu:
geo = new Geolocation();
geo.setRequestedUpdateInterval(1000);
geo.addEventListener(GeolocationEvent.UPDATE, geoUpdated);
Czstotliwo pobierania danych lokalizacyjnych mona zmieni, wywoujc metod
Geolocation.
´setRequestedUpdateInterval()
. Wida to w powyszym fragmencie kodu, w którym zdefinio-
walimy przedzia czasu midzy kolejnymi odczytami równy 1000 milisekund. Jest to jedynie
wskazówka dla urzdzenia, poniewa rzeczywisty czas midzy kolejnymi odczytami moe by
nieco krótszy lub duszy. Pominicie wywoania tej metody spowoduje uycie domylnego
przedziau czasu, który moe mie przerón warto: od kilku milisekund a do kilku sekund,
w zalenoci od moliwoci sprztowych urzdzenia.
Kade zdarzenie
UPDATE
spowoduje utworzenie obiektu
GeolocationEvent
, którego waciwoci
opisuj biece pooenie. Nasza metoda
geoUpdated()
przechwytuje ten obiekt i wywietla
wartoci kilku z tych waciwoci w dynamicznych polach tekstowych znajdujcych si na stole
montaowym.
private function geoUpdated(e:GeolocationEvent):void {
latitudeField.text = e.latitude.toString();
longitudeField.text = e.longitude.toString();
altitudeField.text = e.altitude.toString();
hAccuracyField.text = e.horizontalAccuracy.toString();
vAccuracyField.text = e.verticalAccuracy.toString();
timestampField.text = e.timestamp.toString();
}
Wywietlone zostan nastpujce dane:
Q
szeroko i dugo geograficzna,
Q
wysoko,
Q
dokadno pozioma i pionowa,
Q
znacznik czasu.
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
267
Szeroko i dugo geograficzna su do wyznaczenia Twojego pooenia geograficznego. Mona
równie uzyska informacje o wysokoci mierzonej w metrach. Podczas przemieszczania si
z urzdzeniem wartoci te bd odwieane zgodnie z nowym pooeniem.
Wywietlana jest równie dokadno danych lokalizacyjnych, która zaley od moliwoci sprz-
towych urzdzenia. Zarówno dokadno pionowa, jak i pozioma s mierzone w metrach.
Ostatnia warto, czyli znacznik czasu, jest zwizana z kadym przechwyconym obiektem
GeolocationEvent
i pozwala na okrelenie rzeczywistego czasu, jaki upywa midzy wyzwole-
niem kolejnych zdarze. Znacznik czasu okrela liczb milisekund, które upyny od czasu
ostatniego uruchomienia aplikacji.
Niektóre urzdzenia niemajce odbiornika GPS bd do rzadko wyzwala zdarzenie
UPDATE
.
Na pocztku dziaania aplikacji wyzwalane jest jedno lub dwa zdarzenia
UPDATE
, za dodatko-
we bd wyzwalane jedynie po znacznej zmianie pooenia.
Zwró te uwag na statyczn waciwo
Geolocation.isSupported
wykorzystywan w kon-
struktorze. Co prawda obecnie waciwo ta jest równa
true
na wszystkich urzdzeniach iOS,
jednak nie moemy by tego pewni w przypadku przyszych urzdze. Sprawdzanie obsugi
geolokalizacji jest zalecane równie podczas tworzenia aplikacji na róne platformy.
Wicej informacji na ten temat znajdziesz pod hasami
flash.sensors.Geolocation
i
flash.
´events.GeolocationEvent
w systemie pomocy Adobe Community Help.
Dodatkowe informacje
Ilo dostpnych informacji oraz ich dokadno zaley od moliwoci urzdzenia.
Dokadno
Dokadno danych lokalizacyjnych zaley od metod, jakimi posuguje si urzdzenie podczas
wyznaczania pooenia. Zazwyczaj urzdzenia iOS z odbiornikiem GPS pozwalaj uzyska lepszy
rezultat ni urzdzenia korzystajce z triangulacji Wi-Fi.
Przykadowo po uruchomieniu aplikacji z tego wiczenia na urzdzeniu iPhone 4, majcym
odbiornik GPS, uzyskamy dokadno poziom równ 10 metrów. Ta sama aplikacja urucho-
miona na iPodzie touch trzeciej generacji, który opiera si na sieci Wi-Fi, bdzie raportowa
poziom dokadno równ 100 metrów. Spora rónica!
Wysoko
Biec wysoko mona uzyska jedynie na urzdzeniach wyposaonych w odbiornik GPS.
Na pozostaych urzdzeniach waciwo
GeolocationEvent.verticalAccuracy
bdzie równa
-1
,
za waciwo
GeolocationEvent.altitude
bdzie równa
0
. Dokadno pionowa równa
-1
ozna-
cza, e nie mona zarejestrowa wysokoci.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
268
Powiniene by wiadom tych ogranicze i zadba o odpowiednie przygotowanie kodu apli-
kacji korzystajcej z danych lokalizacyjnych. Nigdy nie zakadaj, e kade urzdzenie bdzie
spenia wszystkie wymagania.
Jeli Twoja aplikacja wymaga obecnoci odbiornika GPS, moesz to uwzgldni w pliku de-
skryptora aplikacji. Dziki temu uytkownicy, których urzdzenia nie speniaj tego wymagania,
nie bd pobiera Twojej aplikacji z App Store.
Wicej informacji na ten temat znajdziesz w recepturze „Okrelanie wymaga sprztowych”
w rozdziale 13.
Wywietlanie pooenia na mapie
Najbardziej oczywistym zastosowaniem uzyskanych danych geolokalizacyjnych jest wywie-
tlanie pooenia na mapie. Zazwyczaj aplikacje pozyskuj dane o pooeniu geograficznym
biecej lokalizacji i wywietlaj map otoczenia. Mona to osign na kilka sposobów, jed-
nak najatwiejszym rozwizaniem wydaje si uruchomienie natywnej aplikacji Mapy i przeka-
zywanie do niej danych lokalizacyjnych. Opis tej metody znajdziesz w recepturze „Urucha-
mianie aplikacji Mapy” w rozdziale 13.
Jeli wolisz rozwizanie z uyciem ActionScript, moesz skorzysta z API UMap ActionScript
3.0, które pozwala na integracj danych kartograficznych udostpnianych przez wielu do-
stawców, takich jak Bing, Google czy Yahoo! API mona pobra po zarejestrowaniu si na stronie
www.umapper.com. Natomiast na stronie www.afcomponents.com/tutorials/umap_as3 dostpne
s tutoriale dotyczce tego API.
Obliczanie odlegoci midzy punktami
Jeli znamy wspórzdne geograficzne dwóch rónych punktów, moemy okreli odlego
midzy nimi. AIR nie udostpnia adnego API, którym mona by si posuy, jednak moesz
skorzysta z rozwizania AS3 opisanego w serwisie Adobe Developer Connection, na stronie
http://cookbooks.adobe.com/index.cfm?event=showdetails&postId=5701.
Odlego mona równie wyznaczy, korzystajc z API UMap ActionScript 3.0. Sprawd to
na stronie www.umapper.com.
Geokodowanie
Dostawcy map, na przykad Google czy Yahoo!, udostpniaj internetowe usugi geokodowa-
nia oraz odwrotnego geokodowania. Geokodowanie polega na znalezieniu szerokoci i dugo-
ci geograficznej adresu, natomiast odwrotne geokodowanie pozwala uzyska adres punktu na
podstawie pary wspórzdnych geograficznych.
Z poziomu aplikacji AIR for iOS moesz wysa zapytanie HTTP do jednego z tych serwisów.
Przykadem moe by serwis internetowy Yahoo! PlaceFinder, dostpny pod adresem http://
developer.yahoo.com/geo/placefinder.
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
269
Inn metod jest zintegrowanie API UMap ActionScript 3.0 z jednym z tych serwisów, co po-
zwoli na wczenie funkcji geokodowania bezporednio w projektach programu Flash. Wicej
informacji na ten temat znajdziesz na stronie uMapper.
Korzystanie z yroskopu
Kolejnym popularnym czujnikiem jest yroskop, który mona znale w wikszoci najnow-
szych urzdze iOS. AIR SDK nie obsuguje yroskopu bezporednio, jednak firma Adobe
przygotowaa natywne rozszerzenie rodowiska AIR 3.0, które zawiera klas ActionScript o na-
zwie
Gyroscope
.
Rozszerzenie to mona pobra z serwisu Adobe Developer Connection wraz z przykadami
uycia. Sprawd na stronie www.adobe.com/devnet/air/native-extensions-for-air/extensions/
gyroscope.html.
Zobacz te
Q
„Okrelanie prdkoci i kierunku poruszania si”.
Q
„Uruchamianie aplikacji Mapy” w rozdziale 13.
Okrelanie prdkoci
i kierunku poruszania si
Dostpno odbiornika GPS na urzdzeniu pozwala na okrelenie prdkoci oraz kierunku
poruszania si. W tej recepturze napiszemy prost aplikacj, która korzysta z klasy
Geolocation
do
uzyskania i wykorzystania tych informacji. Aplikacj wyposaymy w kompas, który bdzie
dziaa na podstawie kierunku poruszania si uytkownika.
Przygotowanie
Potrzebne nam bdzie urzdzenie iOS z odbiornikiem GPS. Mona je znale w iPhone’ach,
poczwszy od wersji 3G. Odbiorniki GPS s równie instalowane na iPadach dziaajcych w sieci
komórkowej.
W programie Flash Professional otwórz plik recipe.fla znajdujcy si w katalogu rozdzial09\
receptura2 w pakiecie doczonym do ksiki.
Na stole montaowym znajduj si trzy dynamiczne pola tekstowe. Pierwsze dwa (
speed1Field
i
speed2Field
) posu do wywietlenia biecej prdkoci odpowiednio w metrach na sekund
oraz w milach na godzin. W trzecim polu
headingField
wywietlony zostanie kierunek poru-
szania si.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
270
W dolnej czci stou montaowego umieszczono klip filmowy
compass
, który pokazuje kompas
z zaznaczonymi kierunkami pónocnym, poudniowym, wschodnim oraz zachodnim. W odpowie-
dzi na zmiany kierunku poruszania si bdziemy odwiea obrót tego klipu filmowego tak,
aby zawsze wskazywa pónoc.
Jak to zrobi...
Wykonaj ponisze czynnoci, aby odczyta prdko i kierunek poruszania si urzdzenia:
1. Utwórz klas dokumentu o nazwie
Main
.
2. Dodaj niezbdne instrukcje importu, utwórz sta oraz zmienn prywatn typu
Geolocation
:
package {
import flash.display.MovieClip;
import flash.events.GeolocationEvent;
import flash.sensors.Geolocation;
public class Main extends MovieClip {
private const CONVERSION_FACTOR:Number = 2.237;
private var geo:Geolocation;
public function Main() {
// constructor code
}
}
}
3. W konstruktorze zainicjalizuj obiekt
Geolocation
i zacznij nasuchiwa na jego
aktualizacje:
public function Main() {
if(Geolocation.isSupported)
{
geo = new Geolocation();
geo.setRequestedUpdateInterval(50);
geo.addEventListener(GeolocationEvent.UPDATE, geoUpdated);
}
}
4. Bdzie nam potrzebna funkcja nasuchujca na zdarzenie
UPDATE
wywoywane przez
obiekt
Geolocation
. W funkcji tej bdziemy uzyskiwa i wywietla biec prdko
oraz kierunek, a take uaktualnia klip filmowy
compass
, aby zawsze wskazywa kierunek
pónocny. Napisz nastpujc metod:
private function geoUpdated(e:GeolocationEvent):void {
var metersPerSecond:Number = e.speed;
var milesPerHour:uint = getMilesPerHour(metersPerSecond);
speed1Field.text = String(metersPerSecond);
speed2Field.text = String(milesPerHour);
var heading:Number = e.heading;
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
271
compass.rotation = 360 - heading;
headingField.text = String(heading);
}
5. Nastpnie dodaj pomocnicz metod suc do przeliczenia prdkoci w metrach na
sekund na prdko w milach na godzin:
private function getMilesPerHour(metersPerSecond:Number):uint
{
return metersPerSecond * CONVERSION_FACTOR;
}
6. Zapisz klas w pliku Main.as. Powró do pliku FLA i zapisz równie projekt.
7. Skompiluj projekt FLA i zainstaluj plik IPA na urzdzeniu.
8. Uruchom aplikacj. Jeli to konieczne, udostpnij aplikacji dostp do jednostki GPS.
Trzymaj urzdzenie przed sob i zacznij je obraca. Pole heading (degrees) bdzie si od-
wiea, pokazujc kierunek, w jakim zwrócone jest urzdzenie. Uaktualniony zostanie take
klip filmowy
compass
, który bdzie pokazywa, gdzie znajduje si pónoc.
Wybierz si na spacer i zabierz ze sob urzdzenie. Zacznij chodzi, a najlepiej pobiegnij.
rednio co 50 milisekund dwa górne pola tekstowe bd si odwiea, pokazujc biec
prdko zarówno w metrach na sekund, jak i w milach na godzin.
Opis dziaania
W tym wiczeniu utworzye obiekt typu
Geolocation
i nasuchiwae na wywoywane przez
niego zdarzenia
UPDATE
. Zdefiniowae interwa odwieania równy 50 milisekund. W takich
odstpach czasu bd podejmowane próby odczytania prdkoci oraz kierunku.
Zarówno prdko, jak i kierunek s odczytywane z obiektu
GeolocationEvent
, który jest wy-
woywany przez kade zdarzenie
UPDATE
. Obiekt zdarzenia jest przechwytywany i obsugiwa-
ny przez funkcj
geoUpdated()
, która odpowiada za wywietlenie prdkoci i informacji o kie-
runku uzyskanych z akcelerometru.
Bieca prdko jest mierzona w metrach na sekund i mona j uzyska poprzez sprawdzenie
waciwoci
GeolocationEvent.speed
. Nasza funkcja obsugi zdarzenia przed wywietleniem
kadej wartoci w odpowiednim polu tekstowym przelicza prdko w metrach na sekund
na mile na godzin. Odpowiada za to nastpujcy kod:
var metersPerSecond:Number = e.speed;
var milesPerHour:uint = getMilesPerHour(metersPerSecond);
speed1Field.text = String(metersPerSecond);
speed2Field.text = String(milesPerHour);
Kierunek, w którym zwrócone jest urzdzenie, a który odpowiada kierunkowi poruszania si
(w odniesieniu do pónocy), jest odczytywany z waciwoci
GeolocationEvent.heading
. Jej
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
272
warto suy do ustawienia wartoci waciwoci
rotation
klipu filmowego
compass
, która
jest wywietlana w polu tekstowym
headingField
:
var heading:Number = e.heading;
compass.rotation = 360 - heading;
headingField.text = String(heading);
Ostatnia metoda to
getMilesPerHour()
, która jest wykorzystywana w funkcji
geoUpdated()
do
przeliczenia biecej prdkoci w metrach na sekund na prdko w milach na godzin. Zwró
uwag na uycie staej
CONVERSION_FACTOR
, która zostaa zadeklarowana w klasie dokumentu:
private function getMilesPerHour(metersPerSecond:Number):uint
{
return metersPerSecond * CONVERSION_FACTOR;
}
Mimo e prdko i kierunek, odczytane na podstawie danych zarejestrowanych przez od-
biornik GPS, wystarcz dla wikszoci aplikacji, to ich dokadno moe by róna na innych
urzdzeniach. Wpyw na odczyt ma równie otoczenie; przemieszczanie si po ulicach z wy-
sokimi budynkami lub midzy drzewami moe doprowadzi do zakóce odczytu.
Wicej informacji na temat klas
flash.sensors.Geolocation
i
flash.events.GeolocationEvent
znajdziesz w systemie pomocy Adobe Community Help.
Dodatkowe informacje
Poniej opisano kilka dodatkowych zagadnie.
Sprawdzanie dostpnoci odbiornika
Biec prdko i kierunek poruszania si uytkownika mona okreli jedynie na urzdze-
niach wyposaonych w odbiornik GPS.
Mimo e aplikacj utworzon w tym wiczeniu mona uruchomi na dowolnym urzdzeniu
iOS, to w przypadku dowolnego modelu urzdze iPod touch, oryginalnego iPhone’a czy iPa-
dów obsugujcych jedynie sie Wi-Fi nie uzyskasz adnych odczytów. Warto waciwoci
GeolocationEvent.speed
bdzie wynosi
-1
, za waciwo
GeolocationEvent.heading
zwróci
warto
NaN
.
Jeli Twoja aplikacja wymaga obecnoci odbiornika GPS, naley umieci odpowiedni wpis
w pliku deskryptora aplikacji. Dziki temu uytkownicy, których urzdzenia nie speniaj tego
wymagania, nie bd pobiera Twojej aplikacji z App Store.
Wicej informacji na ten temat znajdziesz w recepturze „Okrelanie wymaga urzdzenia”
w rozdziale 13.
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
273
Symulowanie odbiornika GPS
Podczas rozwijania aplikacji cige testowanie na urzdzeniu moe by uciliwe. Moesz tego
unikn, zapisujc dane odczytane przez urzdzenie i korzystajc z nich podczas testowania.
Do dyspozycji masz szereg aplikacji, które pozwol na zapisanie danych z czujników dostp-
nych na urzdzeniu.
Jedn z takich aplikacji jest xSensor, który mona pobra za darmo z iTunes lub z App Store.
Darmowa wersja pozwala na zapisanie jedynie 50 kB danych, jednak moesz zakupi xSensor
Pro, który jest pozbawiony tego ograniczenia.
Zapobieganie przejciu w stan upienia
Wiele aplikacji utworzonych w tym rozdziale nie wymaga zbyt czstej interakcji dotykowej.
Moe to spowodowa przygaszenie ekranu lub jego zablokowanie podczas testowania. Jest to do
uciliwe i mona temu zapobiec poprzez wyczenie blokowania ekranu. Wicej informacji
na ten temat znajdziesz w recepturze „Zapobieganie przejciu ekranu w stan bezczynnoci”
w rozdziale 3.
Zobacz te
Q
„Okrelanie biecego pooenia”.
Q
„Sprawdzanie dostpnoci geolokalizacji”.
Sprawdzanie dostpnoci geolokalizacji
Aplikacje, które korzystaj z danych o pooeniu urzdzenia, musz otrzyma odpowiednie
pozwolenie uytkownika. Gdy aplikacja po raz pierwszy podejmie prób uzyskania dostpu
do danych o pooeniu, na ekranie pojawi si komunikat informujcy o koniecznoci wydania
pozwolenia. Urzdzenia, na których zainstalowano iOS w wersji 4 lub wyszej, bd pamita ten
wybór, natomiast starsze wersje iOS bd wymaga zgody na dostp podczas kadego uru-
chomienia aplikacji. Ponadto uprawnienia dostpu do informacji o lokalizacji mona zmieni
w dowolnym momencie, korzystajc z ustawie urzdzenia.
Bardzo wane jest, aby aplikacja wykrywaa dostpno danych geolokalizacyjnych i reagowaa na
zmian uprawnie w trakcie dziaania programu. Sprawdmy, jak to zrobi.
Przygotowanie
Na potrzeby tej receptury przygotowano wstpny projekt.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
274
W programie Flash Professional otwórz plik recipe.fla znajdujcy si w katalogu rozdzial09\
receptura3 w pakiecie doczonym do ksiki.
Na stole montaowym umieszczono dynamiczne pole tekstowe, którego instancja nosi nazw
output
.
Napiszemy aplikacj, która bdzie wykrywa dostpno danych geolokalizacyjnych oraz ra-
portowa wszelkie zmiany w polu tekstowym
output
.
Jak to zrobi...
Wykonaj opisane poniej czynnoci:
1. Utwórz klas dokumentu i nazwij j
Main
.
2. Dodaj nastpujce instrukcje importu i zadeklaruj zmienn prywatn typu
Geolocation
:
package {
import flash.display.MovieClip;
import flash.events.GeolocationEvent;
import flash.events.StatusEvent;
import flash.sensors.Geolocation;
public class Main extends MovieClip {
private var geo:Geolocation;
public function Main() {
// constructor code
}
}
}
3. W konstruktorze utwórz obiekt
Geolocation
i rozpocznij nasuchiwanie na wywoywane
przez niego zdarzenia
GeolocationEvent.UPDATE
i
StatusEvent.STATUS
:
public function Main() {
output.text = "Sprawdzanie pooenia...";
if(Geolocation.isSupported)
{
geo = new Geolocation();
geo.setRequestedUpdateInterval(1000);
geo.addEventListener(GeolocationEvent.UPDATE, geoUpdated);
geo.addEventListener(StatusEvent.STATUS, statusUpdated);
}
else
{
output.text = "Geolokalizacja nie jest dostpna.";
}
}
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
275
4. Nastpnie utwórz funkcj obsugi dla kadego zdarzenia:
private function geoUpdated(e:GeolocationEvent):void {
output.text = "Uzyskano pooenie.";
}
private function statusUpdated(e:StatusEvent):void {
if(e.code == "Geolocation.Muted")
{
output.text = "Odmowa dostpu do geolokalizacji.";
}
}
5. Zapisz plik klasy pod nazw
Main.as
.
6. Zapisz projekt FLA i opublikuj go. Zainstaluj plik IPA na urzdzeniu i uruchom
aplikacj.
Na ekranie pojawi si natywne okno dialogowe iOS z nastpujcym ostrzeeniem:
„c9 r3” chce uy informacji o Twoim pooeniu.
7. Stuknij przycisk Nie pozwalaj, aby uniemoliwi dostp aplikacji do danych
lokalizacyjnych.
Na ekranie pojawi si nastpujcy komunikat:
Sprawdzanie pooenia…
Zostanie on szybko zastpiony przez:
Odmowa dostpu do geolokalizacji.
8. Nastpnie uruchom aplikacj ponownie. Jeli uywasz iOS w wersji 4 lub wyszej,
poprzednio wybrane ustawienia zostan zapamitane i dostp do danych
geolokalizacyjnych zostanie zablokowany. Natomiast w przypadku wczeniejszych
wersji iOS podczas kadego uruchamiania aplikacji bdziesz musia udzieli aplikacji
odpowiedniego zezwolenia.
Aby ponownie uruchomi aplikacj w rodowisku iOS w wersji 4 lub wyszej, musisz j najpierw za-
mkn z uyciem szybkiego przecznika aplikacji. Zerknij do receptury „Eleganckie zamykanie aplikacji”
w rozdziale 3, aby sprawdzi, jak to zrobi.
Na urzdzeniach, na których zainstalowano iOS w wersji 4 lub wyszej, uprawnienia dostpu
aplikacji mona zmieni poprzez zmian ustawie urzdzenia. Zróbmy to teraz dla naszej
aplikacji.
1. Wyjd z aplikacji, naciskajc przycisk Home. Przejd do ustawie urzdzenia i wywietl
sekcj Usugi lokalizacji. Do dyspozycji bdziesz mie list aplikacji, które próboway
uzyska dostp do danych lokalizacyjnych. Przewi list w dó, a ujrzysz aplikacj
c9 r3. Stuknij przycisk obok niej, aby nada jej uprawnienia dostpu.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
276
2. Nastpnie powró do ekranu gównego i ponownie uruchom aplikacj z tego wiczenia.
Tym razem na ekranie pojawi si nastpujcy napis:
Sprawdzanie pooenia…
Zostanie on szybko zastpiony przez:
Uzyskano pooenie.
Opis dziaania
Gdy uytkownik nie zezwoli aplikacji AIR for iOS na dostp do danych lokalizacyjnych, zdarzenia
GeolocationEvent.UPDATE
wygasn, za obiekt
Geolocation
wyzwoli zdarzenie
StatusEvent.STATUS
.
Dziki temu mona wykry przywrócenie prawa dostpu do danych lokalizacyjnych poprzez
nasuchiwanie na zdarzenie
STATUS
:
geo = new Geolocation();
geo.setRequestedUpdateInterval(1000);
geo.addEventListener(GeolocationEvent.UPDATE, geoUpdated);
geo.addEventListener(StatusEvent.STATUS, statusUpdated);
Ostateczne sprawdzenie odbywa si w funkcji
statusUpdated()
:
private function statusUpdated(e:StatusEvent):void {
if(e.code == "Geolocation.Muted")
{
output.text = " Odmowa dostpu do geolokalizacji.";
}
}
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
277
W tej metodzie sprawdzamy warto waciwoci
code
obiektu
StatusEvent
. Jeli zawiera ona
acuch
Geolocation.Muted
, wiadomo, e nie mamy dostpu do danych geolokalizacyjnych.
Co prawda nie korzystalimy z tego w niniejszej recepturze, ale dostp do danych geolokali-
zacyjnych moesz te sprawdzi na podstawie waciwoci
Geolocation.muted
. Gdy nowo za-
instalowana aplikacja zostanie uruchomiona po raz pierwszy, waciwo
muted
bdzie miaa
warto
true
a do chwili, gdy uytkownik nada aplikacji prawa dostpu w natywnym oknie
dialogowym iOS.
Wicej informacji na temat
flash.events.StatusEvent
mona znale w systemie pomocy Adobe
Community Help.
Zobacz te
Q
„Okrelanie biecego pooenia”.
Reagowanie na zmiany zarejestrowane
przez akcelerometr
Akcelerometr pozwala uzyska dane okrelajce pooenie lub przesunicie urzdzenia wzgldem
trójwymiarowych osi. Zarejestrowane dane mona odczyta z uyciem kodu ActionScript.
Z tej receptury dowiesz si, jak skorzysta z moliwoci akcelerometru wbudowanego w urz-
dzenia iOS.
Przygotowanie
Na potrzeby tej receptury przygotowano wstpny projekt.
W programie Flash Professional otwórz plik recipe.fla znajdujcy si w katalogu rozdzial09\
receptura4 w pakiecie doczonym do ksiki.
Na stole montaowym umieszczono pi dynamicznych pól tekstowych. Poniej znajduje si klip
filmowy, którego instancja nosi nazw
arrow
. W kadym polu tekstowym bdziemy wywie-
tla dane odczytane z akcelerometru urzdzenia. Bdziemy te obraca klip filmowy, aby od-
zwierciedli fizyczne zmiany w pooeniu urzdzenia.
Zwró uwag na wymiary stou montaowego, które zmieniono na 480×320. W tej recepturze
bdziemy korzysta z orientacji poziomej.
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
278
Jak to zrobi...
Wykonaj ponisze czynnoci, aby wykry i zareagowa na zmiany odczytów akcelerometru:
1. Utwórz klas dokumentu i nazwij j
Main
.
2. Dodaj nastpujce dwie instrukcje importu i zadeklaruj zmienn prywatn typu
Accelerometer
:
package {
import flash.display.MovieClip;
import flash.events.AccelerometerEvent;
import flash.sensors.Accelerometer;
public class Main extends MovieClip {
private var acc:Accelerometer;
public function Main() {
// constructor code
}
}
}
3. W konstruktorze zainicjalizuj obiekt
Accelerometer
i rozpocznij nasuchiwanie na jego
aktualizacje:
public function Main() {
if(Accelerometer.isSupported)
{
acc = new Accelerometer();
acc.setRequestedUpdateInterval(50);
acc.addEventListener(AccelerometerEvent.UPDATE,
accUpdated);
}
}
4. Zakocz, tworzc funkcj obsugi zdarzenia, która bdzie pobiera i wykorzystywa
uaktualnione dane odczytane z akcelerometru:
private function accUpdated(e:AccelerometerEvent):void {
var radians:Number = Math.atan2(e.accelerationY,
e.accelerationX);
var degrees:Number = (radians * (180 / Math.PI)) - 90;
arrow.rotation = -degrees;
accXField.text = e.accelerationX.toString();
accYField.text = e.accelerationY.toString();
accZField.text = e.accelerationZ.toString();
timeField.text = e.timestamp.toString();
rotField.text = degrees.toString();
}
5. Zapisz plik klasy pod nazw
Main.as
.
6. Zapisz projekt FLA i opublikuj go. Zainstaluj aplikacj na urzdzeniu i uruchom j.
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
279
Gdy tylko czujnik ruchu urzdzenia wykryje przesunicie, zawarto pól tekstowych zostanie
odwieona. Trzymaj urzdzenie przed sob i przechylaj je zgodnie z ruchem wskazówek ze-
gara lub w przeciwnym kierunku, aby uaktualni warto obrotu klipu filmowego
arrow
, co
gwarantuje, e strzaka bdzie zawsze skierowana w gór.
Opis dziaania
W tym wiczeniu skorzystalimy z danych akcelerometru, tworzc instancj klasy
Accelerometer
i nasuchujc na wyzwalane przez ni zdarzenie
AccelerometerEvent.UPDATE
:
acc = new Accelerometer();
acc.setRequestedUpdateInterval(50);
acc.addEventListener(AccelerometerEvent.UPDATE, accUpdated);
Czstotliwo, z jak odbierane s zdarzenia
UPDATE
, mona okreli, wywoujc metod
Accelerometer.setRequestedUpdateInterval()
. Wida to w powyszym fragmencie kodu, w któ-
rym zdefiniowalimy odwieanie w odstpach 50-milisekundowych. Jest to jedynie wskazówka
dla urzdzenia, poniewa rzeczywisty czas midzy kolejnymi odczytami moe by nieco krótszy
lub nieco duszy. Pominicie wywoania tej metody spowoduje uycie domylnego odstpu
czasu, który moe mie rón warto: od kilku milisekund a do kilku sekund, w zalenoci
od moliwoci sprztowych urzdzenia.
Zdarzenie
UPDATE
to obiekt typu
AccelerometerEvent
, który ma nastpujce waciwoci:
Q
accelerationX
— przyspieszenie wzdu osi x. Gdy urzdzenie znajduje si w pozycji
pionowej, wówczas o x przebiega od lewej do prawej. Przyspieszenie jest dodatnie,
gdy urzdzenie przemieszcza si w prawo.
Q
accelerationY
— przyspieszenie wzdu osi y. Gdy urzdzenie znajduje si
w pozycji pionowej, wówczas o y przebiega z dou do góry. Przyspieszenie jest
dodatnie, gdy urzdzenie przemieszcza si w gór.
Q
accelerationZ
— przyspieszenie wzdu osi z. Przyspieszenie jest dodatnie, gdy
urzdzenie jest przesuwane w taki sposób, e jego ekran jest skierowany w gór.
Przyspieszenie jest ujemne, jeli ekran jest skierowany w dó.
Q
timestamp
— liczba milisekund, które upyny od ostatniego uruchomienia aplikacji.
Przyspieszenie jest mierzone w odniesieniu do standardowego przyspieszenia ziemskiego, bdcego
wynikiem dziaania grawitacji. Jego warto wynosi okoo 9,8 metrów na sekund.
Waciwoci te odczytalimy w funkcji
accUpdated()
, która odpowiada równie za umieszczenie
ich wartoci w dynamicznych polach tekstowych:
accXField.text = e.accelerationX.toString();
accYField.text = e.accelerationY.toString();
accZField.text = e.accelerationZ.toString();
timeField.text = e.timestamp.toString();
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
280
Dodatkowo korzystamy z waciwoci
accelerometerX
i
accelerometerY
, które su do obli-
czenia kta nachylenia urzdzenia (z ekranem zwróconym w Twoj stron). Wielko tego kta
suy do odwieenia obrotu klipu filmowego
arrow
. Odpowiada za to nastpujcy fragment kodu:
var radians:Number = Math.atan2(e.accelerationY,
e.accelerationX);
var degrees:Number = (radians * (180 / Math.PI)) - 90;
arrow.rotation = -degrees;
Znajomo kta, pod jakim nachylone zostao urzdzenie, mona wykorzysta w wielu apli-
kacjach, a w szczególnoci w niektórych grach. Nachylenie urzdzenia moe posuy do
przemieszczania bohaterów na ekranie lub do symulowania ruchu kierownicy.
Zwró uwag na uycie w konstruktorze statycznej waciwoci
Accelerometer.isSupported
.
Waciwo ta jest tylko do odczytu i pozwala na sprawdzenie dostpnoci akcelerometru.
Czujnik ten jest wbudowany we wszystkie dostpne obecnie urzdzenia iOS, jednak nie mona
przewidzie, co si stanie w przyszoci. Dlatego dobrze jest sprawdzi jego dostpno, równie
podczas rozwijania aplikacji na róne platformy.
Dodatkowe informacje
Poniej opisano kilka dodatkowych zagadnie zwizanych z akcelerometrem i wykorzystaniem
uzyskanych danych.
Orientacja i osie akcelerometru
Osie akcelerometru s skorelowane z ekranem, a nie z fizyczn orientacj samego urzdzenia.
Innymi sowy, gdy wczona jest automatyczna orientacja i gdy urzdzenie jest ustawione piono-
wo, o y ma kierunek pionowy, za o x — poziomy. Stwierdzenie to jest prawdziwe dla aplika-
cji, które s domylnie wywietlane w orientacji pionowej lub poziomej. Natomiast jeli automa-
tyczna orientacja nie jest wczona, osie akcelerometru nie zostan dopasowane do nowego
pooenia po obróceniu urzdzenia.
Okrelanie orientacji urzdzenia
Odczyty akcelerometru podlegaj wpywowi grawitacji i mona ich uywa do okrelenia bie-
cej orientacji urzdzenia. Poniej wypisano wartoci, które naley sprawdzi:
Q
accelerationX
> 0.5 — obrót o 90° w kierunku przeciwnym do ruchu wskazówek
zegara.
Q
accelerationX
< –0.5 — obrót o 90° w kierunku zgodnym z ruchem wskazówek zegara.
Q
accelerationY
> 0.5 — normalne pooenie w pionie.
Q
accelerationY
< –0.5 — pooenie do góry nogami.
Q
accelerationZ
> 0.5 — ekran skierowany w gór.
Q
accelerationZ
< –0.5 — ekran skierowany w dó.
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
281
Jest to alternatywny sposób na okrelenie orientacji, którego mona uy zamiast nasuchiwania
na obiekty
StageOrientationEvent
wyzwalane przez stó montaowy. Dodatkowo uywanie da-
nych akcelerometru pozwala okreli, czy ekran urzdzenia jest skierowany w gór, czy w dó.
Stosowanie filtra dolnoprzepustowego
Na dane z akcelerometru ma wpyw zarówno grawitacja, jak i naga zmiana ruchu. Jeli ko-
rzystasz z tych danych do wykrywania orientacji urzdzenia, powiniene wyizolowa z nich
skadow grawitacyjn poprzez zastosowanie filtra dolnoprzepustowego.
Mona to osign, uredniajc dane wraz z upywem czasu. W tym celu naley zdefiniowa
wspóczynnik filtrowania oraz trzy zmienne prywatne, które przechowuj poprzednie warto-
ci dla kadej osi:
private const FACTOR:Number = 0.1;
private var accX:Number = 0;
private var accY:Number = 0;
private var accZ:Number = 0;
Nastpnie w odpowiedzi na kade zdarzenie
AccelerometerEvent.UPDATE
stosujemy filtr dol-
noprzepustowy, który pozwoli wyodrbni dla kadej osi jedynie komponent grawitacji:
accX = (e.accelerationX * FACTOR) + (accX * (1 - FACTOR));
accY = (e.accelerationY * FACTOR) + (accY * (1 - FACTOR));
accZ = (e.accelerationZ * FACTOR) + (accZ * (1 - FACTOR));
Powyszy kod suy do obliczenia wartoci dla kadej osi na podstawie 10 procent biecej
wartoci oraz 90 procent wartoci obliczonej wczeniej. Gwarantuje to, e wartoci odczytów
bd si zmienia powoli w odpowiedzi na nage i krótkie zmiany ruchu.
Stosowanie filtra górnoprzepustowego
Wiele rodzajów aplikacji korzysta z danych akcelerometru, aby wykrywa gwatowne zmiany ru-
chu. Filtr górnoprzepustowy moe suy do wyodrbnienia skadowej nagych zmian ruchu.
Podobnie jak w przypadku implementacji filtra dolnoprzepustowego, równie teraz zdefiniujemy
wspóczynnik filtrowania oraz trzy zmienne prywatne, które bd przechowywa wczeniejsze
wartoci dla kadej osi. Nastpnie w odpowiedzi na kade zdarzenie
AccelerometerEvent.UPDATE
zastosujemy filtr:
accX = e.accelerationX - ((e.accelerationX * FACTOR) +
(accX * (1 - FACTOR)));
accY = e.accelerationY - ((e.accelerationY * FACTOR) +
(accY * (1 - FACTOR)));
accZ = e.accelerationZ - ((e.accelerationZ * FACTOR) +
(accZ * (1 - FACTOR)));
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
282
W tym przykadzie dla kadej osi obliczamy warto filtra dolnoprzepustowego, któr nastp-
nie odejmujemy od biecej wartoci osi. Dziki temu po wyeliminowaniu czynnika grawita-
cyjnego moemy reagowa na nage zmiany ruchu.
Waciwo muted
W klasie
Accelerometer
zdefiniowano statyczn waciwo
muted
, która jest tylko do odczytu.
Suy ona do sprawdzenia, czy uytkownik zezwoli aplikacji na dostp do danych zareje-
strowanych przez akcelerometr. Waciwo ta nie jest wymagana przez iOS, poniewa obecnie
nie mona odmówi adnej aplikacji dostpu do akcelerometru.
Zobacz te
Q
„Ustawianie domylnego formatu ekranu” w rozdziale 8.
Q
„Wczanie automatycznej orientacji” w rozdziale 8.
Q
„Reakcja na zmiany orientacji” w rozdziale 8.
Wykrywanie potrzsania
Akcelerometr czsto suy do wykrywania potrzsania, które stao si popularn metod inte-
rakcji w grach i aplikacjach. Przykadem s preinstalowane aplikacje iOS, w których mona
cofn zmiany poprzez potrznicie urzdzeniem.
W tej recepturze pokaemy, jak wykry potrznicie urzdzeniem na podstawie danych za-
rejestrowanych przez akcelerometr.
Przygotowanie
W programie Flash Professional otwórz plik recipe.fla znajdujcy si w katalogu rozdzial09\
receptura5 w pakiecie doczonym do ksiki.
Porodku sceny znajduje si klip filmowy o nazwie
shake
. Jego o czasu skada si z dwóch
klatek.
Napiszemy kod ActionScript, który bdzie przesuwa klip w odpowiedzi na ruch urzdzenia
wzgldem trzech osi. Gdy urzdzenie zarejestruje ruch, aplikacja przejdzie do drugiej klatki
klipu, aby poinformowa uytkownika o wykryciu potrzsania.
Stó montaowy w tym projekcie jest zorientowany poziomo.
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
283
Jak to zrobi...
Wykonaj ponisze czynnoci, aby wykry potrzsanie:
1. Utwórz klas dokumentu i nazwij j
Main
.
2. Zaimportuj klasy niezbdne do obsugi akcelerometru i utwórz nastpujce zmienne
prywatne:
package {
import flash.display.MovieClip;
import flash.events.AccelerometerEvent;
import flash.sensors.Accelerometer;
public class Main extends MovieClip {
private const THRESHOLD:Number = 0.8;
private var acc:Accelerometer;
private var prevX:Number;
private var prevY:Number;
private var prevZ:Number;
private var startX:Number;
private var startY:Number;
public function Main() {
// constructor code
}
}
}
3. Zainicjalizuj zmienne prywatne i klip filmowy
shake
. Ponadto zainicjalizuj obiekt
Accelerometer
i rozpocznij nasuchiwanie na wyzwalane przeze zdarzenia
UPDATE
:
public function Main() {
prevX = prevY = prevZ = 0;
shake.gotoAndStop(1);
startX = shake.x;
startY = shake.y;
if(Accelerometer.isSupported)
{
acc = new Accelerometer();
acc.setRequestedUpdateInterval(50);
acc.addEventListener(AccelerometerEvent.UPDATE,
accUpdated);
}
}
4. Dodaj funkcj obsugi zdarzenia
UPDATE
:
private function accUpdated(e:AccelerometerEvent):void {
var changeX:Number = prevX - e.accelerationX;
var changeY:Number = prevY - e.accelerationY;
var changeZ:Number = prevZ - e.accelerationZ;
prevX = e.accelerationX;
prevY = e.accelerationY;
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
284
prevZ = e.accelerationZ;
shake.x = startX + (changeX * 100);
shake.y = startY + (changeY * 100);
shake.z = (changeZ * 100);
if(Math.abs(changeX) > THRESHOLD ||
Math.abs(changeY) > THRESHOLD ||
Math.abs(changeZ) > THRESHOLD)
{
shake.gotoAndStop(2);
}
else
{
shake.gotoAndStop(1);
}
}
5. Zapisz plik klasy pod nazw
Main.as
.
6. Zapisz projekt FLA i opublikuj go. Przetestuj aplikacj na urzdzeniu.
Po delikatnym potrzniciu urzdzeniem na rodku ekranu wywietli si klip filmowy. Gwatow-
niejsze potrznicie spowoduje zmian jego wygldu, co bdzie oznacza wykrycie wystarcza-
jco mocnego potrznicia.
Opis dziaania
W tym przykadzie porównujemy biecy odczyt akcelerometru z poprzednim, co pozwala
stwierdzi, czy zasza wystarczajco dua zmiana.
Poprzednie dane odczytane z akcelerometru s przechowywane w zmiennych prywatnych
prevX
,
prevY
oraz
prevZ
. Wartoci te s porównywane z biecymi danymi, aby okreli zmiany dla
kadej osi:
var changeX:Number = prevX - e.accelerationX;
var changeY:Number = prevY - e.accelerationY;
var changeZ:Number = prevZ - e.accelerationZ;
prevX = e.accelerationX;
prevY = e.accelerationY;
prevZ = e.accelerationZ;
Jeli zmiana dla dowolnej osi jest wystarczajco dua, moemy przypuszcza, e uytkownik
potrzsn urzdzeniem. Ta informacja jest przekazywana uytkownikowi poprzez wywietle-
nie drugiej klatki klipu filmowego
shake
. Odpowiada za to nastpujcy fragment kodu:
if(Math.abs(changeX) > THRESHOLD ||
Math.abs(changeY) > THRESHOLD ||
Math.abs(changeZ) > THRESHOLD)
{
shake.gotoAndStop(2);
Kup książkę
Poleć książkę
Rozdzia 9. • API geolokalizacji i akcelerometru
285
}
else
{
shake.gotoAndStop(1);
}
Staa
THRESHOLD
okrela wielko zmiany wartoci dowolnej osi, potrzebnej do stwierdzenia,
e dany ruch to potrzsanie. Po obnieniu tej wartoci wystarczy delikatniejszy ruch, aby wy-
kryto potrznicie, natomiast po jej zwikszeniu uytkownik bdzie musia mocniej potrzsn
urzdzeniem.
Uaktualniamy te wspórzdne x, y i z klipu filmowego
shake
w odpowiedzi na zmiany od-
czytu akcelerometru, aby wzmocni efekt wizualny. Im gwatowniejsze potrzsanie, tym bar-
dziej odsuwamy klip od pocztkowego pooenia:
shake.x = startX + (changeX * 100);
shake.y = startY + (changeY * 100);
shake.z = (changeZ * 100);
Zmienne prywatne
startX
i
startY
s inicjalizowane w konstruktorze wartociami pocztkowych
wspórzdnych klipu filmowego
shake
.
Wikszo zada w tej recepturze jest wykonywana w funkcji obsugi zdarzenia
accUpdated()
,
która jest wywoywana po kadym przechwyceniu zdarzenia
AccelerometerEvent.UPDATE
wy-
zwalanego przez obiekt
Accelerometer
. W funkcji tej definiujemy czste odwieanie odczytów,
wywoujc metod
setRequestedUpdateInterval()
, aby zagwarantowa szybk reakcj aplika-
cji na zmiany.
Dodatkowe informacje
Przyjrzyjmy si jeszcze kilku dodatkowym opcjom, które pozwol na ulepszenie przykadowej
aplikacji.
Sprawdzanie wielu osi
Dotychczas do wykrycia potrzsania wystarczya dua zmiana wartoci dla jednej z osi. Inne
podejcie polega na oczekiwaniu na znaczc zmian dla dwóch lub trzech osi. Potrzebny kod
wyglda nastpujco:
var changeX:Number = Math.abs(e.accelerationX);
var changeY:Number = Math.abs(e.accelerationY);
var changeZ:Number = Math.abs(e.accelerationZ);
if((changeX > THRESHOLD && changeY > THRESHOLD) ||
(changeX > THRESHOLD && changeZ > THRESHOLD) ||
(changeY > THRESHOLD && changeZ > THRESHOLD))
{
// Wykryte potrzsanie.
}
Kup książkę
Poleć książkę
Tworzenie aplikacji dla iOS we Flashu. Receptury
286
Dla wielu osi mona zmniejszy nieco warto staej
THRESHOLD
, aby skompensowa koniecz-
no mocniejszego ruchu, niezbdnego do zainicjalizowania potrzsania.
Urednianie danych akcelerometru
By moe zauwaye, e nawet gdy trzymasz urzdzenie nieruchomo, klip filmowy
shake
lekko drga. Akcelerometry nie s do dokadne, dlatego ich odczyty s do zaszumione.
Szumy mona zredukowa, stosujc filtr górnoprzepustowy do kolejnych odczytów. Technika
ta zostaa opisana w recepturze „Reagowanie na zmiany zarejestrowane przez akcelerometr”.
Spróbuj poeksperymentowa ze wspóczynnikiem filtra i wartoci staej
THRESHOLD
, a uzyskasz
zadowalajce rezultaty.
Zobacz te
Q
„Reagowanie na zmiany zarejestrowane przez akcelerometr”.
Kup książkę
Poleć książkę
Skorowidz
A
Accelerometer, 279
Accelerometer.isSupported, 280
Accelerometer.setRequestedUpdateInterval(), 279
AccelerometerEvent, 279
accelerationX, 279
accelerationY, 279
accelerationZ, 279
timestamp, 279
AccelerometerEvent.UPDATE, 279, 281, 285
accUpdated(), 279, 285
ActionScript, 62, 80, 430
alokowanie pamici, 440
pula obiektów, 443
bitmapa, 192, 194
animowanie, 205
eksport, 193
wywietlanie, 193
deklarowanie typów danych, 430, 431
dwustanowy przycisk, 113
edycja, 82
funkcja blokowania ekranu, 83
Gyroscope, 269
metody wywoania zwrotnego, 446
optymalizacja kodu, 430
alokowanie pamici, 440
deklarowanie typów danych, 430, 431
jawna rezygnacja z typu danych, 432
metody wywoanie zwrotnego, 446
odmiecanie, 442
optymalizacja ptli, 434, 435
pomiar wydajnoci, 436
propagacja zdarze, 449, 452
pula obiektów, 443
sygnay AS3, 449
usuwanie nieuytków, 440
zastpowanie tablic wektorami, 437
optymalizacja ptli, 434, 435
dostp do tablic, 436
propagacja zdarze, 449, 452
zapobieganie, 453
przepyw zdarzenia, 452
tworzenie klasy dokumentu, 80
usuwanie nieuytków, 440
odmiecanie, 442
zastpowanie tablic wektorami, 437
metody zwracajce nowy wektor, 440
activate(), 86, 225
activityLevel, 308
addBitmapData(), 290
addChild(), 302
addEventListener(), 452
Adobe AIR, 58
ADT, 58, 399, 416, 419, 424
instalacja, 425
kompilacja aplikacji, 418
kompilacja w wierszu polece, 425
afterOrientation, 257
AIR Debug Launcher, 40, 73
publikacja pliku FLA, 73
AIR Development Tool, Patrz ADT
Kup książkę
Poleć książkę
Skorowidz
470
AIR for iOS, 58, 60, 110
ActionScript, 430
akcelerometr, 263
aparat fotograficzny, 287
App Store, 389
automatyczna orientacja ekranu, 253
rodzaje orientacji, 253
wczanie, 253
wczanie programistyczne, 254
czcionki urzdzenia, 210
korzyci, 211
kroje czcionek, 212
kroje pisma, 212
lista czcionek, 212, 216, 234
osadzanie w aplikacji, 214, 215
trudnoci, 211
czstotliwo wywietlania klatek, 63
dokument FLA, 60
tworzenie, 61
doczanie pliku HTML, 325
dynamiczne generowanie strony WWW, 328
dwik, 338
dugo, 361
doczanie pliku MP3, 358
gono, 366
kontrola odtwarzania, 362, 363
metadane, 361
monitorowanie postpu wczytywania, 360
odtwarzanie w tle, 361
odtwarzanie nagranego dwiku, 309
odtwarzanie osadzonego dwiku, 355
odtwarzanie pliku MP3, 358
odtwarzanie pliku od pocztku, 365
osadzanie w bibliotece, 353, 355
panoramowanie, 365
pliki PCM, 361
wznowienie odtwarzania, 365
zatrzymanie odtwarzania, 365
zapis nagranego dwiku, 313
zwikszanie czasu bufora, 360
Flash Builder, 82
format domylny ekranu, 251
geokodowanie, 268
gesty, 152
machnicie, 156
obracanie obiektu, 162
zmiana rozmiaru obiektu, 164
przewijanie obiektu, 159
wczenie obsugi, 154
Interpreter Mode, 405, 421
klawiatura wirtualna, 217
przewijanie podczas aktywacji, 223
typy, 220
uruchamianie programistyczne, 220
automatyczne przewijanie, 224
mikrofon, 287
Multi-touch, 137
natywne rozszerzenia, 412, 415
doczanie SWC, 412
Gyroscope, 412
kompilacja warunkowa, 415
tworzenie pakietu aplikacji, 417
odbiornik GPS, 263, 264
odtwarzanie nagranego dwiku, 309
konwersja czstotliwoci próbkowania, 313
okrelanie biecego pooenia, 264
dokadno danych lokalizacyjnych, 267
pobranie danych geolokalizacyjnych, 264
wywietlenie danych geolokalizacyjnych,
264, 266
zastosowanie danych geolokalizacyjnych,
268
pobieranie tekstu, 221, 222
przegldanie historii wywietlonych stron, 321
adres URL biecej strony, 324
renderowanie grafiki, 168
buforowanie bitmap, 181, 183, 185
buforowanie z uyciem macierzy, 187,
188, 189
komponowanie sceny, 174
rasteryzacja, 174
renderowanie programistyczne, 171
renderowanie w GPU, 172
Stage 3D, 181
test wydajnoci, 168, 169
tryb GPU-Blend, 174
tryby renderowania, 171, 173, 179
renderowanie strony WWW, 318
doczanie banerów reklamowych, 320
Safari, 316
uruchamianie, 316
stó montaowy, 62
budowa prostej sceny, 64
wymiary, 63
uaktualnianie pola tekstowego, 229
wczytywanie doczonego pliku HTML, 326
wczytywanie lokalnych stron WWW, 326
wejciowe kontrolki tekstowe iOS, 231
Kup książkę
Poleć książkę
Skorowidz
471
wejciowe pole tekstowe, 217
klawiatura wirtualna, 218
pobieranie tekstu, 221
tworzenie, 217
wideo, 338
blokowanie ekranu, 342
doczanie pliku FLV, 338
doczanie pliku H.264, 343
doczanie wielu plików, 342
kodowanie H.264, 348
kontrola odtwarzania pliku, 348, 352
maksymalizacja wydajnoci
odtwarzania, 342
odtwarzanie pliku H.264, 343, 344
odtwarzanie pliku FLV, 338, 339
ponowne odtwarzanie pliku, 352
punkty sygnalizacji, 341
wstrzymanie odtwarzania pliku, 353
wyznaczanie rozmiarów klipu, 347
wznowienie odtwarzania pliku, 352
wywietlanie stron WWW, 316
zmiany orientacji ekranu, 255
blokowanie, 261
reakcja, 258
wykrywanie, 256
zrzut ekranu strony WWW, 334
air.net.SocketMonitor, 371
air.net.URLMonitor, 371
akcelerometr, 237, 255, 263, 277
orientacja urzdzenia, 280
osie akcelerometru, 280
sprawdzanie wielu osi, 285
stosowanie filtra dolnoprzepustowego, 281
stosowanie filtra górnoprzepustowego, 281
urednianie danych, 286
wykrywanie potrzsania, 282, 283
zmiana odczytów, 278
aparat fotograficzny, 287
Exif, 295
odczyt obrazu z rolki, 291
uycie domylnej aplikacji, 296
nagrywanie filmu, 299
obsuga bdów, 298
odczyt zarejestrowanych danych, 299
wywietlanie fotografii, 298
zapisywanie w rolce aparatu, 299
wybór kamery, 303
zapisywanie obrazu w rolce, 288
nieudany zapis, 290
aplikacje iOS, 22
ActionScript, 80
funkcja blokowania ekranu, 83
tworzenie klasy dokumentu, 80
AIR Debug Launcher, 40
AIR for iOS, 58, 110
App Store Review Guidelines, 28
automatyczna orientacja ekranu, 253
rodzaje orientacji, 253
wczanie, 253
wczanie programistyczne, 254
bitmapa, 170
certyfikat P12, 38
certyfikat programisty, 32
debugowanie, 104
doczanie ikon, 99
rodzaje ikon, 100
doczanie pliku HTML, 325
doczanie pliku SWC, 368
dopasowanie aplikacji do rozdzielczoci, 247
dostp do wasnych katalogów, 374
stae dostpu, 375
tworzenie katalogów, 376
dynamiczne generowanie strony WWW, 328
Flash Builder, 82
Flash Professional, 22
debugowanie, 104
format domylny ekranu, 251
funkcja blokowania ekranu, 82
grafika wektorowa, 170
identyfikator aplikacji, 47
identyfikator pakunku, 48
identyfikator wartoci pocztkowej
pakunku, 48
okrelony identyfikator, 47
wieloznaczny identyfikator, 47
instalacja aplikacji, 75
iTunes, 75
Interpreter Mode, 405
iOS Developer Program, 22
iOS Provisioning Portal, 29
rejestracja, 23
iOS Human Interface Guidelines, 28
iOS Provisioning Portal, 29
programistyczny profil informacyjny, 50
iPhone Conguration Utility, 78
klasa dokumentu, 81
kompilacja ahead-of-time, 75
kompilator LLVM, 75
Kup książkę
Poleć książkę
Skorowidz
472
aplikacje iOS
konwersja aplikacji Flash, 110
kompilacja w wierszu polece dla Mac OS X,
406
kompilacja w wierszu polece dla Microsoft
Windows, 400
Multi-touch, 138
obraz rozruchowy, 96, 241
doczanie, 96
iPad, 97
orientacja, 97
pasek statusu, 98
wywietlacz Retina, 97
obsuga wszystkich rozdzielczoci, 247
odczytywanie plików, 381, 383
formaty danych, 383
monitorowanie postpu, 384
odczyt synchroniczny, 384
usuwanie plików, 384
okrelanie wymaga sprztowych, 395
ptla uaktualnie, 92
plik deskryptora aplikacji, 101, 372
Information Property List, 103
okrelanie wymaga sprztowych, 395
UIStatusBarStyle, 103
ustawianie staego poczenia Wi-Fi, 372,
374
pliki SWC, 132
statyczne doczanie, 133
pliki SWF, 136
porzdkowanie, 89
przegldanie historii wywietlonych stron, 321
adres URL biecej strony, 324
rejestracja urzdzenia testujcego, 43
edycja nazw urzdze, 46
limit urzdze, 46
UDID, 43
renderowanie strony WWW, 318
doczanie banerów reklamowych, 320
sprawdzanie poczenia, 370
interwa odpytywania, 372
monitorowanie gniazd, 371
symulowanie odbiornika GPS, 273
TestFlight, 78
tryby dostpu do plików, 384
uruchamianie aplikacji Mapy, 391
lista obsugiwanych parametrów, 393
wywietlanie aktualnego pooenia, 394
wyznaczanie trasy, 394
uruchamianie aplikacji systemowych, 385
URI mailto, 385, 386
URI sms, 388
URI tel, 387
uruchamianie YouTube, 388
uruchamianie APP Store, 389
uzyskiwanie URL, 389
wywietlanie strony, 390
uruchamianie Safari, 316
wczytywanie doczonego pliku HTML, 326
wczytywanie lokalnych stron WWW, 326
wielozadaniowo, 85
wsparcie dla wywietlacza Retina, 242
wybór docelowych urzdze, 238, 239
wykrywanie biecego urzdzenia, 239
wykrywanie urzdzenia z wywietlaczem
Retina, 242
wycznik aplikacji, 89, 117
zamykanie aplikacji, 87
zapisywanie plików, 377
cigo zapisu, 381
formaty danych, 380
monitorowanie postpu, 380
zapis synchroniczny, 380
zapisywanie stanu aplikacji, 115
zmiany orientacji ekranu, 255
blokowanie, 261
reakcja, 258
wykrywanie, 256
zrzut ekranu strony WWW, 334
App Development Overview, 31
App Store, 22
UDID Sender, 46
uruchamianie, 389
App Store Review Guidelines, 28
appendText(), 230
Array, 436, 438
attachCamera(), 302
autoCapitalize, 235
autoCorrect, 235
B
beforeOrientation, 257
Bitmap.bitmapData, 199
bitmapa, 168, 170, 192
animowanie, 205
sekwencje animacji, 207
tworzenie animacji, 205
Kup książkę
Poleć książkę
Skorowidz
473
buforowanie, 181
buforowanie pól tekstowych, 230
GPU-Blend, 186
GPU-Vector, 186
obiekty potomne, 185
potencjalne puapki, 185
przeksztacenia, 185
wzrost wydajnoci, 183
buforowanie z uyciem macierzy, 187
GPU-Blend, 191
korzyci, 189
waciwoci 3D, 191
wybór macierzy, 190
wzrost wydajnoci, 188
doczenie do aplikacji, 197
dostp do danych, 199
ograniczenia wymiarów, 195
porównanie wydajnoci, 204
porównanie wymaga pamici, 204
przechowywanie w GPU, 195
rozmiar obrazów, 195
tryb GPU, 195
usuwanie danych, 199
wczytanie, 197
wczytywanie na danie, 196, 198
wywietlanie, 193, 197
zastpowanie pól tekstowych, 230
zestaw sprite’ów, 200
Stage 3D, 208
tworzenie, 204
BitmapData, 206, 290
BitmapData.copyPixels(), 204
BitmapData.dispose(), 199
BitmapData.draw(), 290
bitmapLoaded(), 198, 205
browseForImage(), 294
Bubble, 90
Button, 112
Button.as, 113
buttonPressed(), 114, 116
ByteArray, 304
bytesAvailable, 383
bytesLoaded, 384
bytesPending, 380
bytesTotal, 380, 384
C
cacheAsBitmap, 183, 230
cacheAsBitmapMatrix, 188, 190, 230
Camera.getCamera(), 302, 303
CameraRoll, 290
CameraRoll.addBitmapData(), 290
CameraRoll.supportsAddBitmapData, 290
CameraRoll.supportsBrowseForImage, 294
CameraUI, 347
Capabilities.screenResolutionX, 240, 249
Capabilities.screenResolutionY, 240, 249
captured(), 297, 299
certyfikat dystrybucyjny, 38
certyfikat P12, 22, 38
system MAC OS, 41
system Microsoft Windows, 39
certyfikat programisty, 32
klucz prywatny, 33
klucz publiczny, 33
wniosek o podpisanie, 32
system MAC OS X, 34
system Microsoft Windows, 32
close(), 332, 353, 379
connect(), 340, 345
CPU, 171, 174, 175
komponowanie sceny, 174
podsumowanie, 179
rasteryzacja, 174
renderowanie wektorów, 180
createDirectory(), 376
createHtml(), 332
createMonkey(), 202, 203
czcionki iOS, 210
korzyci uycia, 211
kroje czcionek, 212
kroje pisma, 212
lista czcionek, 212, 216, 234
Fast Fonts, 212
Fonts, 212
osadzanie w aplikacji, 214, 215
trudnoci, 211
D
dataCaptured(), 300
debugowanie, 104
etapy, 104
zdalny debuger, 105
próby poczenia, 107
deleteDirectory(), 376
deleteDirectoryAsync(), 376
deleteFile(), 333
deleteFileAsync(), 333, 384
describe(), 444
Kup książkę
Poleć książkę
Skorowidz
474
deviceOrientation, 258
Dice, 448
Dice.ROLLED, 448
DisplayObject, 183, 188, 341
cacheAsBitmap, 183
cacheAsBitmapMatrix, 188
dispose(), 203, 319
documentsDirectory, 332
dokument FLA, 60
draw(), 291
drawViewPortToBitmapData(), 335
dystrybucyjny profil informacyjny, 53
dwik w iOS, 338
kontrola odtwarzania, 362, 363
gono, 365
kontrola globalna, 366
odtwarzanie pliku od pocztku, 365
odtwarzanie pojedynczego dwiku, 364
panoramowanie, 365
wznowienie odtwarzania, 365
zatrzymanie odtwarzania, 365
odtwarzanie osadzonego dwiku, 355, 356
miejsce rozpoczcia odtwarzania, 357
odtwarzanie w ptli, 357
osadzanie w bibliotece, 353, 355
pliki MP3, 358
dugo dwiku, 361
doczanie pliku do aplikacji, 358
metadane, 361
monitorowanie wczytywania, 360
odtwarzanie dwiku w tle, 361
odtwarzanie pliku, 358
zwikszanie czasu bufora, 360
E
EncryptedLocalStore, 381
ENTER_FRAME, 92, 95, 229
enterFrame(), 92, 93
ErrorEvent.ERROR, 291, 320, 326
Event, 85, 88
Event.CANCEL, 294
Event.CLOSE, 379
Event.COMPLETE, 198, 290, 295, 320, 360,
376, 383
Event.DEACTIVATE, 86, 87
Event.ENTER_FRAME, 89, 92, 205
Event.EXITING, 89
Event.ID3, 361
Event.SOUND_COMPLETE, 365
EXITING, 88
exiting(), 88, 94
F
Fast Fonts, 212
File, 331, 376
File deleteFile(), 384
File.resolvePath(), 378
fileLoaded(), 382
FileMode.APPEND, 384
FileMode.UPDATE, 384
fileSaved(), 382
FileStream, 331, 380
FileSystem.close(), 383
fl.motion.easing.Sine, 158
fl.transitions.Tween, 158
Flash Builder, 82
Flash Professional, 22, 38, 58
Adobe AIR, 58
AIR Development Tool, 58
AIR for iOS, 58, 61
dokument FLA, 60
stó montaowy, 62
ustawienia rodowiska, 67, 71
AIR SDK, 58
instalacja, 59
nadpisywanie, 60
aktualizacja, 59
Biblioteka, 120
Buforuj jako bitmap, 182
Buforuj jako map bitow, 64, 66, 182
certyfikat P12, 38
Czstotliwo próbkowania, 354
debugowanie, 104
etapy, 104
zdalny debuger, 105
doczanie ikon, 99
rodzaje ikon, 100
Eksportuj dla ActionScript, 90
Eksportuj jako bitmap, 124
Eksportuj PNG, 122
gesty, 152
machnicie, 156
obracanie obiektu, 162
zmiana rozmiaru obiektu, 164
przewijanie obiektu, 159
wczenie obsugi, 154
Kup książkę
Poleć książkę
Skorowidz
475
grafika rastrowa, 168
grafika wektorowa, 168
identyfikator aplikacji, 72
Interpreter Mode, 75
iPhone OS, 61
kompilacja projektu FLA, 73
Interpreter Mode, 75
konwersja na platform iOS, 110
animacje na osi czasu, 124
doczanie klasy do przycisku, 112
dostosowanie do rozmiarów ekranu, 124
dwustanowy przycisk, 113
przeksztacenie grafiki wektorowej na
rastrow, 121
przystosowanie do interfejsu
dotykowego, 110
spaszczenie listy wywietlania, 119
tworzenie klipu filmowego przycisku, 111
wstpny rendering efektów graficznych, 125
Konwertuj na bitmap, 124
maskowanie obiektów, 129
usunicie warstwy maski, 130
Multi-touch, 138
narzdzia, 128, 210
Usu punkt kontrolny (-), 128
Zaznaczenie czstkowe (A), 128
Tekst (T), 210
optymalizacja ksztatów wektorowych, 128
Osadzanie czcionek, 214, 215
PFI, 58
ptla uaktualnie, 92
pliki SWC, 132
publikowanie, 133
tworzenie, 133
pliki SWF, 132
pobranie danych wideo z aparatu, 301
Profil udostpniania, 71
przeksztacenie w bitmap, 121
publikowanie aplikacji iOS, 40
certyfikat P12, 40
renderowanie grafiki, 168
Automatycznie, 176
buforowanie bitmap, 181, 183, 185
buforowanie z uyciem macierzy, 187,
188, 189
GPU-Vector, 180
komponowanie sceny, 174
obnienie jakoci, 170
rasteryzacja, 174
renderowanie w GPU, 172
Stage 3D, 181
test wydajnoci, 168, 169
tryb GPU-Blend, 174
tryb GPU-Vector, 176, 179
tryby renderowania, 173, 179
skalowanie bitmap, 126
spaszczenie listy wywietlania, 119
rozgrupowanie instancji, 120
Text Layout Framework, 213
Ustawienia publikowania, 133, 216
Ustawienia rodowiska AIR for iOS, 67, 95, 99
Doczone pliki, 70
Nazwa aplikacji, 68
Numer wersji, 68
Orientacja, 68
Peny ekran, 69
Renderowanie, 68, 177
Urzdzenie, 68
Ustawienia telefonu iPhone, 172, 173
Utwórz nowy symbol, 111
Uyj czcionek urzdzenia, 211
Wdroenie, 71
typy wdroenia, 72
Waciwoci dwiku, 354
Waciwoci symbolu, 90
Zapamitaj haso dla tej sesji, 71
zmiana rozmiarów bitmap, 126
flash.filesystem.File, 378
flash.display.Bitmap, 199, 204, 336
flash.display.BitmapData, 194, 199, 204, 336
flash.display.DisplayObject, 341
flash.display.Loader, 199, 203
flash.display.MovieClip, 92
flash.display.Sprite, 92, 147, 149
flash.display.StageAlign, 240, 244, 249, 255
flash.display.StageOrientation, 257, 261
flash.display.StageQuality, 128
flash.display.StageScaleMode, 240, 244, 249, 254
flash.events.ErrorEvent.ERROR, 298
flash.events.FocusEvent, 223
flash.events.GeolocationEvent, 267, 272
flash.events.GesturePhase, 161
flash.events.LocationChangeEvent, 324
flash.events.MouseEvents, 141, 155
flash.events.NetStatusEvent, 353
flash.events.SampleDataEvent, 308
flash.events.SoftKeyboardEvent, 227
Kup książkę
Poleć książkę
Skorowidz
476
flash.events.StageVideoEvent, 347
flash.events.StatusEvent, 277
flash.events.TouchEvent, 144
flash.events.TransformGestureEvent, 160
flash.filesystem.File, 327, 332, 333, 375, 376, 379
flash.filesystem.FileMode, 379
flash.filesystem.FileStream, 333, 378, 379
flash.geom.Matrix, 189, 190
flash.media.Camera, 301, 302
flash.media.CameraRoll, 291, 294, 295
flash.media.CameraUI, 298
flash.media.MediaPromise, 295, 298
flash.media.MediaType, 298
flash.media.Microphone, 307, 308
flash.media.Sound, 312, 356, 359, 365
flash.media.SoundChannel, 312, 365
flash.media.SoundLoaderContext, 360
flash.media.SoundMixer, 366
flash.media.SoundTransform, 365
flash.media.StageVideo, 346
flash.media.StageWebView, 319, 324, 327
flash.media.Video, 302, 341
flash.net.navigateToURL, 317
flash.net.NetConnection, 341, 346
flash.net.NetStream, 341, 346
flash.net.registerClassAlias(), 117
flash.net.URLRequest, 317
flash.sampler.getSize(), 445, 446
flash.sensors.Accelerometer, 264
flash.sensors.Geolocation, 264, 267, 272
flash.system.Capabilities, 240, 244, 249
flash.text.Font, 213
flash.text.Font.enumarateFonts(), 234
flash.text.ReturnKeyLabel, 234
flash.text.SoftKeyboardType, 234
flash.text.TextField, 223
flash.ui.Multitouch, 139, 154
flash.ui.MultitouchInputMode, 139, 154
flash.utils.ByteArray, 308, 333
flash.utils.getTimer(), 436, 437
flush(), 118
FOCUS_IN, 223
FOCUS_OUT, 222
FocusEvent, 222
focusLost(), 222
Font.enumerateFonts(), 213
fontFamily, 233
Fonts, 212
funkcje
accUpdated(), 279, 285
activate(), 225
bitmapLoaded(), 198
buttonPressed(), 114, 116
enterFrame(), 92
fileLoaded(), 382
fileSaved(), 382
flash.net.registerClassAlias(), 117
flash.sampler.getSize(), 445
flash.utils.getTimer(), 436
focusLost(), 222
geoUpdated(), 271, 272
getLocal(), 117
getSize(), 445
initSharedObject(), 117
navigateToURL(), 316, 317, 386, 388, 391, 392
orientationChanged(), 257
orientationChanging(), 257
pan(), 160
photoLoaded(), 295
photoSelected(), 293
playSampleData(), 311
pressed(), 297
SampleData(), 307
startTouchDrag(), 147
statusUpdated(), 276
stopTouchDrag(), 147
swipe(), 158
touchBegin(), 147
touchMove(), 152
update(), 229
zoom(), 165
G
geokodowanie, 268
Geolocation, 266, 394
Geolocation.isSupported, 267
Geolocation.Muted, 277
Geolocation.setRequestedUpdateInterval(), 266
GeolocationEvent, 271
GeolocationEvent.altitude, 267
GeolocationEvent.heading, 271
GeolocationEvent.speed, 271
GeolocationEvent.UPDATE, 266, 276
GeolocationEvent.verticalAccuracy, 267
geoUpdated(), 266, 271, 272
Kup książkę
Poleć książkę
Skorowidz
477
GESTURE_PAN, 160
GesturePhase.BEGIN, 161
GesturePhase.END, 161
GesturePhase.UPDATE, 161
GESTURE_SWIPE, 158
GestureEvent.GESTURE_TWO_FINGER_TAP,
155
gesty, 152
iOS Human Interface Guidelines, 154
machnicie, 156
w pionie, 158
obracanie obiektu, 162
zmiana rozmiaru obiektu, 164
przewijanie obiektu, 159
fazy gestu, 161
przewijanie jednym palcem, 162
wczenie obsugi, 154
Multitouch.inputMode, 154
zdarzenia myszy, 155
zdarzenia zwizane z gestami, 155
getCamera(), 301
getLocal(), 117
getMilesPerHour(), 272
getSize(), 445
getTimer(), 437
GPU-Blend, 171, 174, 175, 179
buforowanie bitmap, 186
buforowanie z uyciem macierzy, 192
komponowanie sceny, 174
podsumowanie, 179
ponowna rasteryzacja, 175
przechowywanie bitmap, 195
rasteryzacja, 174
renderowanie wektorów, 180
GPU-Vector, 176, 179
buforowanie bitmap, 186
komponowanie sceny, 179
podsumowanie, 179
przechowywanie bitmap, 195
rasteryzacja, 179
renderowanie wektorów, 180
grafika rastrowa, Patrz bitmapa
grafika wektorowa, 168, 170
H
historyBack(), 323
historyForward(), 323
I
identyfikator aplikacji, 47, 48, 72
edycja, 50
identyfikator pakunku, 48
dystrybucja aplikacji, 49
konwencje nazewnictwa, 49
okrelony identyfikator, 47
wieloznaczny identyfikator, 47
tworzenie, 47
<infoAdditions>, 102, 374
Information Property List, 103
initSharedObject(), 117
InteractiveObject, 140, 144, 157
Interpreter Mode, 405, 421
kompilacja aplikacji, 423
wczanie, 422
IOErrorEvent.IO_ERROR, 199, 360, 379
iOS App Workflow Guide, 31, 37
iOS Dev Center, 27, 28
iOS Human Interface Guidelines, 139
iOS Developer Program, 22
Enroll Now, 23
iOS Dev Center, 27, 28
App Store Review Guidelines, 28
iOS Human Interface Guidelines, 28
iOS Provisioning Portal, 27, 29
Apple Developer Technical Support, 31
Member Center, 31
Resources, 30
praca zespoowa, 28
rejestracja, 23
rejestracja jako programista Apple, 24
iOS Human Interface Guidelines, 28, 101, 139, 154
iOS Provisioning Portal, 27, 29
administrator zespou, 38
agent zespou, 38
Apple Developer Technical Support, 31
certyfikat programisty, 32, 35
Certificates, 35
Development, 35
Expiration Date, 37
Request Certificate, 35
czonek zespou, 38
Member Center, 31
programistyczny profil informacyjny, 50
Resources, 30
App Development Overview, 31
iOS App Workflow Guide, 31, 37
Kup książkę
Poleć książkę
Skorowidz
478
<iPhone>, 102, 374
iPhone Conguration Utility, 78
isBuffering, 360
isHistoryBackEnabled, 323
isHistoryForwardEnabled, 323
isPrimaryTouchPoint, 145
iTunes, 75
K
KeyboardEvent.KEY_DOWN, 235
KeyboardEvent.KEY_UP, 235
klasy, 80, 81
Accelerometer, 279
air.net.SocketMonitor, 371
Array, 436, 438
Bubble, 90
Button, 112
Button.as, 113
ByteArray, 304
CameraRoll, 290
CameraUI, 347
Dice, 448
DisplayObject, 183, 188, 341
EncryptedLocalStore, 381
Event, 85, 88
File, 331, 376
FileStream, 331, 380
fl.motion.easing.Sine, 158
fl.transitions.Tween, 158
flash.display.BitmapData, 194
flash.display.DisplayObject, 341
flash.display.Sprite, 147, 149
flash.display.StageAlign, 255
flash.display.StageOrientation, 257, 261
flash.display.StageQuality, 128
flash.display.StageScaleMode, 254
flash.events.GesturePhase, 161
flash.events.MouseEvents, 141, 155
flash.events.TouchEvent, 144
flash.filesystem.File, 327, 332, 375, 378
flash.filesystem.FileStream, 378
flash.geom.Matrix, 189
flash.media.Camera, 301
flash.media.CameraRoll, 294
flash.media.CameraUI, 298
flash.media.MediaType, 298
flash.media.Microphone, 307
flash.media.Sound, 359
flash.media.SoundMixer, 366
flash.media.Video, 302
flash.sensors.Accelerometer, 264
flash.sensors.Geolocation, 264
flash.text.ReturnKeyLabel, 234
flash.text.SoftKeyboardType, 234
Font, 213
Geolocation, 266, 394
konstruktor klasy, 81
Loader, 198
Main, 114, 144
Main.as, 115, 171
MediaPromise, 295
Microphone, 304
MonkeyBitmapData, 194
MovieClip, 92
NativeApplication, 84, 86
nazwa klasy, 81
NetConnection, 303, 340, 345
NetStream, 303, 340, 345, 352
pisanie wasnej klasy, 90
ProgressEvent, 361
Rectangle, 445
SharedObject, 115, 116, 117, 381
SoftKeyboardEvent, 227
Sound, 311, 357
SoundChannel, 311
SoundEffect, 355
Sprite, 92
StageText, 231, 233
StageVideo, 345
StageWebView, 318, 319
TextField, 230
tworzenie, 80
URLMonitor, 368, 371
Vector, 438, 439, 440
Video, 340
klawiatura wirtualna, 217
needsSoftKeyboard, 220
przewijanie podczas aktywacji, 223
rodzaje, 234
wybór rodzaju, 234
typy, 220
uruchamianie automatyczne, 223
uruchamianie programistyczne, 220
wejciowe pole tekstowe, 218
wczenia automatycznego przewijania, 224
kompilacja ahead-of-time, 75
kompilator LLVM, 75
Kup książkę
Poleć książkę
Skorowidz
479
kompilator Mac OS X, 406
doczanie innych plików ródowych, 409
opcje debugowania, 410
opis bloków polecenia, 407
tworzenie skryptu powoki, 410
typy wdroenia aplikacji, 408
kompilator Microsoft Windows, 400
doczanie innych plików ródowych, 404
opcje debugowania, 404
opis bloków polecenia, 401
tworzenie pliku wsadowego, 405
typy wdroenia aplikacji, 402
L
lash.display.Bitmap, 194
launch(), 298, 299
load(), 198
Loader, 198
Loader.load(), 295
Loader.loadFilePromise(), 295
loadFilePromise(), 295, 299
loadHtml(), 333
loadPCMFromByteArray(), 361
loadString(), 333
loadURL(), 319, 323
localX, 145
localY, 145
LOCATION_CHANGING, 324
locationChanged(), 323
LocationChangeEvent, 324
LocationChangeEvent.LOCATION_CHANGE,
324
M
Main, 81, 114, 144
Main.as, 115, 171
MediaEvent, 294
MediaEvent.COMPLETE, 298
MediaEvent.SELECT, 294
MediaPromise, 295
metody
Accelerometer.setRequestedUpdateInterval(),
279
activate(), 86
addBitmapData(), 290
addChild(), 302
addEventListener(), 452
appendText(), 230
attachCamera(), 302
BitmapData.copyPixels(), 204
BitmapData.dispose(), 199
BitmapData.draw(), 290
bitmapLoaded(), 205
browseForImage(), 294
Camera.getCamera(), 302, 303
CameraRoll.addBitmapData(), 290
captured(), 297
close(), 332, 353, 379
connect(), 340, 345
createDirectory(), 376
createHtml(), 332
createMonkey(), 202, 203
dataCaptured(), 300
deleteDirectory(), 376
deleteDirectoryAsync(), 376
deleteFile(), 333
deleteFileAsync(), 333
describe(), 444
dispose(), 203, 319
draw(), 291
drawViewPortToBitmapData(), 335
enterFrame(), 93
exiting(), 88, 94
File.resolvePath(), 378
FileSystem.close(), 383
flush(), 118
Font.enumerateFonts(), 213
geoUpdated(), 266
getCamera(), 301
getLocal(), 117
getMilesPerHour(), 272
getTimer(), 437
historyBack(), 323
historyForward(), 323
initSharedObject(), 117
launch(), 298, 299
load(), 198
Loader.load(), 295
Loader.loadFilePromise(), 295
loadFilePromise(), 295, 299
loadHtml(), 333
loadPCMFromByteArray(), 361
loadString(), 333
loadURL(), 319, 323
locationChanged(), 323
Microphone.getMicrophone(), 307
Kup książkę
Poleć książkę
Skorowidz
480
metody
NetStream.play(), 341, 347
open(), 299, 332, 380, 384
openAsync(), 379, 383
pause(), 352
play(), 311, 346, 357, 360, 365
preventDefault(), 261, 324
readFloat(), 312
readUTFBytes(), 383
reload(), 324
removeEventListener(), 452
requestSoftKeyboard(), 220
resolvePath(), 327, 376
resume(), 352
roll(), 447, 448
savePreferences(), 380
saveSharedObject(), 117
seek(), 352
setMode(), 302
setRequestedUpdateInterval(), 285
setSilenceLevel(), 308
setupControls(), 350
sliceSpriteSheet(), 202, 203
Sound.play(), 364
StageWebView.loadURL(), 326
start(), 371
startRecording(), 307, 308
startTouchDrag(), 147, 148
stop(), 324
stopPropagation(), 453
stopRecording(), 308
stopTouchDrag(), 147
System.pauseForGCIfCollectionImminent(),
442
touchEnd(), 144
update(), 93, 95, 142
URLMonitor.stop(), 371
writeBytes(), 333
writeFile(), 332
writeFloat(), 312
writePng(), 332
writeUTFBytes(), 332, 333, 379
Microphone, 304
Microphone.getMicrophone(), 307
mikrofon, 287
czstotliwo próbkowania dwiku, 307
konwersja czstotliwoci próbkowania, 313
nagrywanie dwiku, 304
natenie dwiku, 308
odtwarzanie nagranego dwiku, 309
udostpnianie strumienia dwiku, 309
wspóczynnik wzmocnienia, 307
MonkeyBitmapData, 194
MOUSE_UP, 115, 450
MouseEvent.MOUSE_UP, 114
MovieClip, 92, 140, 144, 157
Multi-touch, 137, 141
globalne wspórzdne dotknicia, 145
identyfikator punktu kontaktu, 145
iOS Human Interface Guidelines, 139
lokalne wspórzdne dotknicia, 145
Multitouch.inputMode, 139, 154
Multitouch.maxTouchPoints, 140
Multitouch.supportsTouchEvents, 139
MultitouchInputMode.NONE, 141
MultitouchInputMode.TOUCH_POINT,
139, 154
obsuga wielu zdarze dotyku, 143
pierwszy punkt kontaktu, 145
przeciganie wywietlonych obiektów, 146
punkt kontaktu, 140
cel dotknicia, 140
ledzenie ruchu, 150
wczenie trybu wejciowego, 138
flash.ui.Multitouch, 139
flash.ui.MultitouchInputMode, 139
zdarzenia dotyku, 140
zdarzenie myszy, 141
zsunicie palca, 144
Multitouch.supportedGestures, 155
Multitouch.supportsGestureEvents, 154
MultitouchInputMode.GESTURE, 155
MVC, 249
PureMVC, 250
Robotlegs, 250
N
NativeApplication, 84, 86
Event.DEACTIVATE, 86, 87
EXITING, 88
systemIdleMode, 84
SystemIdleMode.KEEP_AWAKE, 84
NativeApplication.systemIdleMode, 342
nativePath, 376
navigateToURL(), 316, 317, 386, 388, 391, 392
needsSoftKeyboard, 220
Kup książkę
Poleć książkę
Skorowidz
481
NET_STATUS, 351
NetConnection, 303, 340, 345
NetStatusEvent.NET_STATUS, 342, 347
NetStream, 303, 340, 345, 352
NetStream.play(), 341, 347
O
OAuth, 318, 321
odbiornik GPS, 263, 264
bieca wysoko, 267
dokadno danych lokalizacyjnych, 267
prdko i kierunek poruszania si, 270
onCuePoint, 346
onMetaData, 341, 346
onXMPData, 341, 346
open(), 299, 332, 380, 384
openAsync(), 379, 383
OutputProgressEvent.OUTPUT_PROGRESS, 380
P
Packager for iPhone, Patrz PFI
pan(), 160
pause(), 352
PFI, 58, 424
photoLoaded(), 293, 295
photoSelected(), 293, 294
play(), 311, 346, 357, 360, 365
playSampleData(), 311
plik deskryptora aplikacji, 101, 372
deklarowanie rozszerzenia, 417
edycja, 102
Information Property List, 103
okrelenie wymaga sprztowych, 395
otwieranie, 102
UIStatusBarStyle, 103
ustawianie staego poczenia Wi-Fi, 372, 374
pliki SWC, 132
publikowanie, 133
doczanie, 133, 368, 412
tworzenie, 133
pliki SWF, 132, 136
osadzanie czcionek, 215
pollInterval, 372
pressed(), 289, 297, 298
preventDefault(), 261, 324
profil informacyjny Ad Hoc, 53
programistyczny profil informacyjny, 22, 50
edycja, 52
rejestracja na urzdzeniu, 53
tworzenie, 51
usuwanie z urzdzenia, 54
ProgressEvent, 361
ProgressEvent.PROGRESS, 360, 384
R
readFloat(), 312
readUTFBytes(), 383
Rectangle, 445
reload(), 324
removeEventListener(), 452
renderowanie, 168
Automatycznie, 176
buforowanie bitmap, 181, 183, 185
buforowanie z uyciem macierzy, 187, 188,
189
GPU-Vector, 180
komponowanie sceny, 174
obnienie jakoci, 170
rasteryzacja, 174
renderowanie plików H.264, 346
renderowanie plików FLV, 341
renderowanie programistyczne, 171
renderowanie strony WWW, 318
doczanie banerów reklamowych, 320
renderowanie w GPU, 172
Stage 3D, 181
test wydajnoci, 168, 169
tryby renderowania, 173, 179
GPU-Blend, 174
GPU-Vector, 176, 179
requestSoftKeyboard(), 220
resolvePath(), 327, 376
resume(), 352
returnKeyLabel, 234
roll(), 447, 448
S
Safari, 23, 316
SAMPLE_DATA, 307, 311
SampleData(), 307
SampleDataEvent, 312
SampleDataEvent.SAMPLE_DATA, 307
Kup książkę
Poleć książkę
Skorowidz
482
saved(), 289
savePreferences(), 380
saveSharedObject(), 117
seek(), 352
setMode(), 302
setRequestedUpdateInterval(), 285
setSilenceLevel(), 308
setupControls(), 350
SharedObject, 115, 116, 117, 381
singletone, 84
sliceSpriteSheet(), 202, 203
SOFT_KEYBOARD_ACTIVATE, 225, 226
SOFT_KEYBOARD_DEACTIVATE, 226
softKeyboardBehavior, 225
SoftKeyboardEvent, 227
SoftKeyboardEvent.SOFT_KEYBOARD_
ACTIVATE, 235
SoftKeyboardEvent.SOFT_KEYBOARD_
ACTIVATING, 235
SoftKeyboardEvent.SOFT_KEYBOARD_
DEACTIVATE, 235
softKeyboardType, 234
Sound, 311, 357
Sound.play(), 364
SOUND_COMPLETE, 311
SoundChannel, 311, 357, 364
SoundEffect, 355
Sprite, 92, 140, 144, 157
Stage, 140, 144, 157
Stage 3D, 181, 208
zestaw sprite’ów, 208
Stage.align, 255
Stage.autoOrients, 254
Stage.deviceOrientation, 261
Stage.quality, 128, 170
Stage.scaleMode, 254
Stage.setOrientation(), 261
Stage.softKeyboardRect, 226, 227
StageText, 231, 233
StageVideo, 345
StageVideoEvent.RENDER_STATE, 347
StageWebView, 318, 319
StageWebView.isSupported, 320
StageWebView.loadURL(), 326
StageWebView.viewPort, 335
stageX, 145
stageY, 145
start(), 371
startRecording(), 307, 308
startTouchDrag(), 147, 148
bounds, 149
lockCenter, 149
touchPointID, 149
STATUS, 276
StatusEvent.STATUS, 276, 371
statusUpdated(), 276
stop(), 324
stopPropagation(), 453
stopRecording(), 308
stopTouchDrag(), 147
stó montaowy, 62
budowa prostej sceny, 64
jako renderowania, 171
kolor stou, 261
tryby skalowania, 249, 254
wymiary, 63
wyrównanie zawartoci stou, 255
zmiana orientacji stou, 261
supportsOrientationChange, 254
swipe(), 158
System.pauseForGCIfCollectionImminent(), 442
systemIdleMode, 84
T
TestFlight, 78
Text Layout Framework, 213
TextField, 230
TOUCH_BEGIN, 144
TOUCH_END, 144
TOUCH_MOVE, 150
touchBegin(), 147, 148
touchEnd(), 144, 148
TouchEvent.TOUCH_MOVE, 150, 151
TouchEvent.TOUCH_ROLL_OUT, 144
touchMove(), 152
touchPointID, 145, 148
trace(), 104
TransformGestureEvent, 158
phase, 161
TransformGestureEvent.GESTURE_PAN, 155,
159, 160
TransformGestureEvent.GESTURE_ROTATE,
155, 162, 163
TransformGestureEvent.GESTURE_SWIPE,
155, 156, 157
TransformGestureEvent.GESTURE_ZOOM,
155, 164, 165
Kup książkę
Poleć książkę
Skorowidz
483
U
UDID, 43
UDID Sender, 46
UIRequiredDeviceCapabilities, 396
UIRequiresPersistentWiFi, 374
UIStatusBarStyle, 103
UPDATE, 266, 271, 279
update(), 93, 95, 142, 229
URI mailto, 385, 386
dostpne parametry, 387
URI sms, 388
URI tel, 387
URLMonitor, 368, 371
URLMonitor.running, 371
URLMonitor.stop(), 371
URLRequest, 360
Ustawienia rodowiska AIR for iOS, 71
V
Vector, 438, 439, 440
Video, 340
videoHeight, 347
videoWidth, 347
W
wzy, 102
<infoAdditions>, 102
<iPhone>, 102
wideo w iOS, 338
kontrola odtwarzania, 348, 352
ponowne odtwarzanie pliku, 352
wstrzymanie odtwarzania pliku, 353
wznowienie odtwarzania pliku, 352
pliki FLV, 338
blokowanie ekranu, 342
doczanie do aplikacji, 338
doczanie wielu plików, 342
maksymalizacja wydajnoci odtwarzania,
342
metadane, 341
odtwarzanie pliku dostpnego on-line, 341
odtwarzanie pliku lokalnego, 339
punkty sygnalizacji, 341
renderowanie w CPU, 341
pliki H.264, 343
doczanie do aplikacji, 343
doczanie wielu plików, 348
kodowanie, 348
metadane, 346
odtwarzanie pliku dostpnego on-line, 347
odtwarzanie pliku lokalnego, 344
punkty sygnalizacji, 346
renderowanie w GPU, 346
wyznaczanie rozmiarów klipu, 347
writeBytes(), 333
writeFile(), 332
writeFloat(), 312
writePng(), 332
writeUTFBytes(), 332, 333, 379
wycznik aplikacji, 89, 117
wywietlacz Retina, 241
ikona ekranu gównego, 245
obraz rozruchowy aplikacji, 245
rozdzielczo, 243
wsparcie dla rozdzielczoci, 242
wykrywanie, 242
wywietlanie stron WWW, 316
adres URL biecej strony, 324
doczanie banerów reklamowych, 320
dynamiczne generowanie strony WWW, 328
ponowne wczytanie strony, 324
przegldanie historii stron, 321
renderowanie lokalnych stron WWW, 326
renderowanie strony WWW, 318
Safari, 316
uruchamianie, 316
wsparcie usugi OAuth, 321
zatrzymywanie wczytywania strony, 324
zmiana adresu URL strony, 324
zrzut ekranu strony WWW, 334
zwalnianie pamici, 333
wzorzec projektowy Model-Widok-Kontroler,
Patrz MVC
Z
zdarzenia
AccelerometerEvent.UPDATE, 279, 281, 285
captured(), 299
Dice.ROLLED, 448
ENTER_FRAME, 92, 95, 229
ErrorEvent.ERROR, 291, 320
Kup książkę
Poleć książkę
Skorowidz
484
zdarzenia
Event.CANCEL, 294
Event.CLOSE, 379
Event.COMPLETE, 198, 290, 295, 320, 360,
376, 383
Event.DEACTIVATE, 86, 87
Event.ENTER_FRAME, 89, 92, 205
Event.EXITING, 89
Event.ID3, 361
Event.SOUND_COMPLETE, 365
EXITING, 88
FOCUS_IN, 223
FOCUS_OUT, 222
FocusEvent, 222
GeolocationEvent.UPDATE, 266, 276
GESTURE_PAN, 160
GESTURE_SWIPE, 158
GestureEvent.GESTURE_TWO_FINGER_
TAP, 155
IOErrorEvent.IO_ERROR, 199, 360, 379
KeyboardEvent.KEY_DOWN, 235
KeyboardEvent.KEY_UP, 235
LOCATION_CHANGING, 324
LocationChangeEvent.LOCATION_
CHANGE, 324
MediaEvent.COMPLETE, 298
MediaEvent.SELECT, 294
MOUSE_UP, 115, 450
MouseEvent.MOUSE_UP, 114
NET_STATUS, 351
NetStatusEvent.NET_STATUS, 342, 347
onCuePoint, 346
onMetaData, 341, 346
onXMPData, 341, 346
ORIENTATION_CHANGE, 257
ORIENTATION_CHANGING, 257
OutputProgressEvent.OUTPUT_PROGRESS,
380
photoLoaded(), 293
photoSelected(), 294
pressed(), 289, 298
ProgressEvent.PROGRESS, 360, 384
SAMPLE_DATA, 307, 311
SampleDataEvent.SAMPLE_DATA, 307
saved(), 289
SOFT_KEYBOARD_ACTIVATE, 225, 226
SOFT_KEYBOARD_DEACTIVATE, 226
SoftKeyboardEvent.SOFT_KEYBOARD_
ACTIVATE, 235
SoftKeyboardEvent.SOFT_KEYBOARD_
ACTIVATING, 235
SoftKeyboardEvent.SOFT_KEYBOARD_
DEACTIVATE, 235
SOUND_COMPLETE, 311
StageVideoEvent.RENDER_STATE, 347
STATUS, 276
StatusEvent.STATUS, 276, 371
TOUCH_BEGIN, 144
TOUCH_END, 144
TOUCH_MOVE, 150
touchBegin(), 148
touchEnd(), 148
TouchEvent.TOUCH_MOVE, 150, 151
TouchEvent.TOUCH_ROLL_OUT, 144
TransformGestureEvent.GESTURE_PAN,
155, 159, 160
TransformGestureEvent.GESTURE_
ROTATE, 155, 162, 163
TransformGestureEvent.GESTURE_SWIPE,
155, 156, 157
TransformGestureEvent.GESTURE_ZOOM,
155, 164, 165
UPDATE, 266, 271, 279
zoom(), 165
yroskop, 269
Kup książkę
Poleć książkę