Hi,
I’m currently migrating a project from haxe target flash to openfl in order to be able to compile to other target.
I know that it’s not magical. And I need to go step by step.
I first succeded to compile by using some haxe flags to add all my swf libs (haxeflag name="-swf-lib)
It generate a swf of 3.3mo, I added a custom preloader but it started to show only when 2.4Mo were already loaded (so this is a bit late)
To fix this I thought that it was due to the -swf-lib haxe flag that doesn’t fit the openfl asset flow. So I started to use the Assets class. But there is a lot of code to change and the swf haxelib seems to prevent all this changes and also enable the html5 and C++ compilation. So I’m trying it.
I made a simple test
project.xml :
<app main="Main" file="main" path="bin" preloader="preloader.Preloader" />
<window background="#6090BE" fps="24" />
<window width="800" height="480" unless="mobile" />
<window orientation="landscape" vsync="false" antialiasing="0" if="cpp" />
<haxelib name="openfl" />
<haxelib name="actuate" />
<haxelib name="swf" />
<assets path="assets/preloader" include="*" if="web" />
<assets path="assets/swf" include="*" />
<library path="assets/swf/main.swf" preload="true" generate="true"/>
main.hx :
class Main extends Sprite
{
public function new()
{
super();
Lib.current.stage.scaleMode = StageScaleMode.NO_SCALE; Lib.current.stage.align = StageAlign.TOP_LEFT;
var mc = new BusyCursor(); mc.x = 100; mc.y = 100; mc.play(); addChild(mc);
}
}
this is working fine!
But if I replace BusyCursor which is a MovieClip by ButtonNext ( a SimpleButton )
It doesn’t compile
I have these compilation errors :
bin/flash/haxe/assets/ButtonNext.hx:23: characters 2-21 : Not enough arguments
bin/flash/haxe/assets/ButtonNext.hx:12: lines 12-25 : Missing super constructor call
And looking at the generated code :
class ButtonNext extends SimpleButton {
public function new () {
if (!SWF.instances.exists ("libraries/main/main.swf")) {
SWF.instances.set ("libraries/main/main.swf", new SWF (Assets.getBytes ("libraries/main/main.swf")));
}
var swf = SWF.instances.get ("libraries/main/main.swf");
var symbol = swf.data.getCharacter (389);
super (cast symbol);
}
}
We can see that only one parameter is given to the super call whereas the format.swf.instance.SimpleButton is looking for 2 parameters.
Am I doing something wrong? Does the SimpleButton class is not supported?
Thank you for helping