Can all flash games be readily ported to adobe air for deployment on ios? For example, if I develop a 2D platform game in AS3, can I simply re-package that for deployment on iOS using Adobe AIR, without needing to modify the codebase?
If possible, how do I do that? Just re-package using the AIR SDK's ADT tool?
In my game, I use the mouse and keyboard to control the character... the hero follows the mouse cursor and left click fires... how will that translate to touch?
I'm new to AIR and haven't even got an iPhone yet. But I'm interested to know the possibilities.
Any help/tips/advice would be greatly appreciated.
Any Flash content can be packaged with AIR to iOS, Android, and BlackBerry.
From Flash Professional, this can be done by changing the Publish Settings:
Targeting AIR 3.3 is optimal, with higher performance for iOS. This AIR SDK can be overlaid to Flash Professional publish settings; or, you can use the ADT command line packager.
Download AIR 3.0 SDK.
Assure JRE, or use the one from Flash Builder.
Execute adt to package your SWF to an IPA:
adt -package -target [ipa-test | ipa-debug | ipa-app-store | ipa-ad-hoc]
-keystore iosPrivateKey.p12 -storetype pkcs12 -storepass qwerty12
-provisioning-profile ios.mobileprovision
HelloWorld.ipa
HelloWorld-app.xml
HelloWorld.swf icons Default.png
It's important to note that all executable code must reside in a single SWF to run on the iOS platform. SWFLoading or any dynamically loaded SWF that executes code is not supported. So, link all your Flash to a single SWF.
Performance is also a factor - heavy animation and vector graphics on enter frame will require optimization for mobile platforms.
Per design, there are many aspects to consider.
Apps run full screen with different resolutions per device. You can leverage elegant systems of dynamically resizing to adapt to these multiple screens or target a specific resolution per app.
If your existing Flash project is not a compatible aspect ratio, you will need to update your layout.
Mouse translates decently to touch, but there are subtle nuances that are not intuitive. For example, hover is generally poor to implement in touch. As well, the mouse cursor does not obstruct the view like holding your hand over the game play area for touch.
Mobile touch devices increase capability of interaction with multi-touch and gestures which may be leveraged.
On-screen keyboard may be activated; however, will take a portion of your viewport and would be difficult to interact with for most games.
You'll want to translate keyboard and mouse events in a way that keeps parity with your game play.
References:
- http://www.adobe.com/devnet/air/articles/packaging-air-apps-ios.html
- http://www.adobe.com/devnet/air/articles/packaging-air-apps-android.html
- http://www.adobe.com/devnet/air/articles/packaging-air-apps-blackberry.html
While it's certainly possible, depending on the game you will likely notice a performance difference between desktop and mobile device, especially if there are lots of vector animations, filters, etc.
If you want perfect performance on mobile devices you should rewrite your application with with something like the Starling Framework.