Entwicklung von Desktopanwendungen mit Adobe Flex
Transcription
Entwicklung von Desktopanwendungen mit Adobe Flex
Entwicklung von Desktopanwendungen mit Adobe Flex Lisa Florian Gliederung ● ● ● ● Grundlagen von Adobe Flex – Entstehung von Flex – Aufbau eines AIR-Projekts – Wer kann Flex-Anwendungen ausführen? – MXML – Actionscript AIR – Adobe Integrated Runtime Wichtige Klassen und Komponenten von Flex in AIR Entwicklung von eigenen Komponenten Lisa Florian Seite 2 Entstehung von Flex 1997: Macromedia veröffentlicht erste Version von Flash 1999: Flash Version 4: Actionscript ermöglicht das Empfangen und Verarbeiten von Daten 2003: Flash MX 2004 (Version 7): Actionscript 2.0 ermöglicht objektorientierte Programmierung 2005: Adobe übernimmt Macromedia Später entstehen noch weitere Flash-Versionen und Actionscript 3.0. Lisa Florian Seite 3 Entstehung von Flex Flash war unter Macromedia ein Animationswerkzeug. => Für Business-Applikationen schuf Macromedia Flex 1.0. Flex basiert auf Flash. 2006 – Adobe veröffentlicht Flex 2.0: kostenpflichtige Möglichkeit zur Serveranbindung 2008 – Flex 3.0: BlazeDS – eine kostenlose Möglichkeit zur Serveranbindung AIR – eine Laufzeitumgebung um Flex für Desktopapplikationen verwenden zu können März 2011 – Flex 4.0: Optimierung der Compilerleistung Spark-Komponentensatz Zukunft: OpenSource Foundation? Lisa Florian Seite 4 Aufbau eines AIR-Projekts ● ● ● ● Lisa Florian die Hauptanwendungsdatei (Projektaufbau.mxml) eine Anwendungsdeskriptordatei (Projektaufbau-app.xml) einige Flex-Bibliotheken (Dateien unter Flex 4.0) das Kompilat der Anwendung (Dateien unter bin-debug) Seite 5 Wer kann Flex-Anwendungen ausführen? Webanwendung Adobe Flash Player wird benötigt. Verbreitung unklar: ● Adobe: 99% aller internetfähigen PCs ● Florian Müller (Autor): zwischen 60% und 98% ● Vermutlich hohe Verbreitung, da: ● Viele Seiten (z.B. Youtube) benötigen Flash-Player ● Google Chrome (Marktanteil im September 2011 bei 23,61%) enthält den Flash-Player Lisa Florian Seite 6 Wer kann Flex-Anwendungen ausführen? AIR-Anwendung Adobe AIR wird benötigt. Juni 2010: über 300 Millionen Installationen laut Adobe Zu dieser Zeit gab es etwa 760 Millionen Hosts im Internet. => Verbreitung von etwa 40% Adobe Flash Player und Adobe AIR können kostenlos von Adobe heruntergeladen werden. Lisa Florian Seite 7 MXML <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> <s:Button label="Mein Button" id="button" x="10" y="20"/> </s:WindowedApplication> Lisa Florian Seite 8 MXML <fx:Declarations> ● ● ● Elemente innerhalb werden nicht gezeichnet. Unsichtbare Komponenten (z.B. DateFormatter) müssen innerhalb von fx:Declarations stehen. Sichtbare Komponenten (z.B. Button) können innerhalb stehen, sind dann aber vorerst nicht sichtbar. Lisa Florian Seite 9 Actionscript Kann entweder in einer eigenen Actionscript-Klasse oder -Datei geschrieben werden oder direkt in MXML eingebunden werden. Dazu muss ein <fx:Script>-Tag geöffnet werden. <fx:Script> <![CDATA[ ]]> </fx:Script> Lisa Florian Seite 10 Actionscript package mypackage { public class MyClass { public function MyClass() { } protected var myNumber:Number; private function myFunction(i:Number):Object{ var j:Number = i; myNumber = j++; return new Object(); } } } Lisa Florian Seite 11 Actionscript – Events WindowedApplication Click Phase:1 Group Click Phase:1 Button Click Phase:2 Group Click Phase:3 WindowedApplication Click Phase:3 Lisa Florian Seite 12 Actionscript – Events <?xml version="1.0" encoding="utf-8"?> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="creationCompleteHandler(event)" click="wapp_clickHandler(event)"> <fx:Script><![CDATA[ import mx.events.FlexEvent; protected function creationCompleteHandler(event:FlexEvent = null):void{ this.addEventListener(MouseEvent.CLICK, wapp_clickHandler, true); group.addEventListener(MouseEvent.CLICK, group_clickHandler, true); } protected function button_clickHandler(event:MouseEvent = null):void{ trace("Button Click Phase:"+event.eventPhase); } protected function group_clickHandler(event:MouseEvent = null):void{ trace("Group Click Phase:"+event.eventPhase); } protected function wapp_clickHandler(event:MouseEvent = null):void{ trace("WindowedApplication Click Phase:"+event.eventPhase); } ]]></fx:Script> <s:Group id="group" click="group_clickHandler(event)"> <s:Button click="button_clickHandler(event)"/> </s:Group> </s:WindowedApplication> Lisa Florian Seite 13 Actionscript – Databinding Databinding bedeutet, dass eine Datenquelle an eine andere gebunden ist. So kann beispielsweise das Label eines Buttons immer den Wert haben, der in einem TextInput angegebenen wird oder der in eine Variablen steht. In Flex kann Databinding auch bidirektional sein. [Bindable] private var myText:String = "Hier Text eingeben"; <s:TextInput text="@{myText}" x="10" y="10"/> <s:Label text="{myText}" x="10" y="40"/> Lisa Florian Seite 14 Gliederung ● Grundlagen von Adobe Flex ● AIR – Adobe Integrated Runtime ● ● – AIR-Anwendungen für TV-Geräte – AIR-Anwendungen für mobile Geräte – AIR-Anwendungen für den Desktop – Verteilung der Desktopanwendung Wichtige Klassen und Komponenten von Flex in AIR Entwicklung von eigenen Komponenten Lisa Florian Seite 15 AIR-Anwendungen für TV-Geräte ● Adobe: „im Wesentlichen identisch mit dem Entwickeln von AIRAnwendungen für andere Geräte“ ● Einzige Eingabemöglichkeit: Fernbedienung ● Problem: Jede Fernbedienung ist anders aufgebaut Lisa Florian Seite 16 AIR-Anwendungen für mobile Geräte ● Problem: Niedrige Prozessorgeschwindigkeit ● Akku-Laufzeit ● Problem: Kleiner Bildschirm Lisa Florian Seite 17 AIR-Anwendungen für den Desktop Zusätzliche Möglichkeiten im Vergleich zu Webanwendungen: ● Zugriff auf das Dateisystem ● Lokale Datenbanken ● Manipulation von Fenstern Lisa Florian Seite 18 Verteilung – Manuell ● AIR-Datei wird auf den PC gebracht (z.B. als Download oder auf CD) ● Doppelklick auf die Datei startet Installation oder Update ● Die erste Installation muss immer auf diesem Weg erfolgen. Lisa Florian Seite 19 Verteilung – Halb automatisiert ● AIR-Datei wird auf den PC gebracht (z.B. als Download oder auf CD) ● Mit Updater-Klasse kann Update gestartet werden ● Pfad und Version der neuen Datei müssen bekannt sein ● Gefahr vor Endlosschleife var updater:Updater = new Updater(); var file:File = File.desktopDirectory.resolvePath( "Projektaufbau.air"); updater.update(file, "3"); Lisa Florian Seite 20 Verteilung – automatisiert ● AIR-Datei wird vom Server geladen und gespeichert ● Mit Updater-Klasse kann Update gestartet werden ● Versionsnummer kann direkt eingegeben oder vom Server geladen werden ● Versionsnummer sollte überprüft werden ● Internetverbindung wird benötigt Lisa Florian Seite 21 Lebenszyklus Lisa Florian Seite 22 Gliederung ● Grundlagen von Adobe Flex ● AIR – Adobe Integrated Runtime ● ● Wichtige Klassen und Komponenten von Flex in AIR – Allgemein – spark.components.Button – mx.controls.DataGrid – spark.components.Group Entwicklung von eigenen Komponenten Lisa Florian Seite 23 Allgemein Lisa Florian Seite 24 spark.components.Button Lisa Florian ● Soll bei Klick eine Funktion ausführen. ● Ändert bei mouseOver die Farbe. Seite 25 mx.controls.DataGrid ● ● Kann beliebig viele Spalten enthalten. ● Jede Spalte hat headerText und dataField. ● ● Lisa Florian Wird zur Darstellung von Daten in einer Tabelle verwendet. Bekommt eine Liste mit Objekten als dataProvider. Jedes Objekt entspricht einer Zeile. Seite 26 mx.controls.dataGridClasses.DataGridColumn Lisa Florian ● dataField ● dataTipField ● labelFunction ● dataTipFunction ● headerText Seite 27 spark.components.Group Lisa Florian ● unsichtbare Komponente ● enthält andere Komponenten ● kein Scrollbalken oder Rahmen ● Layouts Seite 28 Gliederung ● Grundlagen von Adobe Flex ● AIR – Adobe Integrated Runtime ● ● Wichtige Klassen und Komponenten von Flex in AIR Entwicklung von eigenen Komponenten Lisa Florian – Vorbereitungen – Implementierung der grundlegenden Funktionen – Erweiterungen – ExpandableTextArea – Einbau der ExpandableTextArea Seite 29 Vorbereitungen ● ● Flex-Bibliotheksprojekt erstellen Entscheidung zwischen ActionScript-Klasse und MXML-Komponente ● Interfaces oder MXML ● Beispiel: MXML-Komponente, basiert auf spark.components.Group ● Label und TextInput fest eingebauen ● Projekteigenschaften → Flex-Erstellungspfad → Bibliothekspfad ● Namespace definieren Lisa Florian Seite 30 Implementierung der grundlegenden Funktionen ● Größe und Positionierung der Komponente änderbar ● sinnvolle Standardwerte vorgeben ● label und text im Script-Block definieren ● Die Komponente kann nun verwendet werden. Lisa Florian Seite 31 Implementierung der grundlegenden Funktionen <s:Group height="24" left="10" right="10" minHeight="22"> <fx:Script> <![CDATA[ [Bindable] public var label:String = ""; [Bindable] public var text:String = ""; ]]> </fx:Script> <s:Label text="{label}" verticalCenter="0" left="0"/> <s:TextInput verticalCenter="0" left="140" right="0" text="@{text}"/> </s:Group> Lisa Florian Seite 32 Erweiterungen ● vielfältig einsetzbar ● direkter Zugriff auf Label und TextInput ● weitere Eingabefelder ● ● type [Inspectable(enumeration="TextInput,CheckBox")] selected analog zu text Lisa Florian Seite 33 Erweiterungen ● mehrzeiliger Text → TextArea analog zu TextInput ● Standardhöhe für TextArea größer ● ● Problem beim Überschreiben der Höhe, wenn man diese mit Databinding im MXML anpasst: ● Festlegen von type → Berechnen der Höhe → Überschreiben der Höhe ● Überschreiben der Höhe → Festlegen von type → Berechnen der Höhe Setter von type prüft ob die Höhe -1 Pixel ist und ändert dann die Höhe Lisa Florian Seite 34 ExpandableTextArea ● Problem der Größe ● eigene Komponente ● 2 Klassen: Popup mit dem großen Textfeld und kleineres Textfeld ● TextAreaPopup als MXML-Komponente basierend auf TitleWindow ● close: PopUpManager.removePopUp(this); ● TextArea: 10 Pixel Abstand, text bidirektional binden ● Methode zum Öffnen, DisplayObject als Übergabeparameter PopUpManager.addPopUp(this, parent); PopUpManager.centerPopUp(this); Lisa Florian Seite 35 ExpandableTextArea ● MXML-Komponente ExpandableTextArea, basiert auf TextArea ● 2 zusätzliche Attribute: title:String und par:DisplayObject ● Der DoubleClickHandler überprüft, ob par gesetzt ist und öffnet ein TextAreaPopup. BindingUtils.bindProperty(this,"text",popup,"text"); BindingUtils.bindProperty(popup,"text",this,"text"); Lisa Florian Seite 36 Einbau der ExpandableTextArea ● Namespace definieren ● TextArea durch ExpandableTextArea austauschen ● par und title im LabeledInputField ergänzen ● Ist title leer so wird dafür der Wert aus label verwendet. Lisa Florian Seite 37 Quellen Das Aufrufdatum aller online verfügbaren Quellen ist, sofern nicht anders angegeben, der 15.11.2011. Professionelle Rich-Client-Lösungen mit Flex und Java von Florian Müller Tour de Flex von Adobe Version 2.0 http://help.adobe.com/de_DE/air/build/air_buildingapps.pdf http://livedocs.adobe.com/flex/3/html/help.html http://livedocs.adobe.com/flex/3/html/help.html?content=events_02.html http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/ http://help.adobe.com/de_DE/flashbuilder/using/WSe4e4b720da9dedb524b8220 http://www.adobe.com/products/flashplatformruntimes/statistics.html http://www.adobe.com/de/products/air/faq.html http://blog.axxg.de/2010/11/verbreitung-des-flash-player-plugins/ http://www.webhits.de/deutsch/index.shtml?webstats.html http://www.google.com/support/chrome/bin/answer.py?hl=de&answer=108086 http://www.tech-blog.net/googles-chrome-schon-bald-vor-mozillas-firefox/ http://www.chip.de/downloads/Google-Chrome_32709574.html https://www.isc.org/solutions/survey/history Lisa Florian Seite 38 Quellen http://www.adobe.com/de/aboutadobe/pressroom/pdfs/fastfacts.pdf http://www.netgear.de/support/glossar/ http://www.adobe.com/de/devnet/flex/quickstart/coding_with_mxml_and_action http://www.die-eigene-homepage-erstellen.de/php/ http://www.rz.rwth-aachen.de/global/show_document.asp?id=aaaaaaaaaacejhs http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/statements. http://www.brianapps.net/sizer/ www.dpunkt.de/java/Anhang/Glossar/2.html http://help.adobe.com/de_DE/flex/using/WS2db454920e96a9e51e63e3d11c0bf6 http://campusphere.de/flashtutorial/2008/10/22/flash-geschichte/ (02.12.2011) http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+4 (05.12.2011) http://www.adobe.com/de/devnet/flex/articles/flex4sdk_whatsnew.html (05.12.2011) http://www.gulli.com/news/14731-ausserplanmaessiges-update-fuer-adobe-acro (13.12.2011) http://groups.adobe.com/index.cfm?event=page.index (13.12.2011) Lisa Florian Seite 39 Ende Lisa Florian Seite 40