Posts Tagged: AS3


7
Jun 11

New version of Playbook ScratchPad live

ScratchPad screenshotAn updated version of my ScratchPad app for Blackberry Playbook has just gone live. It has a couple more features, including resizable brush and image export.


28
May 11

Mockito gotcha

I recently had a bit of a shock while reviewing someone’s code, finding the following line in one of their tests:

verify().that(sut.update());

Where: sut is their System Under Test and verify is the part of the Mockito framework.

Exercise for the reader: What’s wrong with this picture?

The answer: You cannot expect Mockito to verify that something was called on anything that isn’t a mock! How the hell is it supposed to know?

At least, if attempting to stub a method of a non-mock, you’ll get a handy error telling you not to be so damn silly. But, in this case, the verify will always work. So the test will pass, but it isn’t actually verifying anything! Where do I start with the bad? This is the worst kind of test, since it provides a false sense of security on the robustness of a system. Thankfully, all the tests in this codebase had called their System Under Test either sut, _sut or SUT, so it was pretty easy to get Hudson to mark a build as unstable if it finds such madness.


11
May 11

A winner is me

So, in my first steps in tablet development, I cracked out a simple app for the new Blackberry Playbook and got a free Playbook! It’s a very nice piece of hardware. You can see my app (a very simple doodling application, called ScratchPad) here.


9
Apr 11

Take two tablets and call me in the morning

Well, it’s been a while. Having spent the last 8 months working on the YouView set top box platform, I’ve been so busy that I wasn’t even sure my site was still up. And now that I’ve dived headlong into the tricky world of embedded systems development, I wanted to starting playing with other platforms out there. The first two that recently caught my eye were Apple iOS (specifically the iPad) and the new Blackberry PlayBook.

I was keen to see what the application development process is like for these two platforms, especially for Flash Developers and how the two Big Tablets, iPad and PlayBook, measurement up as potential target platforms for the crazy ideas in my head that I’d want to build. So, I made the first steps at development for both.

iPad
Now that Adobe is ‘allowed’ to pursue iOS as a target platform for AIR, via its cross-compiler again, I went through the process of signing up as an iOS developer, jumping through the various other hoops and getting my first ‘hello world’ app onto my iPad. The whole process is a lot more complicated than it probably could be, but then, the same could be said of device development at YouView – this is the nature of such platforms, they are emerging technologies and, as such, are moving targets and simply not like the desktop machines we are all used to developing for. I have to say though, I’m impressed with the recent leaps in performance and functionality Adobe has made with AIR 2.6 for iOS – it leaves Packager in the dust.

PlayBook
Perhaps because the tool chain for PlayBook development feels more like developing for YouView, I was more comfortable with developing for the Playbook and managed to crack out a very simple app, getting in App World in a matter of a couple of days.

Now that I’ve stepped well outside the desktop comfort zone, I have been playing for a while with resource constrained device development, hardware acceleration of Flash content and developing an unhealthy obsession for writing clean, memory/rendering performance optimal code. I hope to bring some of this to projects for iOS and Playbook, as well as share what I’ve learned over the last year.


7
Jul 10

How to embed an entire asset SWF and get symbols from it

The problem:

You want to embed an entire SWF, full of assets, into a class and retrieve individual symbols from it – but you don’t want to have to embed each asset individually.

The solution:

SWFAsset – a couple of lines of code and you’re away.


22
Jun 10

How to correct 3-D projection on stage resize

The problem:
You're using Flash 10's native 3-D API and notice the projection goes a little skewiff when resizing the window.

The solution:
You need to reset the stage's projection centre on stage resize, like so...

var centre:Point = new Point(stage.stageWidth/2, stage.stageHeight/2);
root.transform.perspectiveProjection.projectionCenter = centre;


4
Jun 10

Migrating to Flex SDK 4

In moving to compiling projects with the new Flex SDK 4, in noticed a couple of gotchas to do with the EMBED metatag that I thought I'd better share:

Runtime shared libraries
If you're like me and want to embed assets in your project with the EMBED Flex metatag, so you can manage and update things easily, there's a an extra compiler parameter you must add, in order for your project to compile properly:

--static-link-runtime-shared-libraries=true

This is already added as a new default parameter to the new version of FlashDevelop. But if you're planning to build projects from outside of FlashDevelop, you must add this to your compiler string. Otherwise, the compiler will think you have uninitialised constants and warn you so.

Embedding fonts
Using the EMBED metatag (or runtime loading) for fonts is the sensible way forward. The amount of projects I've seen where you need to build from an FLA file full of fonts you need to install that you can't find is crazy. With Flex SDK 4, you'll need to add an extra attribute to your embed tag for fonts, called 'embedAsCFF':

[Embed(source='myfont.ttf', fontName='MY_FONT', fontWeight='regular', unicodeRange='U+0020-U+0040,U+0041-U+005A', mimeType='application/x-font', embedAsCFF='false')]
public static const MY_FONT :Class;


2
Jun 10

FlashSize – simple browser resizing

How to allow SWFs to display at 100% width/height in your browser - but enforce a minimum width and height, in case of a smaller browser window size than you've designed for.

Until recently, I'd used other Flash/browser resize managers when I needed to ensure a SWF is embedded in HTML at 100% width and height, but with support for a minimum width and height setting. But I recently needed a solution the didn't depend on external JavaScript, due to not having control of the page the SWF is embedded in.

With my simple FlashSize script, all you need do is call:

import com.spikything.utils.FlashSize;
FlashSize.setup(minWidth, minHeight);