Using QR codes in AS3
Very simple really, google does most of the heavy lifting. Simply load this url as you would to load an external image:
http://chart.apis.google.com/chart?cht=qr&chl=[YOUR-URL]&chs=120x120
Replacing the [YOUR-URL] with a url, i.e. http://bbc.co.uk - and the 120x120 with your own width and height
Example:
var myLoader:Loader = new Loader();
myLoader.load(new URLRequest("http://chart.apis.google.com/chart?cht=qr&chl=http://bbc.co.uk&chs=150x150"));
Would dynamically load a QR code for bbc.co.uk, with dimensions 150 by 150, and load it into the Loader instance myLoader, and would look like this
Problem with Flash Player 9.0.28 or below?
Try adding this little line in your document class constructor to create the ADDED_TO_STAGE constant as this was not present in players 9.0.28 or below.
Bit of a hair puller this one.
if (Event.ADDED_TO_STAGE == null)
{
Event["ADDED_TO_STAGE"] = "addedToStage";
}
AS3 onKeyDown, Key Down listener
Overview
Another big question i get asked is how do you detect the user actioning the keyboard? It's slightly more complicated than AS2, where you could just attach a listener directly to the Key class singleton.
Because of this I've seen loads of odd ways that people have tried to implement keyboard detection in AS3, from making a textfield that sits onto of everything receiving focus, to a textfield stashed in every class.
By far the simplest way is to add a listener straight to the stage e.g.
//call onKeyboardDown on key down
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyboardDown);
If you're trying to put this in a class that extends DisplayObject like MovieClip, then you'll have to wait until the instance has been added to another DisplayObject that's already attached to the stage directly or in a tree. i.e. after a addChild(myDisplayClass) has been called.
You don't have to worry about checking keyCode's against numbers now either. The Keyboard class is full of static variables relating to practically every key on the keyboard. i.e.
protected function onKeyboardDown(event:KeyboardEvent):void
{
-
- this.dispatchDialogComplete();
//test key code against statics in the Keyboard class
if(event.keyCode == Keyboard.ENTER)
{
}
}
Here's a clump of code to help explain:
It's a basic LoginDialog that you'd code generate like this
var dialog = new LoginDialog();
dialog.x = 100// arbitrary
dialog.y = 100// arbitrary
this.addChild(dialog);
//as the stage variable inside the dialog now exists, call draw() to add key listener to stage
dialog.draw();
Example: try pressing enter after adding some values
Quick Tip: AS3 Function parameters…..
In old AS1 / AS2 you could get away with not passing all the parameters to a function, AS3 on the other hand has none of it.
But what you can do is asssign default values for each parameter so you don't need to pass a value it.
i.e.
function hideObject(child:DisplayObject,fadeOut:Boolean=false):void
{
if(fadeOut)
{
//fadeout Tweener code
} else {
child.visible = false;
};
}
hideObject(target);//would instantly hide target
hideObject(target , true);//would override default value and so fade