7 Replies Latest reply on Jul 29, 2013 8:07 AM by sinious

    Seven Year Flash Developer - Need Guidance on Where to Go From Here

    RP_Schmidt Level 1

      I have been a Flash developer working primarily in distance ("e") learning for about seven years now.


      Using Flash, I developed a robust GUI that provides learning content and communicates with SCORM 1.2+ compliant learning management systems.


      That was great; I could develop robust, beautiful product geared to client needs, adapted to their corporate / educational branding and the product performed wonderfully on multiple platforms, even mobile platforms (except iOS).


      Here we are in 2013 and the product that I built up and refined over the past years is now inaccessible to any computing platform except for laptop / desktop computers. No tablets, no phones. What used to be a contiguous experience over multiple platforms is now isolated to work natively on only two platforms (unless it is aided by third-party browsers or applications).


      I won't go on to lament Adobe's short-sighted abandonment of Flash Player development for mobile devices (although I will refer Adobe and their developers to Moore's Law and ask them how long they think it will be before mobile devices are sporting hardware that meets / exceeds the requirement for the full Flash player - my guess is by the latest, mid-2014 - or now, if you own a Microsoft Surface Pro).


      My question is; where do I go from here? How do I take my GUI and restore its cross-platform compability?


      My GUI works with XML to load content and manage LMS details. Previously, that worked just fine.


      Now, however, the only mobile platforms that natively support  the learning content I have spent the last seven years developing are Windows-based devices.


      I revised my GUI to Actionscript 3, but my question remains - what form do I need to port to in order for my product to work as it previously did, i.e. -


      • Fast and efficient
      • Rich media and content support
      • Robust and highly customizeable
      • Cross-platform compatible


      I hate to sound anachronistic (even though it has only been a year) but HTML5 is not a solution. It's not cross-browser; different browsers implement HTML5 differently... and honestly in my experiences visiting websites showcased as the "best" of HTML, their overall performance is patchy and slow.... and I have visited tons of HTML5 sites in my research (many of which still feature / use some Flash in their design).


      Given my current GUI design, I am not even sure it can be ported efficiently to HTML5.


      Can someone point me to tutorials  / guidance of some kind that can help me resolve my situation, or give me recommendations for how I can package my GUI and learning content for, essentially, three separate platforms - desktop, iOS, Android (which was what Flash originally solved for me)?


      Thanks to all for suggestions, links, and any assistance you provide.

        • 1. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
          sinious Most Valuable Participant

          You really need to check out Adobe AIR. It deploys to all the targets you mentioned in one of two flavors, Flex and ActionScript based applications.




          From Flash Pro CS5.5 and on it has been integrated into it (CS5 had iOS-only non-AIR exporting but it isn't recommended). If you want to do it well then grab Adobe Flash Builder Premium or deal with one of the free options like eclipse + FDT plugin, etc.


          You can utilize everything you already have developed. You will probably need to tweak it quite a bit to get great performance on devices. AIR has been making quality apps for all devices and desktops for years. I'm surprised this escaped you.

          • 2. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
            RP_Schmidt Level 1

            Thank you for your reply, sinious.


            I work primarily in Flash Professional (currently using the CC suite) but I've never really had to use Flash Builder or AIR... the content I generally create isn't an "app" per se, it's an interactive multimedia presentation with management and reporting (via XML files).


            It was generally delivered via a web-based learning management system (LMS) like Blackboard, Moodle, etc., so being in app form wouldn't lend itself to supporting the LMS reporting and managment tools.


            It wasn't until just last year that I realized I wouldn't be able to deliver my content to mobile devices using Flash Player any more and started getting feedback from clients about their issues on newer mobile devices (following the stop on Flash Mobile development).


            Right now, my GUI operates by being the "content manager" for the lesson / course content. It parses the XML that directs it to load specific content from a specific location... for example, it loads a lesson from a specific lesson folder, audio from the audio folder / subfolders, videos from a specific folder. It populates a Table of Contents, loads titling, loads closed captioning, loads audio... it populates all of the lesson content.... and passes information to the LMS (bookmarking, completion, etc).


            Just looking at how an iPad application works, my structure takes a big hit right off the bat. I would have to restructure all of the lesson content into clips in the library and set up all of the content to read from the library so that I could publish one SWF to turn into an IPA.


            To me, that seems really cumbersome and bloated.


            With my current structure, the GUI only loads the lesson content the user wants, when they want it. Content not in use just waits on the server until it is called.


            In the iOS structure, the application would have to load ALL of the content to be able to call any of it to the "screen".


            So for example, a course I completed recently (started last year) has five lessons of between eight to twenty-five "frames" of content.


            Each of those frames has animations, interactions, videos, and actionscript for activities.


            The GUI loads each frame, its audio, and its captioning sequentially based on the lesson XML document.


            So if lesson 1 has ten "frames", the XML delineates the frame, file location, audio location, and captioning. The lesson XML is parsed when the GUI is launched with the specified flashvar indicating which lesson is being loaded.


            To replicate that for iOS, it appears as though I would have to load all of the lesson frame content into the GUI SWF library, change the method in which the lesson content is parsed and called, and load it all when the user starts the "app".


            So even if the user wasn't going through lesson two, for example, that content would still be loaded into memory.


            At least, that's how I interpret the structure.


            But again, for me, that is a big development hit. I'm back to developing separate instances of the same product... as though I've gone back in time to before I started developing in Flash, when I had to worry about HTML being coded correctly for different browsers, or whether all of my target browsers would be capable of displaying media in the same way... sort of how HTML5 is behaving today.


            In my opinion, that doesn't make sense; it was a huge waste of time then, and it's still a huge waste of time.


            Flash largely fixed that; one player, multiple browsers.


            Now, here we are again, in the same predicament. Perhaps other developers have the bandwidth to address every audience easily, but I honestly don't. In the end, the hours and dollars don't add up.


            In this situation, I didn't set out to build an app because I didn't need one (at the time).


            Thanks again for your input... I really do appreciate it, even though it pretty much confirms what I had thought from the get-go. I had just hoped there might be a better way of using the huge amount of resources I have already built in structure they are currently in, rather than re-packaging the whole thing.

            • 3. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
              sinious Most Valuable Participant

              I'd start just clearing the air by saying it's not Adobe's fault Apple never wanted Flash on iOS devices. They certainly tried their best to persuade Apple but they wouldn't budge. So Adobe went around them and compiled AIR apps down to armv7. Problem solved.


              You can convert your project into an AIR project by basically flipping a switch. You choose to export to AIR instead of export to Flash Player. You don't NEED to make use of the AIR libraries just to use AIR so I don't really see why this is a big deal. There's an extra XML file with configuration settings like width, height, acceleration mode, app name, etc.. And for flipping that switch, you gain a lot of features you didn't have before from the runtime, which can be captive (embedded). 


              Yes, you can load SWFs into an AIR application on a device. In fact in AIR 3.7 (current stable release) you can even load external SWFs from a server. See the AIR release notes for an example of implementation.


              As for developing the application to handle resolution, this is the most common thing ever done. It's a bit silly to complain you need to develop for a smaller or strange resolution. what other piece of software doesn't need to handle this? If you plan on continuing with software development, change is definitely something you need to adopt sooner than later. Moore's law in full effect, I do believe devices will do just what you said, come full circle and utilize full scale applications and perhaps Flash Player if Adobe chooses.


              Bottom line is there's very few technologies allowing a single codebase to compile for multiple targets. Of those available, nothing is as easy or robust as the Flash multimedia engine and workflow with AIR export. Embrace it.

              • 4. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
                RP_Schmidt Level 1

                Thank you again for your reply, sinious.


                I knew you could load multiple SWFs for their assets (as SWCs), although I did not know you could load external SWFs. That is very good information.


                More importantly, the external SWFs can include ABC, which is also good information. It would still require me to change how my GUI handles the SWFs, but that would still help reduce the memory profile at load time. So thank you again for that information.


                I'm not sure what you mean by "convert your project into an AIR project by basically flipping a switch". My computer-based training products are made up of between 50 and 300 SWFs, each SWF with its own animations, activities, code, etc., all loaded and managed by a single master GUI. Even with the ability to load external SWFs with their code, I still have to re-write the structure that loads the content and the methods it uses to do so. So not exactly flipping a switch.


                Re: resolution... I never made any mention of resolution at all in my initial post or my reply. Resolution has never been a consideration for me, as Flash is eminently scaleable. Perhaps you are thinking of another discussion you are involved in?


                I agree that Actionscript and the Flash engine are very flexible, given that you start your project with the consideration of all of the platforms you will be developing for. If I were starting a project now, it is a great environment. Game development, in particular, would be extremely simple.


                However, in my situation, my only platform / target was to ensure the product operated as intended utilizing the Flash player.


                So taking that product, its supporting structures and files and re-purposing it to work on several platforms, despite how flexible the codebase is, is daunting for me... especially as I never intended for the products to use anything other than the Flash player.


                Again I appreciate your reply and the additional information. Thanks again!

                • 5. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
                  sinious Most Valuable Participant

                  What I mean is you can still continue to deploy how you already are in Flash Player for desktops and full OS tablets. Flash player continues to get updated (today in fact, 11.8, AIR 3.8).


                  The AIR comments I'm making are how you would branch your efforts toward actual "apps" for devices. I've converted many desktop "Flash Pro" built kiosks to AIR apps. I use all of the existing ActionScript. There was no real learning curve to utilize AIR.


                  The only thing you may have to do on mobile with AIR is change a few simple habits, like how you load content off the filesystem. Instead of specifying a filename in a string to using the AIR File class.


                  e.g.: Your Flash Player code may look like:


                  var loader:Loader = new Loader();

                  var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);

                  // standard error/success contentLoaderInfo event listeners here

                  loader.load(new URLRequest("swfs/SecondarySwf.swf"), loaderContext);


                  In AIR on a device you just use the File class to assure the location you load from:


                  var loader:Loader = new Loader();

                  var loaderContext:LoaderContext = new LoaderContext(false, ApplicationDomain.currentDomain, null);

                  // standard error/success contentLoaderInfo event listeners here

                  loader.load(new URLRequest(File.applicationStorageDirectory.resolvePath("my.swf").url, loaderContext);


                  The only change is the 4th line. You can use the File class to do the work of finding the applications storage directory and load from the .url property (or .nativePath). This is important on devices.


                  I think if you test converting your GUI system into an AIR app you'll be pleasantly surprised how easy it is to deploy a real app rather than requiring the device to run the content in a browser. You'll need some code to resize your app to the device and may need to tone down excessive animations but the vast majority of your code is fine just how it is. You'll get full use of device memory, GPU, etc without the browser overhead. You'll also get a LOT more functionality you don't have access to (filesystem, etc). Give AIR a try.

                  1 person found this helpful
                  • 6. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
                    Captain N. Level 1

                    The trouble with HTML5 will always be the steps companies like Apple

                    will take to make it suck. They don't want HTML5 to be competitive with

                    their app store. The only company that doesn't seem to have an incentive

                    to nerf HTML5 is Google, so maybe there is hope if they can win enough

                    marketshare to get everyone else in line behind HTML5, but we'll see.


                    That said, what's preventing you from publishing your Flash work as an

                    iPad/iPhone/Android app? This seems viable (though Adobe appears to be

                    pulling resources away from that area).


                    For what it's worth, I've been looking at Xamarin for mobile app store

                    work, and will keep a firm eye on canvas based solutions (like CreateJS)

                    for highly custom HTML5/browser work, and Backbone.js for DOM based

                    HTML5 application work.


                    Kevin N.

                    • 7. Re: Seven Year Flash Developer - Need Guidance on Where to Go From Here
                      sinious Most Valuable Participant

                      The main reason Apples own front page had a special note on why they felt iOS devices shouldn't have Flash mentioned the future of HTML5 and their full belief in it. They were mostly referring to the widespread web usage of Flash at the time, video and banners.


                      They knew the power of canvas but they were careful not to call it out as a reason. If you're not a seasoned game developer it can really make you scratch your head before choosing to learn a completely new way to develop animations rather than just using Flash and a timeline which does what you need with ease.


                      Device support is actually one of the absolute best things yanking the many HTML5 recommendation paths along. The main reason why is devices support HTML5 and CSS3 to a greater extent more than desktops do. Apple is one of the companies that built in extensive support for even unapproved (not at recommendation level) paths of HTML5.


                      It's no wonder Phonegap was scooped up by Adobe. I've used it quite a bit and it really helped make my device enabled back ends look, work and feel like a real app.