Talking about Actionscript 3, Flash and Game development.
In the previous step I showed you how to create a simple “move-the-ball” game using AS3 classes.
Now it’s time to introduce some more elements… some coins to pick up.
Obviously the coin must have its own class, called coin.as
, saved in the same path as the other ones.
This is the fully commented coin.as
file
package {
import flash.display.Sprite;
import flash.events.Event;
public class coin extends Sprite {
// variables used in this class
private var dist_x:int;
private var dist_y:int;
private var distance:int;
// main function
public function coin() {
// calling place_coin function.
// this function randomly places the coin in the field
place_coin();
// checking for collisions at every frame
addEventListener(Event.ENTER_FRAME, check_collisions);
}
private function check_collisions(e:Event) {
// determining the distance between the hero and the coin
// notice how do I refer the hero
dist_x = x - as3circle(root).circle_hero.x;
dist_y = y - as3circle(root).circle_hero.y;
distance = dist_x*dist_x+dist_y*dist_y;
// 1809 = (hero radius + coin radius)^2
// this way I don't have to perform a square root to distance
if (distance < 1089) {
// if the hero picks up a coin, then move it elsewhere
place_coin();
}
}
private function place_coin() {
x = Math.floor(Math.random()*400)+50;
y = Math.floor(Math.random()*300)+50;
}
}
}
Also notice in the main file as3circle.as
how coins are created at lines 9-12
package {
import flash.display.Sprite;
import flash.events.Event;
public class as3circle extends Sprite {
public var keyboard_input:keys;
public var circle_hero = new circle;
public var number_of_coins = 4;
public function as3circle() {
for (var i=1; i<=number_of_coins; i++) {
var ingame_coin = new coin;
addChild(ingame_coin);
}
addChild(circle_hero);
circle_hero.init();
var keyboard_sprite = new Sprite();
addChild(keyboard_sprite);
keyboard_input = new keys(keyboard_sprite);
stage.addEventListener(Event.ENTER_FRAME,on_enter_frame);
}
public function on_enter_frame(event:Event) {
if (keyboard_input.is_left()) {
circle_hero.apply_force(-1,0);
}
if (keyboard_input.is_right()) {
circle_hero.apply_force(1,0);
}
if (keyboard_input.is_up()) {
circle_hero.apply_force(0,-1);
}
if (keyboard_input.is_down()) {
circle_hero.apply_force(0,1);
}
}
}
}
The remaining class files circle.as
and keys.as
remain unchanged.
This is the result:
Download the source code and enjoy.
Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.