Hi Fréderic, Just to be clear, the main goal of Royale is to provide a Flex-like application development workflow, but not to be 100% backward compatible with Flex. Flex itself was an attempt to abstract away the intricacies of Flash and similarly, Royale is not focused at all on providing Flash APIs.
So, the migration of a Flex app to Royale involves either using the Emulation components as much as possible (still a work in progress) or rewriting the UI to use Royale component sets like Jewel. Where your application has a direct dependency on Flash, that code will definitely need to be changed. But if you have good separation of concerns between your UI and your business logic, you should find that your business logic should be almost 100% re-usable. And that last sentence is why Royale should be a lower-effort way to get off of Flash/AIR than rewriting and debugging your business logic. So, if your app has custom SWCs containing source code written by you, the SWC should be re-usable in Royale if it isn’t dependent on Flash. If there are Flash dependencies, you will need to tweak the code to remove the Flash dependency. The error about BitmapAsset is probably because there are embedded assets. Royale does not support embedding of graphical assets at this time. Not sure if we will in the short term as it isn’t clear there is a significant technical advantage to embedding like there was in Flash. A Flex SWC cannot be used “as-is” since all Royale SWCs must contains transpiled JS files from the source AS files. So you must re-compile all of your SWCs with the Royale Compiler. And fix any issues around Flash dependencies and workaround any Flex dependencies we haven’t supported yet in Royale. I have not used VSCode myself, but you’ll have to set up library projects for each of your SWCs, get them to compile cleanly, and then try compiling the main app. I’ve been migrating TourDeFlex to Royale. I found that there were a couple of common embedding patterns. One was “inline-MXML” as in: <mx:Image source=”@Embed(‘assets/foo.png’)” /> I just removed the embedding for now: <mx:Image source=”assets/foo.png” /> The other common pattern was in AS such as: [Embed(“assets/foo.png”)] var fooPNG:Class; I think all instances I found were being assigned as the source for an Image component, so it was simple enough to transform that to: var fooPNG:String = “assets/foo.png”; I thought about trying to get the compiler to auto-convert these patterns, but I’m not sure it would be worth the effort. Anyway, try to set up your library projects and remove Flash dependencies and eventually it should all compile and start to run without Flash. I’m sure you’ll have lots more questions. Don’t be afraid to ask. HTH, -Alex From: Piotr Zarzycki <[email protected]> Reply-To: "[email protected]" <[email protected]> Date: Wednesday, September 26, 2018 at 6:48 AM To: "[email protected]" <[email protected]> Subject: Re: Library SWC (library path) I don't think so - at least if you would like to transpile your code to JS. That's good that you are getting this kind of errors. It means that probably compiler is trying to transpile and cannot pass some code. I believe you have two paths: 1) Rewrite your UI part of app to Royale and transpile AS3 code 2) You can use Emulation components [1] to make proper build of your app with transpilation to JS. - From that point you could slowly make UI looks better. I bet that no one tried to Emulate FileStream yet! :) If something doesn't exists here [2][3] you probably can add it to make your app satisfied. You can generate API report (here instruction [1]) to see what actually you are using in your app, look on the list in [2][3] and fill gaps by making pull requests. [1] https://github.com/apache/royale-asjs/wiki/emulation-components<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fwiki%2Femulation-components&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=0UYx%2Fq%2BZ1iP1XDQ%2Bf7r7AnLmn7%2BAx%2BeF7eT6J3uY6bk%3D&reserved=0> [2] https://github.com/apache/royale-asjs/blob/develop/frameworks/projects/MXRoyale/src/main/royale/MXRoyaleClasses.as<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fblob%2Fdevelop%2Fframeworks%2Fprojects%2FMXRoyale%2Fsrc%2Fmain%2Froyale%2FMXRoyaleClasses.as&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=FPLsJmxbH%2FyIurZa0rhfECNo8oN%2FOC%2BgHNrU98bQVyc%3D&reserved=0> [3] https://github.com/apache/royale-asjs/blob/develop/frameworks/projects/SparkRoyale/src/main/royale/SparkRoyaleClasses.as<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2Fapache%2Froyale-asjs%2Fblob%2Fdevelop%2Fframeworks%2Fprojects%2FSparkRoyale%2Fsrc%2Fmain%2Froyale%2FSparkRoyaleClasses.as&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=vXx7fonz%2B9dRQfJIbFQVvmFSfFBfMZt9osaOPcISU8A%3D&reserved=0> Thanks, Piotr śr., 26 wrz 2018 o 15:39 Fréderic Cox <[email protected]<mailto:[email protected]>> napisał(a): If I do it with source-path I'm getting around 3K errors like "The definition of base class BitmapAsset was not found or Call to a possibly undefined method FileStream etc... so I think that answers your last question :-) I was expecting to be able to use the existing Flex SWC's, is this not possible? On Wed, Sep 26, 2018 at 3:33 PM Piotr Zarzycki <[email protected]<mailto:[email protected]>> wrote: This is probably why it's not working. I'm not an expert in that, but first what I would tried is create Royale library. However instead linking library, can you link source code ? "source-path": [ "src", "mylibrary/src" ], Is this pure AS3 code without dependency to Flash ? Thanks, Piotr śr., 26 wrz 2018 o 15:21 Fréderic Cox <[email protected]<mailto:[email protected]>> napisał(a): I tried external-library-path but if I do not use js-library-path I get compile errors "Access of possibly undefined property .." EnalityFlexLibrary is an existing Flex library. On Wed, Sep 26, 2018 at 2:57 PM Piotr Zarzycki <[email protected]<mailto:[email protected]>> wrote: Hi Frederic, Have you tried external-library-path ? There is some explanation how js-library-path working [1]. However EnalityFlexLibrary is a Flex library or did you create Royale swc ? [1] http://apache-royale-development.20373.n8.nabble.com/Difficulties-with-using-in-project-JS-version-of-Royale-swc-tp5999p6015.html<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fapache-royale-development.20373.n8.nabble.com%2FDifficulties-with-using-in-project-JS-version-of-Royale-swc-tp5999p6015.html&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=X81J0CoavI3JEFjneg%2FJvFTZCXYtCgFqtZmdkOrOhIQ%3D&reserved=0> Thanks, Piotr śr., 26 wrz 2018 o 14:49 Fréderic Cox <[email protected]<mailto:[email protected]>> napisał(a): Can anyone help me on this? Why is this not working? The path to the SWC is correct. <?xml version="1.0" encoding="utf-8"?> <js:Application xmlns:fx="http://ns.adobe.com/mxml/2009<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fns.adobe.com%2Fmxml%2F2009&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=dY9HjzEBCNavsbm8on0JOhqb2wWMhsoPAJqkyPmCqoc%3D&reserved=0>" xmlns:js="library://ns.apache.org/royale/express<https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fns.apache.org%2Froyale%2Fexpress&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=rubUeugJqDHyeTrfTJKs23UEtQMW8NeWI9gT9YDIRj8%3D&reserved=0>" applicationComplete="applicationCompleteHandler(event)"> <fx:Script> <![CDATA[ import org.apache.royale.events.Event; import com.enality.utils.ServerUtil; // import com.enality.EnalityData; private function applicationCompleteHandler(evt:Event):void{ // alert(EnalityData.rootURL); ServerUtil.setServerSettings(); // alert(EnalityData.rootURL); } ]]> </fx:Script> <js:initialView> <js:View> <js:Label text="Hello EnalityCMS!" x="100" y="100" /> </js:View> </js:initialView> </js:Application> { "compilerOptions": { "source-map": true, "targets": [ "JSRoyale" ], "js-library-path": [ "/Users/frederic/Desktop/Exuvis/CityFashion/EnalityFlexLibrary/bin/EnalityFlexLibrary.swc" ], "library-path": [ "/Users/frederic/Desktop/Exuvis/CityFashion/EnalityFlexLibrary/bin/EnalityFlexLibrary.swc" ], "html-output-filename": "index.html" }, "files": [ "src/EnalityCMS.mxml" ] } Error I'm getting = using SWC: /Users/frederic/Desktop/Exuvis/CityFashion/EnalityFlexLibrary/bin/EnalityFlexLibrary.swc Could not find file for class: com.enality.utils.ServerUtil Error: File not found: com.enality.utils.ServerUtil On Wed, Sep 26, 2018 at 2:37 PM Fréderic Cox <[email protected]<mailto:[email protected]>> wrote: However I can't seem to reference code from inside the .swc. Here is my asconfig.json file: { "compilerOptions": { "source-map": true, "targets": [ "JSRoyale" ], "library-path": [ "/Users/frederic/Desktop/Exuvis/CityFashion/EnalityFlexLibrary/bin/EnalityFlexLibrary.swc" ], "html-output-filename": "index.html" }, "files": [ "src/EnalityCMS.mxml" ] } On Wed, Sep 26, 2018 at 12:44 PM Fréderic Cox <[email protected]<mailto:[email protected]>> wrote: OK I found it, info about this on https://github.com/BowlerHatLLC/vscode-nextgenas/wiki/asconfig.json#library-path<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub.com%2FBowlerHatLLC%2Fvscode-nextgenas%2Fwiki%2Fasconfig.json%23library-path&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=Ta%2BwH3fe5os2JhmdoMSsxJ361lCBrpyfNBP%2FlbTFvX0%3D&reserved=0> On Wed, Sep 26, 2018 at 12:12 PM Fréderic Cox <[email protected]<mailto:[email protected]>> wrote: Hi, I've managed to create my first Hello World app using Apache Royale. Now I'm wondering how can I link existing .swc's? I have a bunch of library projects which have assets, .as code files and .mxml code files. Is it possible to link those .swc files in an Apache Royale project (I'm using VSCode)? I want to be able to use the API's from the library in my new ApacheRoyale project so I can keep using the same libraries I used when working in Flash Builder with Flex for AIR. Thanks for the info! Best regards, Fréderic -- Piotr Zarzycki Patreon: https://www.patreon.com/piotrzarzycki<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=d1e8r%2BNj3vmPceksMOhb%2B%2FUapJ%2BTZE%2FKIHt3cKVXLlM%3D&reserved=0> -- Piotr Zarzycki Patreon: https://www.patreon.com/piotrzarzycki<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=d1e8r%2BNj3vmPceksMOhb%2B%2FUapJ%2BTZE%2FKIHt3cKVXLlM%3D&reserved=0> -- Piotr Zarzycki Patreon: https://www.patreon.com/piotrzarzycki<https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C9b86923da4504bdb44d508d623b6c099%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636735665153216547&sdata=d1e8r%2BNj3vmPceksMOhb%2B%2FUapJ%2BTZE%2FKIHt3cKVXLlM%3D&reserved=0>
