Domanda

È possibile utilizzare Flex Framework e componenti senza utilizzare MXML? Conosco ActionScript abbastanza decentemente, e non ho voglia di scherzare con un nuovo linguaggio XML solo per avere una semplice interfaccia utente. Qualcuno può fornire un esempio costituito da un file .as che può essere compilato (idealmente tramite FlashDevelop, anche se solo dire come farlo con Flex SDK va bene) e usa Flex Framework? Ad esempio, mostrare semplicemente un pulsante Flex che apre un avviso sarebbe perfetto.

Se non è possibile, qualcuno può fornire un file MXML minimo che eseguirà il bootstrap di una classe AS personalizzata che avrà quindi accesso a Flex SDK?

È stato utile?

Soluzione

Ho fatto un semplice bootstrap simile a Borek (vedi sotto). Mi piacerebbe sbarazzarmi del file mxml, ma se non ce l'ho, non ottengo nessuno dei temi standard forniti con Flex (haloclassic.swc, ecc.). Qualcuno sa come fare ciò che Theo suggerisce e ha ancora applicato i temi standard?

Ecco il mio metodo di bootstrap semplificato:

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

Ecco gli aggiornamenti necessari per usarlo con 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!");
        }
    }
}

Altri suggerimenti

Questa è un'app molto semplice che esegue solo il bootstrap di base in MXML. Questo è il 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>

Questo è 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);
}

NOTA: la risposta seguente non funzionerà effettivamente se non si inizializza prima la libreria Flex. C'è molto codice coinvolto per farlo. Vedi i commenti qui sotto o altre risposte per maggiori dettagli.


La classe principale non deve nemmeno essere in MXML, basta creare una classe che eredita da mx.core.Application (che è come viene compilata comunque una classe MXML con un nodo <mx:Application>):

package {

  import mx.core.Application;


  public class MyFancyApplication extends Application {

    // do whatever you want here

  }

}

Inoltre, qualsiasi codice ActionScript compilato con il compilatore mxmlc - o anche lo strumento di creazione di Flash CS3 - può utilizzare le classi Flex, è solo una questione di renderle disponibili nel percorso di classe (facendo riferimento al framework SWC quando utilizzando <=> o puntando a una cartella contenente l'origine quando si utilizza uno dei due). A meno che la classe di documenti non erediti da <=> potresti riscontrare qualche problema, dal momento che alcune cose nel framework presumono che sia così.

Sì, devi solo includere il flex swc nel tuo percorso di classe. Puoi trovare flex.swc in flex sdk in frameoworks / lib / flex.swc

modifica: un'altra cosa: se stai usando Flex Builder puoi semplicemente creare un nuovo progetto ActionScript, che essenzialmente farà lo stesso come sopra.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top