I'm trying to use the new ASC2.0 compiler in the AIR SDK 3.7, but I seem to be running into a problem where it cannot detect my preloader class.
If I use the non-ASC2.0 compiler, it recognizes and compiles the Preloader class declared in the Frame metadata tag in my Main class, like so:
[Frame(factoryClass = "Preloader")]
But as soon as I compile it with ASC2.0, it disregards the Frame metadata and just tries to compile the Main class and assume that it HAS to be a subclass of Sprite / MovieClip (which it does not necessarily have to be when it is Preloaded with a Frame metadata tag), so it fails to compile.
If someone can confirm this that'd be great, been spinning my wheels on this for a while. Thanks!
Apparently, it is no longer supported. There was a similar question asked here:
ASC2.0 and Frame metatag
The new solution seems to be this:
You have to manually add the compiler arguments for the
-frame
data.However, to get this working, you have to setup your project a bit differently from the
[Frame]
metadata technique.Now with ASC2.0, instead, you will set your Preloader class as the Document class.
Here's a few things you must setup:
(This makes it possible for your Main content to embed on Frame #2)
-frame=AnyFrameLabelYouWant,YourMainClass
-swf-version=18
(though I think 17 will work with ASC2.0 as well...)NOTE: Now that I think about it, maybe it's possible to inject
/** @mxmlc */
JavaDoc comments to give the instructions to the compiler, but I didn't try this yet. That may be a workaround for the lack of Metadata support in the ASC2.0 compiler. (edit: I tried this once and this feature only seems to work with the "Build" toolbar button in FlashDevelop, which only compiles the currently focused file)