Flex SDK + Flash Player 10

24 Październik 2009 – 12:05

Wpis w związku z powtarzającymi się pytaniami na różnych forach.

Jak włączyć w Flex Builderze kompilowanie dla Flash Playera 10 (czyli mieć dostęp do klasy Vector i metody “save” w klasie FileReference):

  1. zakładam, że mamy nowe SDK (najlepiej 3.4)
  2. w właściwościach projektu wybieramy zakładkę “Flex Compiler” i…
    • wpisujemy w “Additional compiler arguments” -target-player=10.0.0
      .
      player10_1

    LUB

    • zaznaczamy “Require Flash Player version:” i podajemy wartości: 10 0 0
      .
      player10_2

Więcej informacji na stronach AdobeTargeting Flash Player 10

Adobe MAX 2009

29 Wrzesień 2009 – 20:40

W związku z tym, że tegoroczne Adobe MAX rusza w najbliższą niedzielę można już głosować na MAX Awards (nagrody dla najlepszych aplikacji RIA) oraz rejestrować się na transmisję online z keynote (w tym roku w pełni na żywo).

Wysyłanie formularzy multipart/form-data

8 Wrzesień 2009 – 14:08

Trafiłem ostatnio na dość dziwny problem. Potrzebowałem mianowicie wysłać z poziomu Flexa dane formularza, które po stronie serwera zostałyby odebrane przez PHP (lub inny język server-side).

Jednak cały kłopot polegał na tym, że:

  • dane te miały wykorzystać istniejący już kod obsługiwany przez formularz w HTML’u – czyli niejako miałem się podszyć pod zwykłą stronę www, nie wykorzystując żadnych udogodnień typu AMF, Webservice czy RemoteObject,
  • chciałem wysłać jednocześnie dane tekstowe (np. dane rejestracyjne) oraz binarne (np. obrazki JPG), bez limitu ilości,
  • obrazki nie były pobierane z dysku użytkownika przez FileReference.browse, ale tworzone w locie jako zrzuty komponentów przez ImageSnapshot i trzymane w pamięci w zmiennych typu ByteArray.

Jedyne co udało mi się znaleźć to artykuł na blogu Neer’a Friedman’a i jego projekt na Google Code. Był to dobry początek do zmian…
BTW: niejaki Mike Stead, którego komentarz widnieje pod wpisem Neer’a też zajmował się tym problemem i zdaje się, że nawet go jakoś elegancko rozwiązał, jednak jego stronka padła kompletnie i nie ma jej nawet w Google Cache…

Wywaliłem kod odpowiedzialny za używanie Socketów zamieniając go na zwykłego URLLoader’a oraz troche zrefaktoryzowałem kod (uporzadkowałem). Tym sposobem pojawiła się biblioteka MultipartRequestLoader :)

Przykładowa aplikacja (wraz z kodem źródłówym pod prawym klikiem myszki), a tutaj kod biblioteki: multipart_loader_imrahil.zip

Kod przykładowej aplikacji:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" viewSourceURL="srcview/index.html">
    <mx:Script>
       <![CDATA[
           import multipart.MultipartVariables;
           import multipart.MultipartRequestLoader;
           
           private var loader:MultipartRequestLoader;

           private function init():void
           {
               loader = new MultipartRequestLoader('http://flex.imrahil.com/work/multipart_loader/upload.php');
               var variables:MultipartVariables = new MultipartVariables();
               var myByteArray:ByteArray = new ByteArray();

               // we will create a fake file content here, you should replace this with the binary data you want to upload
               for(var i:int=0; i<100;i++)
               {
                   myByteArray.writeUTFBytes("123by\nAR\r\nRA\x65\x0156");
               }

               variables.add('file_data', myByteArray, 'filename.bin');
               variables.add('another_var','extra data');

               loader.variables = variables;
               loader.addEventListener(Event.COMPLETE, fileUploaded);
               loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
               loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
           }

           private function fileUploaded(event:Event):void
           {
               outputTxt.text += 'Result:';
               outputTxt.text += MultipartRequestLoader(event.target).responseBody;
           }
           private function securityErrorHandler(event:SecurityErrorEvent):void
           {
               outputTxt.text = "securityErrorHandler: " + event;
           }
           private function ioErrorHandler(event:IOErrorEvent):void
           {
               outputTxt.text = "ioErrorHandler: " + event;
           }
           private function upload(event:MouseEvent):void
           {
               loader.load();
           }
       ]]>
   </mx:Script>

    <mx:VBox width="100%" height="100%" horizontalAlign="center" verticalAlign="middle">
        <mx:Button label="Upload!" click="upload(event)" />
        <mx:TextArea id="outputTxt" width="500" height="250" />
    </mx:VBox>
</mx:Application>

Flex SDK 3.4 – niespodzianka z wykresami

27 Sierpień 2009 – 13:30

Adobe opublikowało dzisiaj oficjalnie nowe Flex SDK 3.4 (chodzi oczywiście o to ze strony głównej, a nie z opensource.adobe.com gdzie leżało już jakiś czas temu).

W zasadzie jest to ten sam build (3.4.0.9271) tyle tylko, że dorzucono do niego paczkę z komponentami do wykresów (Flex Data Visualization Component) w tejże wersji.

Największe zaskoczenie jednak to fakt, że paczka z wykresami zawiera kod źródłowy oraz nie ma klasy odpowiedzialnej za watermarki! Ok, wcześniej można było rozpakować kod źródłowy posiadając klucz licencyjny do Flex Buildera, ale brak watermarków to całkowita nowość. Teraz każdy może robić wykresy czy używać AdvancedDataGrid bez żadnych problemów.

Uaktualnienia Flash Playera i Adobe AIR

31 Lipiec 2009 – 22:03

Na szybko – Adobe udostępniło do ściągnięcia:

Flex + Java w jednym projekcie w Flex Builderze – część II

31 Lipiec 2009 – 21:41

Czas na stworzenie prostej aplikacji wykorzystującej Jave (BlazeDS) i Flex w jednym projekcie Flex Buildera. Będzie to klasyczne “Hello World” :)

Wymagane oprogramowanie:

  • Flex Builder 3.0.2 – dostępny do ściągnięcia w wersji trial ze stron Adobe lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze strony Free RIA Tools,
  • BlazeDS 3.2.0.3978 – dostępny na stronach Adobe Open Source (jest to wersja z samymi binariami – dostępna jest także wersja z zintegrowanym Tomcatem) – rozpakowujemy w dowolne miejsce, np.: C:\Work\BlazeDS
  • Tomcat 6.0.20 – dostępny na stronach Apache Software Foundation – rozpakowujemy w dowolne miejsce, np.: C:\apache-tomcat-6.0.20
  • BlazeMonster – bardzo przydatne narzędzie do testowania świeżo stworzonych metod BlazeDS – do ściągnięcia z bloga Sujit Reddy G.

Do dzieła!

Czytaj dalej »

Flex + Java w jednym projekcie w Flex Builderze – część I

11 Kwiecień 2009 – 13:10

Chciałbym przedstawić w jaki sposób można przygotować środowisko deweloperskie Flex Builder do kodowania Flex + Java. Chodzi oto, żeby móc tworzyć jednocześnie część aplikacji widoczną dla użytkownika (frontend) jak i backend, czyli kod Javy odpowiedzialny np.: za komunikację z bazami danych i obróbkę tych danych.

Uwaga! Poniższy sposób tworzenia aplikacji sprawdza się tylko w przypadku kodowania przez jedną osobę.

Kod Javy będzie docelowo wykorzystywał BlazeDS/LiveCycle Data Services – będzie to jednak zagadnieniem następnego tutoriala.

Wymagane oprogramowanie: Flex Builder 3.0.2 – dostępny do ściągnięcia w wersji trial ze stron Adobe lub w specjalnej wersji dla studentów lub bezrobotnych programistów ze strony Free RIA Tools.

Czytaj dalej »

PIT-37 przez internet, czyli e-Deklaracje Desktop

10 Kwiecień 2009 – 9:41

Uwaga! Pojawił się chyba pierwszy duży projekt AIR‘owy w Polsce!. Ministerstwo Finansów zdecydowało się stworzyć aplikację do wypełniania PIT’ów-37 w technologii Adobe AIR. Do ściągnięcia ze strony www.e-deklaracje.gov.pl.

Wielkość tego projektu to jednak nie złożoność aplikacji (bo całość wypełniania i obliczeń opiera się o interaktywny formularz PDF), ale jego nadchodząca popularność. Już widzę, jak w statystykach wystrzelą słupki popularności środowiska Adobe AIR w Polsce :)

Appka oprócz rozliczeniowego PDF’a dodaje kilka możliwości “desktopowych”, czyli zapisywanie wersji roboczych na dysk, śledzenie statusu wysłanego rozliczenia czy z detali: kontrolę aktywności połączenia internetowego lub uruchamianie na starcie systemu.
Przydałby się jeszcze tylko lepszy system pomocy, bo ten aktualny to po prostu wielgachny PDF w którym na 30 stronach opisana jest cała aplikacja. Dla normalnego użytkownika jest to całkowicie nie do ogarnięcia…

Instalator aplikacji:
(aplikacja jest cyfrowo podpisana przez MF więc proszę się nie bać o jakieś wałki z mojej strony… )

Instalator wymaga zainstalowanej wtyczki Flash Player w wersji minimalnej 9.0.115


Kilka zrzutów ekranowych:

[mygal=e-deklaracje]

Lupo – szybkie i zgrabne tworzenie tłumaczeń i lokalizacji

9 Kwiecień 2009 – 12:07

Lupo Flex Localization Studio – to kolejna fajna rzecz znaleziona na blogu Davida Deraedt’a (wcześniej była prezentacja o Agile+Flex).

lupo_screenshot

Lupo Flex Localization Studio będzie to narzędzie składające się z dwóch modułów z których każdy ułatwiać będzie:

  • Lupo Manager – proces tworzenia lokalizacji podczas pisania aplikacji, czyli: zamianę tekstów na odnośniki do resourceManager’a, dodawanie nowych jezyków, czy generowanie potrzebnego kodu AS/MXML
  • Lupo Translator – proces tłumaczenia kolejnych tekstów aplikacji na różne języki,  coś na kształt Poedit dla plików *.po/*.mo

Niestety nie ma narazie możliwości ściągnięcia instalki Lupo ani zarejestrowania się do programu beta-testów…. :(

Flex i metodologia Agile

9 Kwiecień 2009 – 11:49

Na blogu Davida Deraedt’a znalazłem bardzo ciekawą prezentację dotyczącą kodowania we Flexie przy wykorzystaniu metodyki Agile: