Question

Est-il possible d'utiliser Flex Framework et ses composants sans utiliser MXML? Je connais assez bien ActionScript, et je n'ai pas envie de jouer avec un nouveau langage XML uniquement pour obtenir une interface utilisateur simple. Quelqu'un peut-il fournir un exemple consistant en un fichier .as pouvant être compilé (idéalement via FlashDevelop, bien que le simple fait de savoir comment procéder avec le SDK Flex soit également correct) et utilisant Flex Framework? Par exemple, afficher un bouton Flex ouvrant une alerte serait parfait.

Si ce n'est pas possible, quelqu'un peut-il fournir un fichier MXML minimal qui amorce une classe AS personnalisée qui a ensuite accès au kit SDK Flex?

Était-ce utile?

La solution

J'ai fait un simple bootstrap similaire à Borek (voir ci-dessous). J'aimerais bien me débarrasser du fichier mxml, mais si je ne l’ai pas, je n’obtiens aucun des thèmes standard fournis avec Flex (haloclassic.swc, etc.). Est-ce que quelqu'un sait comment faire ce que Theo suggère et applique toujours les thèmes standard?

Voici ma méthode d'amorçage simplifiée:

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");
        }
    }
}

Voici les mises à jour nécessaires pour l'utiliser avec Flex 4:

main.mxml

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

MonApplication.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!");
        }
    }
}

Autres conseils

Ceci est une application très simple qui effectue uniquement l’amorçage de base en MXML. C'est le 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>

Ceci est le 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);
}

REMARQUE: la réponse ci-dessous ne fonctionnera réellement que si vous initialisez d'abord la bibliothèque Flex. Il y a beaucoup de code impliqué pour faire cela. Voir les commentaires ci-dessous ou d'autres réponses pour plus de détails.

La classe principale n'a même pas besoin d'être en MXML, il suffit de créer une classe qui hérite de mx.core.Application (ce qui correspond à la classe MXML avec un noeud racine <mx:Application> compilé):

package {

  import mx.core.Application;


  public class MyFancyApplication extends Application {

    // do whatever you want here

  }

}

De même, tout code ActionScript compilé avec le compilateur mxmlc - ou même l'outil de création de Flash CS3 - peut utiliser les classes Flex. Il suffit simplement de les rendre disponibles dans le chemin de classe (en se référant au SWC du framework en utilisant <=> ou en pointant sur un dossier contenant la source lorsque vous utilisez l'une ou l'autre). Si la classe de document n'hérite pas de <=>, vous risquez de rencontrer des problèmes, car certaines choses dans la structure supposent que c'est le cas.

Oui, il vous suffit d’inclure le fichier flex swc dans votre chemin de classe. Vous pouvez trouver flex.swc dans le flex sdk dans frameoworks / lib / flex.swc

modifier: une dernière chose: si vous utilisez Flex Builder, vous pouvez simplement créer un nouveau projet ActionScript, qui fera essentiellement la même chose que ci-dessus.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top