NA tegorocznym MAXie Adobe wyjątkowo promował jeden ze swoich najnowszych produktów, jakim jest AIR (czyli Adobe Integrated Runtime). Jest to środowisko multiplatformowych aplikacji desktopowych. Polega to na tym, że na jednym z trzech wspieranych systemów operacyjnych (Windows, Mac, Linux) instalujemy środowisko AIR (coś w rodzaju flash playera w przeglądarce www) a same aplikacje są już wspólne dla wszystkich os-ów i mają rozszerzenie .air. AIR daje szereg możliwości, takich jak dostęp do systemu plików, możliwość tworzenia aplikacji wielookienkowych oraz nadawania im przezroczystości. Łącząc to z możliwościami języka ActionScript3 dostajemy bardzo potężne narzędzie.
Aplikacje AIR możemy tworzyć na 3 sposoby:
- przy użyciu HTML i AJAX (plugin do Dreamweavera)
- przy użyciu Flasha (plugin do Flasha)
- przy użyciu Flexa (plugin do Flexa)
O AIR można by dużo pisać, ale najprościej zobaczyć jego możliwości w praktyce. Poniżej kilka najlepszych wg mnie przykładów zastosowania. Aby wypróbować je na swoim komputerze najpierw ściągnij i zainstaluj AIR dla Windows lub Macintosh.
Snippage
Program umożliwia wycięcie dowolnego fragmentu strony internetowej i umieszczenie go jako widgeta na pulpicie.
strona programu
pobierz program

DiggTop
Przeglądaj digga szybciej i sprawniej.
strona programu
pobierz program

Digimix
Pełnowartościowy program do remixowania muzyki. 
strona programu
pobierz program

Google Analytics Report
W programie zaimplementowano niemal wszystkie funkcje wersji online. Ogromną zaletą jest możliwość skofigurowania wielu profili z wielu kont gmail.
strona programu
pobierz program

Twitter
Powiedz znajomym co właśnie robisz bez konieczności wchodzenia na www.
strona programu
pobierz program
Pierwszy w Europie Adobe MAX, w którym miałem szczęście uczestniczyć, za nami. W trakcie sympozjum (konferencji?) wziąłem udział w kilku sesjach, które traktowały o optymalizacji ActionScript 3.0. Poniżej postaram się wymienić najważniejsze sposoby. Duża część z nich odbiega od przyjętych standardów programowania i często może zmniejszyć przejrzystość kodu. Dlatego warto je stosować tylko wtedy, gdy zależy nam na maksymalnej wydajności.
- minimalizujemy liczbę obiektów, efektów i animacji na ekranie
- usuwamy obiekty z listy wyświetlania zamiast robić je niewidocznymi
- wyrzucamy co się da przed pętlę
- przed wejściem w pętlę przypisujemy obliczane w pętli wartości do zmiennych
np. zamiast:
for(var i:int=0 ; i<myArray.length ; i++)
{
//some code…
}
piszemy:
var len:int = myArray.length;
for(var i:int=0 ; i<len ; i++)
{
//some code…
}
- bezwzględnie używamy strong typing
- usuwamy z kodu wszystkie trace lub w opcjach publikacji włączamy omit trace actions
- unikamy porównywania różnych typów danych
- zamiast funkcji getter / setter używamy zmiennych typu public
- w pętlach zamiast i++ używamy i+=1 (tak, dla mnie to też był szok
)
- stosujemy pętle for each zamiast for in
- stosujemy “”+k zamiast k.toString()
- tworzymy tablice poprzez k = [1,2,3] zamiast k = new Array(1,2,3)
- stosujemy optymalne algorytmy (to raczej oczywiste)
- staramy się używać typu int zamiast Number (zwłaszcza jako wskaźnika do tablic lub pętli)
- nie piszemy długich funkcji, gdyż flash player ma wtedy problem z alokacją rejestrów
- jeżeli tylko się da, używamy operacji logicznych zamiast arytmetycznych
np. zamiast:
var mutiplyResult:int = anAge * 8;
piszemy:
var mutiplyResult:int = anAge << 3;
Tutaj znajdziecie prezentację oraz przykłady, których autorem jest Cedric Tabin, prowadzący sesję Optimizing ActionScript 3 performance na Adobe MAX Barcelona. W dużej mierze opierałem się właśnie na nich.
W AS3, dzięki klasie ByteArray, mamy możliwość operowania danymi binarnymi. Wykorzystując tą możliwość, powstało szereg przydatnych bibliotek, które umożliwiają bezpośrednio we flashu np. kompresję zip, jpg, png, etc. Mnie na razie najbardziej zainteresowała klasa JPEGEncoder.
Aby w AS2 wygenerować obrazek w postaci JPG i zapisać go na serwerze lub dysku, musieliśmy najpierw wysłać wszystkie dane (bajt po bajcie) do skryptu php, który to generował plik. Jak łatwo się domyślić, za każdym razem trzeba było przesłać astronomiczną liczbę danych. Np. generując kolorowy obrazek 640×480, trzeba było przesłać ok. 921kB danych. W przypadku AS3 i JPEGEncodera, również musimy przesłać dane najpierw na serwer a następnie z serwera na dysk lokalny. Przesyłamy już jednak skompresowane dane, czyli kilkanaście lub kilkadziesiąt razy mniej.
Do komunikacji Flash <-> PHP zostało wykorzystane AMFphp. Jest to narzędzie RPC (zdalne wywoływanie procedur) dla PHP. AMFphp znacznie ułatwia wymianę danych, zapewnie elementarną autentykację i można go w prosty sposób rozbudowywać.
JPEGEncoder można wykorzystać na wiele sposobów. Pierwsze pomysły jakie się nasuwają, to generowanie avatarów i kartek. Ja wpadłem na inny pomysł, którego wersję beta można znaleźć tutaj:

Już niedługo bardziej rozbudowana wersja. Miłej zabawy.
Ostatnie komentarze