AIR 3.5 and 3.6 SDK for mobile require TLF Text to be merged into code.
Because I just spent the last full day dealing with this issue (without finding an answer on any forum) I thought I would share this so that you don't have to bang your head against the wall. You probably found this page because your mobile project worked in AIR 3.2 or AIR 3.4 but when you try to publish your iPhone app or Android app using AIR 3.5 or AIR 3.6 SDK it breaks.
This is the full error that I was getting when trying to publish from Flash CS6 using AIR 3.6:
Warning: Ignoring 'secure' attribute in policy file from http://fpdownload.adobe.com/pub/swz/crossdomain.xml. The 'secure' attribute is only permitted in HTTPS and socket policy files. See http://www.adobe.com/go/strict_policy_files for details.
TypeError: Error #1009: Cannot access a property or method of a null object reference. at startMeUp/firstRunAnim()[/Users/speedclimb/Documents/cjm/Flash/Mobile/MobileDev/STARTME/startMeUp.as:229] at startMeUp()[/Users/speedclimb/Documents/cjm/Flash/Mobile/MobileDev/STARTME/startMeUp.as:210]
Neither of these AS3 Warnings/ Errors make sense nor have any info to point you to a resolution. Don't try and troubleshoot AS3 Error 1009 The problem is that Apple now requires that all of this is embedded. Adobe complied with the changes from Apple and because of this when creating a mobile app using AIR 3.5 SDK or AIR 3.6 SDK with TLF Text you must have the .swc "Merged into code".
In order to compile with AIR 3.5 or 3.6 SDK you have to do one of two things. You can change all of your TLF Text into "Classic" text. This works but is not ideal because then you lose all of the great formatting features of TLF Text. The better solution is that you change the "Default Linkage" in your ActionScript settings to "Merged into code". Sounds complicated but it's not. Go to File >> ActionScript Settings, when the dialog window pops up make sure you are on the "Library Path" tab and then change the drop down from "Runtime Shared Library" to "Merged into code". Below is a screenshot showing how to solve this AIR 3.5+ SDK compiler issue. The important areas are highlighted in red.
Change the Default linkage from "Runtime shared library (RSL)" to "Merged into code"
I hope this saves you 16 hours of brain damage trying to compile your code using AIR 3.5 or AIR 3.6 SDK.
As always Happy Flashing (for mobile)
Curtis J. Morley
The Q3 results are in and it shows that the Android is becoming the phone of the Millenials. The Nielsen Company released the finding as part of it's ongoing research into Smartphone adoption.
Millenials Choose Android
So the question is why is Android gaining more adoption among Millenials? Do any of these factors play into it.
Faster Speed (4G up to 10x faster)
Choice of Carrier (AT&T, Sprint, Verizon, T-Mobile, Etc...)
Choice of Hardware (HTC EVO 4G, Droid, DroidX, and over 15 more)
Customizable Interface (Homescreen interface, widgets, and more)
Cstomizable ROM (Make your phone be and do whatever you want. Not locked)
Better Camera (8+ mp on most current Androids)
Video Conferencing without need for a Wifi connection
Larger Screen (4.3-inch WVGA LCD)
8 person Wifi hotspot (Connect your laptop, ipad, and even iphone via wifi via android)
Streaming HD YouTube and other Video
More Free apps than iPhone
the ever controversial Flash enabled in the browser.
Let me know your thoughts. Why are Millenials buying Android?
Google has finally caught up with the likes of FaceBook, Flickr, Photobucket, MorgueFile, Webshots, Picasa, and Smugmug. I knew it wouldn’t take them long. The new API sounds like the perfect solution for Flash YouTube Mashups. Web based applications like BrainHoney, SlideShare, Sprout and worldtv will be able to integrate the solution fairly effortlessly now and keep the look and feel that they want. I imagine that more online and Flash based video editing applications like Jumpcut, Aviary, and RichFLV will be developed.
An article on InternetNews.com has the following to say:
“The new APIs will enable developers to create "chromeless" Flash players with a customizable interface built on YouTube software, but without the YouTube branding. Instead, YouTube is asking developers to place a "Powered by YouTube" button on the pages of their sites that contain the API-enabled video players.
Developers will be able to upload videos and responses to YouTube from any device, including cell phones and other handhelds. The APIs will also allow developers to augment the video content on their sites with metadata, such as titles, descriptions, ratings and comments.”
Article/press release on the subject.
To get into the details of the YouTube API
To find out about the features including the chromeless player and get a look at who Geoff Stearns the SwfObject Genius is.
This is great news for all of us Flashers in the worlds 🙂 Thanks Jasson and Thanks YouTube.
As always - Happy Flashing
Curtis J. Morley
SWFObject.addVariable() in AS3
SWFObject is the standard for embedding Flash files into HTML. If you haven't used it run on over to Geoff Stearns site and download yourself a heapin' helpin' of some SWFObject. If you are feeling especially adventuresome and want to test out the latest features in the new SwfObject 2.0 then head over to the SwfFix development blog. SWFObject eliminates the need to click on the Flash piece on a website before being able to interact with it, it has plug-in detection, it can be used with popular blogging software on sites such as this, and there are plugins for Dreamweaver and as a publish setting right in Flash. You should be using this for every website you build. As of the 15th of February (I wonder what they were doing on Valentines Day) you can even download an SWFObject Adobe Air app for generating the proper code to embed your SwfObject into your website. It employs the new SWFObject 2.0. Or for quick and easy access just use the web version to generate your swfObject code
Now that you are totally sold and will never build anything Flash without it, you may want to inject variables (FlashVars) into your swf. The methods are different for AS2 and AS3. It is quite easy, yet different in each of these versions of ActionScript. You simply throw the following code into the HTML and then ...
Swf Audio is not loaded Please check your path. this should be an audio control built in flash.</div>
var so = new SWFObject("SoundControlTest2.swf", "audioControl", "240", "24", "8", "#EFECDD");
...then in your Document class (or on the MainTimeline if you are not using a Document Class) you will need to reference the parameters property of the loaderInfo property like this:
myTextBox.text = this.loaderInfo.parameters.audioURL;
In AS2 you only can access the variable directly on the mainTimeline using something like this:
myTextBox.text = audioURL;
Hope this helps you (and your users) have a better Flash experience on the web.
As always Happy Flashing.
Curtis J. Morley