The text editor of choice of our Rails team is TextMate. Our Flash team is a bit divided between Eclipse+FDT and FlexBuilder. I wanted to see if TextMate is a good alternative for building Flash/ActionScript projects.
There are a couple of good sources on using TexMate for ActionScript projects, but it’s a little fragmented and sometimes outdated. I found pixelate’s blog post and Simon’s blog very useful.
1. TextMate
First of all, you need have MacroMates’ TexMate of course. If you don’t already own a copy, you can download a 30-day-trial.
2. ActionScript3 bundle
Simon Gregory did some fine work by creating a TextMate bundle for ActionScript3. The most important things that the bundle handles are auto-completion and auto-import. You can download it directly from his blog, or fetch it with Git or SVN.
To install via Subversion:
export LC_CTYPE=en_US.UTF-8 cd ~/"Library/Application Support/TextMate/Bundles/" svn co http://svn.textmate.org/trunk/Review/Bundles/ActionScript\ 3.tmbundle osascript -e 'tell app "TextMate" to reload bundles'
To install via Git:
cd ~/"Library/Application Support/TextMate/Bundles/" git clone git://github.com/simongregory/actionscript3-tmbundle.git "ActionScript 3.tmbundle" osascript -e 'tell app "TextMate" to reload bundles'
3. Flex SDK
The actual building of your project is done by the free Flex 3 SDK. Download it and move the extracted folder into your /Developer/SDKs/ folder. The SDK has to be accessible throughout your whole system. You can do this by adding it to the PATH variable in the /etc/profile file. Open terminal and type:
sudo mate /etc/profile
Then add the folder “/Developers/SDKs/flex_sdk_3/bin” to the file and save it. It should look something like this:
PATH="/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/mysql/bin:/Developer/SDKs/flex_sdk_3/bin"
4. TextMate settings
Before we can start the ActionScript fun we have to setup a few things in TextMate. Open TextMate and select File→New Project. Click on the info button located in the bottom of the Project Drawer. Add two shell variables so that the ActionScript Bundle knows where to look for your files:
TM_FLEX_FILE_SPECS src/Main.as TM_FLEX_OUTPUT bin/Main.swf
We also need to let TextMate know where the Flex SDK is located. Go to TextMate→Preferences→Advanced→Shell Variables and add a new global variable:
TM_FLEX_PATH Developer/SDKs/flex_sdk_3
5. Hello World
With all that out of the way, we can finally start working on a ActionScript project: Hello World. Create a folder on your system that will hold this project. Drag this folder to TextMate’s Project Drawer. Create two new folders named bin and src in your project folder. Then create a new file in the src folder and name it Main.as. It should look something like this:
package { import flash.display.Sprite; import flash.text.TextField; [SWF( backgroundColor='0xFFFFFF', frameRate='30', width='200', height='200')] public class Main extends Sprite { private var textField: TextField; public function Main() { textField = new TextField(); textField.text = "Hello World."; addChild(textField); } } }
Choose Bundles→ActionScript 3→Build to build your project. A terminal window pops up which runs the Flex SDK to build your project. You can find the resulting Main.swf file in your bin folder. Yay!
Notes
If you want to build Flash Player 10 specific stuff (like me) you have to let the Flex SDK know. Open /Developer/SDKs/flex_sdk_3/frameworks/flex-config.xml and set the target-player tag to 10.0.0
<target-player>10.0.0</target-player>
The easiest way to work with libraries, the so called SWC files, in this setup is to drop them directly into /Developer/SDKs/flex_sdk_3/frameworks/libs folder. That way the Flex SDK has no problem finding them.



September 27th, 2009 at 9:28 pm
I’m pretty psyched about Project Sprouts (http://projectsprouts.org/). Sprouts offers a very rails-like experience for Flex. I wrote a post on this a while ago: http://micheljansen.org/blog/entry/499
September 27th, 2009 at 10:07 pm
Hi Michel, just read your post and Project Sprouts looks very promising indeed. Going to check it out. Thanks for the info!