Frage

Ist es möglich, die Flex-Framework und Komponenten zu verwenden, ohne MXML? Ich weiß, Actionscript ziemlich anständig, und nicht das Gefühl, wie gerade mit einigen neuen XML-Sprache Herumspielen dort einige einfache Benutzeroberfläche zu erhalten. Kann jemand ein Beispiel nennt eine .as-Datei aus, die kompiliert werden kann (im Idealfall über FlashDevelop, obwohl nur zu sagen, wie es mit dem Flex-SDK zu tun, auch ist ok) und nutzt den Flex-Framework? Zum Beispiel zeigt nur eine Flex-Taste, die eine Warnung wäre perfekt aufspringt.

Wenn es nicht möglich ist, kann jemand eine minimale MXML-Datei bereitzustellen, die eine benutzerdefinierte AS Klasse Bootstrap wird, die dann Zugriff auf das Flex SDK hat?

War es hilfreich?

Lösung

Ich habe eine einfache Bootstrap ähnlich wie Borek (siehe unten). Ich würde gerne von der MXML-Datei, um loszuwerden, aber wenn ich es nicht haben, ich habe nicht alle Standard Themen erhalten, die mit Flex kommen (haloclassic.swc, etc). Weiß jemand, wie man das tun, was Theo schlägt vor, und haben immer noch die Standard-Themen angewendet?

Hier ist meine vereinfachte Bootstrapping-Methode:

main.mxml

<?xml version="1.0" encoding="utf-8"?>
<custom:ApplicationClass xmlns:custom="components.*"/>

ApplicationClass.as

package components {
    import mx.core.Application;
    import mx.events.FlexEvent;
    import flash.events.MouseEvent;
    import mx.controls.Alert;
    import mx.controls.Button;

    public class ApplicationClass extends Application {
        public function ApplicationClass () {
            addEventListener (FlexEvent.CREATION_COMPLETE, handleComplete);
        }
        private function handleComplete( event : FlexEvent ) : void {
            var button : Button = new Button();
            button.label = "My favorite button";
            button.styleName="halo"
            button.addEventListener(MouseEvent.CLICK, handleClick);
            addChild( button );
        }
        private function handleClick(e:MouseEvent):void {
            Alert.show("You clicked on the button!", "Clickity");
        }
    }
}

Hier sind das erforderliche Updates, es zu benutzen mit Flex 4:

main.mxml

<?xml version="1.0" encoding="utf-8"?>
<local:MyApplication xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:local="components.*" />

MyApplication.as

package components {
    import flash.events.MouseEvent;
    import mx.controls.Alert;
    import mx.events.FlexEvent;
    import spark.components.Application;
    import spark.components.Button;

    public class MyApplication extends Application {
        public function MyApplication() {
              addEventListener(FlexEvent.CREATION_COMPLETE, creationHandler);
        }
        private function creationHandler(e:FlexEvent):void {
            var button : Button = new Button();
            button.label = "My favorite button";
            button.styleName="halo"
            button.addEventListener(MouseEvent.CLICK, handleClick);
            addElement( button );
        }
        private function handleClick(e:MouseEvent):void {
            Alert.show("You clicked it!", "Clickity!");
        }
    }
}

Andere Tipps

Dies ist eine sehr einfache Anwendung, die nur den Grund Bootstrapping in MXML tut. Dies ist der MXML:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="onCreationComplete()">
  <mx:Script source="Script.as" />
</mx:Application>

Dies ist der Script.as:

import mx.controls.Button;
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.core.Application;

private function onCreationComplete() : void {
  var button : Button = new Button();
  button.label = "Click me";
  button.addEventListener(MouseEvent.CLICK, function(e : MouseEvent) : void {
    Alert.show("Clicked");
  });

  Application.application.addChild(button);
}

Hinweis: Die unten Antwort wird nicht wirklich funktionieren, wenn Sie die Flex-Bibliothek zuerst initialisieren. Es gibt eine Menge Code, das zu tun beteiligt. Siehe die Kommentare unten oder andere Antworten für weitere Details.


Die Hauptklasse muss nicht einmal in MXML sein, nur eine Klasse erstellen, die von mx.core.Application erbt (was eine MXML-Klasse mit einem <mx:Application> Wurzelknoten wird als ohnehin kompiliert):

package {

  import mx.core.Application;


  public class MyFancyApplication extends Application {

    // do whatever you want here

  }

}

Auch jeder Actionscript-Code mit dem mxmlc Compiler kompilierte - oder sogar Authoring-Tool Flash CS3 - kann die Flex-Klassen verwenden, es ist nur eine Frage der Herstellung ist in dem Klassenpfad zur Verfügung (im Rahmen SWC beziehen, wenn mxmlc mit oder zeigt auf einen Ordner, um die Quelle enthält, bei der Verwendung von entweder). Es sei denn, die Dokumentenklasse von mx.core.Application erbt könnte man bis zu einem gewissen Schwierigkeiten geraten in, obwohl, da einige Dinge im Rahmen davon aus, dass dies der Fall ist.

Ja, man muss nur die Flex SWC in Ihrem Classpath aufzunehmen. Sie können flex.swc in dem Flex-sdk in frameoworks / lib / flex.swc

finden

edit: Noch eine Sache. Wenn Sie Flex Builder verwenden, können Sie einfach ein neues Actionscript-Projekt erstellen, die im Wesentlichen wie oben das gleiche tun

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top