• Flex - viel mehr als nur ein gratis Flash-Ersatz


    Flex ist quasi 0$-Flash könnte man sagen und das Ergebnis (eine SWF-Datei) ist auch das gleiche. Aber in Flex wird, vorausgesetzt man will wirklich nichts (für den Flash-Builder oder FDT für eclipse, 2 Flex IDEs) ausgeben, alles programmiert. Damit ist es weniger etwas für Designer und das erstellen von Browser-Games dürfte mit dem klassischen Flash weiterhin deutlich bequemer sein. Aber es ist mit der Kombination von MXML mit ActionScript eine Alternative zu HTML, CSS und JavaScript.

    Warum soll ich das lernen?
    1. Wenn du (erfahrener) Web-Entwickler bist, musst du gar nicht so viel lernen.
    2. Wenn du dazu noch Java kannst musst du fast nichts mehr lernen
    3. Flash-Sites sind einfach cool, dafür viel Geld zahlen zu müssen aber nicht wirklich
    4. Anstatt vieler verschiedener - von jedermann einsehbarer - Dateien und vieler Anpassungen und Einschränkungen wegen unterschiedlichen Browser(-Versione)n hat man am Ende oft nur eine kompiliere Datei!
    5. Javascript kann deaktiviert werden, Actionscript nicht
    6. Im Gegensatz zu den Konkurrenten (JavaFX und Silverlight mit je ca. 70%) hat Adobes Flash-Plattform, auf der auch Flex läuft eine Verbreitung von 99%!
    7. Mit Flex kannst du nicht nur Websites / RIAs sondern auch Plattform-unabhängige Desktop-Programme für die AIR-Runtime oder Apps für Android und iPhone entwickeln.
      Zum iPhone: es kann kein Flash also auch keine mit Flex erstellten SWFs ausführen, nur Apps lassen sich mit Flex ebenfalls Plattform-unabhängig gestalten.


    Wie fange ich an?
    1. Hol dir das Flex-SDK (Open Source) klick
    2. Schau dir die Live Docs von Adobe an
    3. Wann immer du genaues wissen willst: ActionScript ist gut dokumentiert und MXML-Nodes sind immer gleichzeitig auch ActionScript-Objekte. zur Doku
    4. Eine letzte Empfehlung von mir noch: http://blog.flexexamples.com/.
      Ansonsten hilft wie üblich einfach Googeln, ertmal einfach "Flex" oder "Flex Examples" und dann in Verbindung mit dem was man vor hat (z.B. "Video Player with Flex").


    Wie entwickle ich?
    • Windows-User können auf FlashDevelop zurückgreifen
    • Unter Linux verwende ich Gedit und mxmlx auf der Kommandozeile. Um zumindest MXML-Code gehilightet zu bekommen wählt man rechts unten "XML" statt "Reihner Text" aus. Von Haus aus ein guter Hilighter ist JEdit
    • Wer ne IDE will kann AirMiniBuilder verwenden. (Plattform-unabhängig da selbst in Flex programmiert)
      oder FDT eclipse plugin (http://fdt.powerflasher.com/)


    Was kann ich - auch als Anfänger - konkret mit Flex umsetzen?
    • Video-Player
    • Image-Slide-Show
    • Client für Web-APIs (Cross-Domain-Requests lassen sich mit YQL gut umsetzen)
    • Website-Intro
    • ...


    Ein paar Tipps für Java-Umsteiger noch:
    • Vor Variablen muss bei Flex var und vor Funktionen function stehen (direkt nach public bzw. private)
    • Der Datentyp oder void steht nach einem Doppelpunkt am Ende
    • Es gibt uint (=unsigned integer), das sind Vorzeichen-lose Ganzzahlen.
     


     
    Kommentare 13 Kommentare
    1. Avatar von kalterjava
      kalterjava -
      Hi,

      mal noch eine kurze Frage Flex benötigt doch den Flash-Player oder?

      Danke für deine Antwort.
    1. Avatar von javaDeveloper2011
      javaDeveloper2011 -
      Ja, aber wie gesagt: 99% Verbreitung!
      (nur hat nicht bei iPhone)
    1. Avatar von Martin Schaefer
      Martin Schaefer -
      Und man kann mit Flex auch ganz wunderbar Extensions für Adobe Software wie z.B. Photoshop, Illustrator oder InDesign entwickeln. Das nur kurz als Ergänzung, falls jemand daran Interesse hat.
    1. Avatar von kalterjava
      kalterjava -
      Vielen Dank für eure Antwort, aber wie wollt ihr mich überzeugen, wenn Adobe erst vor ein paar Wochen angekündigt hat, dass sie den Flash-Player nicht mehr weiterentwickeln und sozusagen sterben lassen insb. was das Web angeht und sich auf HTML5 konzentrieren. 750 Leute mussten schon gehen - anscheinend die Mehrzahl des Flash-Developer Teams.

      Da ist es nur eine Frage, bis auch der Flash-Player aus den Browsern verschwindet:
      http://www.heise.de/developer/meldun...n-1375503.html

      Kurze Frage zu AIR, auch wenn das nicht unbedingt hier reingehört. Bekommt man da beim Export eine z.B: EXE-Datei, die den Flash-Player enthält und der Anwender nichts installieren muss? Fände diese eine tolle Sache. Bei Camtasia Studio (Screen-Capture-Programm) kann man auch z.B. ein Video zusammen mit einem Player und dem benötigten Video-Codec speichern, so dass der Anwender nur noch einen Doppel-Klick auf die EXE ausführen muss und ein Video abgespielt werden kann.

      Finde es mehr als Schade, wie Flash in die Enge getrieben wird.

      Viele Grüße
    1. Avatar von Martin Schaefer
      Martin Schaefer -
      Hi kalterjava,

      hier ein paar Antworten zu deinen Fragen:

      1. Adobe hat NICHT angekündigt, die Entwicklung des Flash Players einzustellen! Lediglich die Entwicklung des Flash Players für Browser auf Smart Phones wird eingestellt. Es war ein ziemliches PR Desaster, wie Adobe das verkündet hat, weil es sehr viele Menschen misverstanden haben, so wie du offenbar auch.

      2. Bei AIR ist es ein wenig ähnlich wie bei Java oder .NET. Man muss auf dem Rechner ein Framework (oder Runtime Environment) installiert haben ... nämlich AIR (Adobe Integrated Runtime). In dieser Runtime laufen dann die für die AIR Plattform entwickelten Anwendungen. Wenn man wirklich komplett selbstständig laufende Anwendungen mit Adobe Tools entwickeln möchte, dann gibt es (immernoch) das gute, alte Adobe Director, das zwar heute nicht mehr populär ist, aber trotzdem immernoch vertrieben und genutzt wird. Übrigens wird es immernoch weitaus öfter genutzt, als man denkt. Aus der öffentlichen Wahrnehmung ist es allerdings ziemlich vollständig verschwunden. Man kann Flash-Content in Director-Projekten in vielfältiger Weise nutzen, wenn man das möchte. Am Ende kommt dann eine Anwendung raus, die alle benötigten Laufzeitkomponenten enthält.

      Hoffe, das hilft ein wenig,
      Martin
    1. Avatar von Jan-Frederik Stieler
      Jan-Frederik Stieler -
      Hi,
      noch eine kurze Anmerkung zu Flex. Flex soll in Zukunft, zumindest denkst sich Adobe das so von der Apache Foundation verwaltet werden. Apache hat zu dieser Sachlage noch keine Stellungnahme verlautbaren lassen.

      Viele Grüße
    1. Avatar von kalterjava
      kalterjava -
      Hallo Martin,

      ja, das hilft mir sehr - vielen Dank für deine Ausführung.
      Bzgl. des Flash-Players, da schaue ich in die Kristallkugel und sehe da wenig Argumente, warum man am Flash-Player halten soll, wenn Adobe sich verstärkt auf HTML5 fokusieren möchte. Siehe auch die neue Anwendung (Name fällt mir im Moment nicht ein) zu der du auch schon ein Tutorial gemacht hast.

      Zu Flex: Schade! Also ist es nicht möglich einem eine CD zu brennen die mit mitgeben kann und derjenige einfach auf die EXE klicken kann und es abgespielt wird.
      Heißt, der Anwender muss zuerst AIR installieren. Wirklich schade, also auch nicht das was ich suche.

      Ja - Director kenne ich. Die erstellten Programme laufen heute noch. Unverständlich warum man das Konzept nicht weiterverfolgt hat...

      Viele Grüße

      Zitat Zitat von Martin Schaefer Beitrag anzeigen
      Hi kalterjava,

      hier ein paar Antworten zu deinen Fragen:

      1. Adobe hat NICHT angekündigt, die Entwicklung des Flash Players einzustellen! Lediglich die Entwicklung des Flash Players für Browser auf Smart Phones wird eingestellt. Es war ein ziemliches PR Desaster, wie Adobe das verkündet hat, weil es sehr viele Menschen misverstanden haben, so wie du offenbar auch.



      Hoffe, das hilft ein wenig,
      Martin
    1. Avatar von Martin Schaefer
      Martin Schaefer -
      Zitat Zitat von kalterjava Beitrag anzeigen
      Zu Flex: Schade! Also ist es nicht möglich einem eine CD zu brennen die mit mitgeben kann und derjenige einfach auf die EXE klicken kann und es abgespielt wird.
      Du kannst jederzeit eine Flash-Datei über den Standalone Player in einen Projektor konvertieren, der eigentlich alle Flash Laufzeitkomponenten enthalten sollte. Das Problem bei der Vorgehensweise ist aber, dass du keinerlei Kontrolle über den "Anwendungsrahmen" hast. Also Anwendungsfenster und Anwendungsmenü sind schlicht und einfach die des Flash Players.

      Wenn du in Flex dein Projekt so komplilierst, dass alle Projektkomponenten dann auch in der SWF-Datei landen, dann sollte die o.g. Methode auch gehen. Aber so richtig "schön" ist sie nicht, klar.

      Gruß
      Martin
    1. Avatar von kalterjava
      kalterjava -
      Hi Martin,

      der Anwendungsrahmen wäre mir egal. Klappt das auch, wenn eine XML-Datei die swf mit Daten füllt?
      Das wäre eine feine Sache.

      Vg
    1. Avatar von javaDeveloper2011
      javaDeveloper2011 -
      Hi,

      auch wenns ne lokale XML-Datei ist kannst du sie über WebService-Laden.
      Beispiel
    1. Avatar von Martin Schaefer
      Martin Schaefer -
      Das mit dem WebService könnte schwierig werden wegen der Sicherheits-Beschränkungen des Flash Players. Hier wird recht restriktiv zwischen Web und lokalem Dateisystem getrennt und die Verwendung eines WebServices für lokale Dateien erfordert u.a. die Änderung von Flash Player Sicherheitseinstellungen und Flex Compiler Settings.

      Einfacher dürfte da die Verwendung der "file" Klasse speziell für das lokale Dateisystem sein:
      http://help.adobe.com/en_US/FlashPla...stem/File.html

      Gruß
      Martin

      PS: Sorry, hatte übersehen, dass die file Klasse nur in AIR unterstützt wird.
      Lokale Daten sind im Flash Player ein echt nerviges Problem. Director hat halt doch immernoch Vorteile, auch wenn sie weniger werden. Habe im Moment ein Projekt, das ebenfalls komplett von einer XML Datei "gesteuert" wird und wo u.a. eine Flash Tree Komponente damit befüllt wird. Herrlich, wie leicht das geht, nachdem ich mir zuvor in Flex einen abgebrochen hatte.
    1. Avatar von Martin Schaefer
      Martin Schaefer -
      Hier noch zu eurer Erbauung der komplette Lingo Code in Director, um externes XML zu laden und eine Flash Tree Komponente damit zu befüllen:

      Code :
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      
      global gXMLFilePath      -- Kompletter Pfad zur lokalen XML Datei
      property pTree           -- Referenz auf die Flash Tree Komponente
      property pTreeXML        -- Referenz auf XML Objekt in der Flash Komponente
      property pTreeXMLloaded  -- Status des Ladevorgangs der XML Datei
       
      on beginSprite me
        pTree = sprite(me.spriteNum)
        pTreeXML = pTree.newObject("XML")
        pTreeXML.ignoreWhite = true
        pTreeXMLloaded = pTreeXML.load(gXMLFilePath)
      end
       
      on exitFrame me
        if pTreeXMLloaded then
          pTree.dataProvider = pTreeXML
          pTreeXMLloaded = FALSE
        end if
      end
    1. Avatar von kalterjava
      kalterjava -
      Hallo zusammen,

      schade, also geht es nicht mit Flash - ärgerlich.

      Martin, vielen Dank für den Code. Evtl. kann den noch jmd. anderes gebrauchen.
      Ich habe leider auch gar kein Director und bin aus der Lingo-Pogrammierung komplett raus - bzw. war nie wirklich richtig drin

      Und mit Flex würde das gehen, so dass man eine Exe mit XML-Anbindung auf CD brennen und abspielen kann ohne, AIR oder den Flashplayer installiert haben zu müssen? Oder habe ich jetzt da was falsch verstanden.

      Danke euch