AdenForshaw.com Behind the curtain of Affiliate Marketing

12Aug/110

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

5May/094

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";
}

Tagged as: 4 Comments
28Jan/0944

AS3 TextField buttonMode or useHandCursor?

Unfortunatly, no method exits on the TextField class in AS3 as it does not extend the Sprite class, which contains the buttonMode property.

This is most apparent with the annoying problem of having a TextField inside your Sprite/MovieClip you;re trying to use as a button, where even after setting buttonMode = true on the button, rolling over the textfield inside the button will revert the Cursor back to default.

To get round this simply use the mouseChildren = false property on your Sprite/Movieclip button.

i.e.

myTextFieldContainingSprite.buttonMode = true;

myTextFieldContainingSprite.mouseChildren = false;

myTextFieldContainingSprite.addEventListener(MouseEvent.MOUSE_DOWN ...... etc

16Dec/080

Quick Tip: Embeding european special characters…

To save you embeding characters you don't need and wasting file size on a project that might use european characters, heres a list of characters you can just manually include.

This covers French, German, Italian,  Portugese, and Spanish.

ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛßàáâã äåæçèéêëìíîïñòóôõöùúûüŒœ¿

22Nov/081

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
{

    1. this.dispatchDialogComplete();
  1. //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

2Sep/080

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

Tagged as: , No Comments