Gebruik maken van AsWing/AS3 met Haxe
Deze eenvoudige tutorial laat zien hoe de krachtige AsWing GUI bibliotheek wordt gebruikt in Haxe.
Voorbereiden van de externe Haxe Class bestanden
- Download hier de laatste versie van AsWing/AS3;
- Pak het ergens in een map uit;
- Ga naar de
AsWing/bin
folder en verander de naam vanAsWing.swc
inAsWing.zip
; - Pak
AsWing.zip
dan uit met je favoriete unzipper.
Je beschikt nu over 2 bestanden: catalog.xml
en library.swf
. Het gaat ons om library.swf
.
- Ga met een command prompt naar de directorie waar
library.swf
staat; - Voer dan uit:
$ haxe --gen-hx-classes library.swf
Dit zal alle externe Haxe Class bestanden aanmaken in de subfolder hxclasses
, die nodig is om AsWing in Haxe te gebruiken.
Let op : enkele van de gegenereerde definities dienen te worden aangepast, nl. op die plekken waar AS3 een '...' operator wordt gebruikt in de parameterlijst (addRow in org.aswing.ext.FormRow.hx
bijvoorbeeld). Overal waar de compiler hierover klaagt, moet de '...' operator worden vervangen door het benodigde aantal optionele parameters.
Hier is een voorbeeld:
//AS3: addRow(...columns): FormRow { //Haxe: addRow(?p1: Dynamic, ?p2: Dynamic, ?p3: Dynamic, ?p4:Dynamic, ?p5: Dynamic): FormRow {
Update 24 mei 2009 : Met Haxe 2.0.3 onder Windows XP zijn geen problemen meer gevonden met resterende '...' operatoren. YMMV
Zet een testproject op
Laten we nu een nieuw Haxe project opzetten om te testen:
- Maak een nieuwe projectfolder en kopieer de hele gegenereerde
org
folder structuur er naartoe; - Maak ook een kopie van
library.swf
in de projectfolder; deze bibliotheek wordt door de compiler in het project opgenomen.
Maak een Hello.hx
als volgt:
import org.aswing.JButton; import org.aswing.JFrame; import org.aswing.geom.IntDimension; import flash.Lib; import flash.display.Sprite; import flash.display.StageScaleMode; class Hello extends Sprite { public function new() { super(); //create a frame var frame : JFrame = new JFrame( this, "HelloApp" ); frame.setSize(new IntDimension( 200, 120 ) ); //create a button var button:JButton = new JButton("Hello from AsWing in Haxe!"); //add the button to the frame frame.getContentPane().append(button); //add the frame to the stage Lib.current.stage.addChild(this); this.stage.scaleMode = StageScaleMode.NO_SCALE; //show it! frame.show(); } public static function main() { new Hello(); } }
Maak een
Hello.hxml
als volgt:-swf Hello.swf -swf-header 600:400:21:ffffff -main Hello -swf-lib library.swf -swf-version 9
Compileer het nu als volgt:
$ haxe Hello.hxml
Als alles goed is gegaan, zou er nu een Flash bestand
Hello.swf
moeten zijn die een frame weergeeft met een button erin, met daarop de tekst: "Hello!".
Opmerking
Ik heb Haxe v1.19 moeten gebruiken, de oudere versies deden het niet. Er was een foutmelding ten tijde van het genereren van de AsWing Haxe Class bestanden.
Tip
Gebruik GUIBuilder van AsWing om complexe interfaces mee te ontwerpen. Sinds versie 1.4.2 kan deze ook Haxe code genereren! GUIBuider is hier te vinden.