An introduction to ActionScript 3.0 – week 5

Week 5 of the ActionScript intro is a practical exercise-writin’ affair with lots of assistance provided. When I first delivered this material last year I wanted to stop talking about programming and get the students actually using ActionScript and getting the hang of writing and debugging their code, so I switched from slides to A4 hand-outs with exercises. Unfortunately, many of them hadn’t had enough practice or paid enough attention in class, so for the second class I wrote a document explaining where many students were going wrong when attempting the exercises in class – how to correctly use brackets, functions with/without parameters and return types, pushing and popping data to/from arrays etc.

In this bundle, I’ve reversed the order so that Lesson 1 is the “where-did-I-go-wrong” part, and Lesson 2 is the exercises to try out your ActionScript skills – feel free to take on the exercises first if you’re feeling confident.

Introduction to ActionScript 3 - Week 5

Download link: An Introduction to ActionScript 3.0 – Week 5 (both lessons combined)
Audience: Beginners who know a little about variables, functions, objects and how to perform some basic programming math.
Format: PDF
Content License: This material is released under a creative commons non-commercial attribution share-alike 3.0 license by me (r3dux) and come with no guarantee of correctness, fitness for purpose or anything of the sort.

Feedback, as always, is very welcome.

ActionScript 3: How to use Event Listeners to Call Functions with Parameters

By default, you can’t. But there’s a way around it so you can by creating a custom event class! In this case, I’m going to deal with extending the Timer class to create a custom timer class with additional properties that we can use to pass data to functions.

The Problem

To demonstrate the problem, consider the following simple timer code:

This will work just fine – it’ll call the greet function once to output “Hello!” three seconds after the timer was started. But what if I wanted to say “Hello, SOME_NAME_STRING”, like “Hello, Bob!”, well you might think you could just do something like this:

But you CAN’T! ActionScript 3 doesn’t allow you to pass parameters other than the TIMER event (i.e. the timer going off) to functions which are bound to a timer. And even changing the order of the parameters, or using a line such as the one below simply won’t work:

The Solution

Now, there are things you can do like use intermediate functions which might call a second function, or using anonymous in-line functions (there’s a good forum thread on it here if you want to investigate that route) – but there’s a better way of doing it: We can just create our own custom Timer class!

For this simple text example we could use something like this:

Custom Timer Class (String version) Code:

And then we could use our custom timer like this:

Flash File Code:

This will print out “Hello, Bob!” just fine using the additional property in our custom timer class! :)

Now that’s all well and good, but most people want to modify some manner of DisplayObject (Sprite, MovieClip etc.) when the timer fires, so for that we can just modify our custom timer class to expect a DisplayObject like this:

Custom Timer Class (DisplayObject version) Code:

Flash File Code:

Note: The above code assumes you’ve created a symbol with the class name “Circle” – to do so just draw a circle on the stage, stab F8 to convert it to a symbol, and check the Export for ActionScript checkbox and enter Circle as the class name before hitting the [OK] button.

Just like our String example, adding the additional property to our custom timer class allows us to bind the timer to a specific object which we can then manipulate from the function called when the timer fires! So in this case, two seconds after the timer starts our fadeIn function will be called and our circle instance will have its alpha property set to 1 (so it’s fully opaque – hence visible!).

Wrap Up

I came up against this problem whilst helping out some of my ActionScript students who are first-time coders, so wanted to code more Procedurally than Object-Oriented. When you use OOP there are better ways of going about things, but this is still a useful trick to know when you’re dealing with Event Listeners and Timers. I hope it helps out anyone who’s been banging their head against this problem! Cheers!

ActionScript 3.0: An Introduction to ActionScript 3.0 in Flash CS4 – Week 3

We’re still finding our feet a little here in Week 3 of CUFDIG302A – Author Interactive Sequences, so we’re looking at functions, symbols, instances and the start of using event listeners with functions to control things on the screen.

If you’ve not gone through any of the previous weeks slides and you’re new to coding, then take a step back to and take it order – it’ll really help. Otherwise enjoy!

Oh, and the class has moved from just one 3-hour session per week to a 3-hour session plus a 2-hour session – so expect more updates from now until the end of the course in a couple of weeks time, at which point we might decide to take on some more complex ActionScript for a more involved course…

ActionScript 3.0 Slides - Week 3 - Lesson 1

As usual, the download link to the slides along with some legal gubbins regarding their use is after the break, so jump on in and assert your control!

Continue reading ActionScript 3.0: An Introduction to ActionScript 3.0 in Flash CS4 – Week 3