Talking about Ball: Revamped game, Actionscript 3, Flash, Game development and Users contributions.
This is the second part of Tim Edelaar‘s step by step AS3 translation of Flash game creation tutorial.
Now it’s time to translate to AS3 the content of Flash game creation tutorial – part 2 which I suggest you to read before this one.
The style of the coding is the same of the previous part, with actionscript written directly in the timeline with the critical parts commented.
The bounds
//import some important flash libraries.
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;
//initializes variables.
var speed:Number = 0.08;
var xspeed:Number = 0;
var yspeed:Number = 0;
var friction:Number = 0.98;
var gravity:Number = 0.04;
var thrust:Number = 0.8;
var key_left:Boolean = false;
var key_right:Boolean = false;
var key_up:Boolean = false;
var key_down:Boolean = false;
//Checks if the player presses a key.
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
//Lets the function main play every frame.
addEventListener(Event.ENTER_FRAME,Main);
//create the function main.
function Main(event:Event){
CheckKeys();
MoveHero();
CheckCollision();
}
//create the function KeyDown.
function KeyDown(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is pressed.
key_left = true;
}
if(event.keyCode == 39){ //checks if right arrowkey is pressed.
key_right = true;
}
if(event.keyCode == 38){ //checks if up arrowkey is pressed.
key_up = true;
}
if(event.keyCode == 40){ //checks if down arrowkey is pressed.
key_down = true;
}
}
function KeyUp(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is released.
key_left = false;
}
if(event.keyCode == 39){ //checks if right arrowkey is released.
key_right = false;
}
if(event.keyCode == 38){ //checks if up arrowkey is released.
key_up = false;
}
if(event.keyCode == 40){ //checks if down arrowkey is released.
key_down = false;
}
}
function CheckKeys(){
if(key_left){
xspeed -= speed;
}
if(key_right){
xspeed += speed;
}
if(key_up){
yspeed -= speed*thrust;
}
if(key_down){
yspeed += speed*thrust;
}
}
function MoveHero(){
hero.x += xspeed;
hero.y += yspeed;
xspeed *= friction;
yspeed += gravity;
yspeed *= friction;
hero.rotation += xspeed;
}
function CheckCollision(){
//Checks if left border hits the wall.
if(wall.hitTestPoint(hero.x-(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if right border hits the wall.
if(wall.hitTestPoint(hero.x+(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if upper border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y-(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if lower border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y+(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
}
The coin – 1st attempt
//import some important flash libraries.
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;
//initializes variables.
var speed:Number = 0.08;
var xspeed:Number = 0;
var yspeed:Number = 0;
var friction:Number = 0.98;
var gravity:Number = 0.04;
var thrust:Number = 0.8;
var key_left:Boolean = false;
var key_right:Boolean = false;
var key_up:Boolean = false;
var key_down:Boolean = false;
//Checks if the player presses a key.
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
//Lets the function main play every frame.
addEventListener(Event.ENTER_FRAME,Main);
//create the function main.
function Main(event:Event){
CheckKeys();
MoveHero();
CheckCollision();
}
//create the function KeyDown.
function KeyDown(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is pressed.
key_left = true;
}
if(event.keyCode == 39){ //checks if right arrowkey is pressed.
key_right = true;
}
if(event.keyCode == 38){ //checks if up arrowkey is pressed.
key_up = true;
}
if(event.keyCode == 40){ //checks if down arrowkey is pressed.
key_down = true;
}
}
function KeyUp(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is released.
key_left = false;
}
if(event.keyCode == 39){ //checks if right arrowkey is released.
key_right = false;
}
if(event.keyCode == 38){ //checks if up arrowkey is released.
key_up = false;
}
if(event.keyCode == 40){ //checks if down arrowkey is released.
key_down = false;
}
}
function CheckKeys(){
if(key_left){
xspeed -= speed;
}
if(key_right){
xspeed += speed;
}
if(key_up){
yspeed -= speed*thrust;
}
if(key_down){
yspeed += speed*thrust;
}
}
function MoveHero(){
hero.x += xspeed;
hero.y += yspeed;
xspeed *= friction;
yspeed += gravity;
yspeed *= friction;
hero.rotation += xspeed;
}
function CheckCollision(){
//Checks if left border hits the wall.
if(wall.hitTestPoint(hero.x-(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if right border hits the wall.
if(wall.hitTestPoint(hero.x+(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if upper border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y-(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if lower border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y+(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Now do the same for our coin.
if(coin.hitTestPoint(hero.x,hero.y,true)){
coin.x = Math.random()*510+20; //Changes the x of the coin to a random number between 20 and 530.
coin.y = Math.random()*360+20; //Changes the y of the coin to a random number between 20 and 380.
}
}
The coin – 2nd attempt
//import some important flash libraries.
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;
//initializes variables.
var speed:Number = 0.08;
var xspeed:Number = 0;
var yspeed:Number = 0;
var friction:Number = 0.98;
var gravity:Number = 0.04;
var thrust:Number = 0.8;
var key_left:Boolean = false;
var key_right:Boolean = false;
var key_up:Boolean = false;
var key_down:Boolean = false;
//Checks if the player presses a key.
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
//Lets the function main play every frame.
addEventListener(Event.ENTER_FRAME,Main);
//create the function main.
function Main(event:Event){
CheckKeys();
MoveHero();
CheckCollision();
}
//create the function KeyDown.
function KeyDown(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is pressed.
key_left = true;
}
if(event.keyCode == 39){ //checks if right arrowkey is pressed.
key_right = true;
}
if(event.keyCode == 38){ //checks if up arrowkey is pressed.
key_up = true;
}
if(event.keyCode == 40){ //checks if down arrowkey is pressed.
key_down = true;
}
}
function KeyUp(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is released.
key_left = false;
}
if(event.keyCode == 39){ //checks if right arrowkey is released.
key_right = false;
}
if(event.keyCode == 38){ //checks if up arrowkey is released.
key_up = false;
}
if(event.keyCode == 40){ //checks if down arrowkey is released.
key_down = false;
}
}
function CheckKeys(){
if(key_left){
xspeed -= speed;
}
if(key_right){
xspeed += speed;
}
if(key_up){
yspeed -= speed*thrust;
}
if(key_down){
yspeed += speed*thrust;
}
}
function MoveHero(){
hero.x += xspeed;
hero.y += yspeed;
xspeed *= friction;
yspeed += gravity;
yspeed *= friction;
hero.rotation += xspeed;
}
function CheckCollision(){
//Checks if left border hits the wall.
if(wall.hitTestPoint(hero.x-(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if right border hits the wall.
if(wall.hitTestPoint(hero.x+(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if upper border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y-(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if lower border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y+(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Now do the same for our coin.
if(hero.hitTestObject(coin)){
coin.x = Math.random()*510+20; //Changes the x of the coin to a random number between 20 and 530.
coin.y = Math.random()*360+20; //Changes the y of the coin to a random number between 20 and 380.
}
}
The coin – 3rd attempt
//import some important flash libraries.
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;
//initializes variables.
var speed:Number = 0.08;
var xspeed:Number = 0;
var yspeed:Number = 0;
var friction:Number = 0.98;
var gravity:Number = 0.04;
var thrust:Number = 0.8;
var key_left:Boolean = false;
var key_right:Boolean = false;
var key_up:Boolean = false;
var key_down:Boolean = false;
//Checks if the player presses a key.
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp);
//Lets the function main play every frame.
addEventListener(Event.ENTER_FRAME,Main);
//create the function main.
function Main(event:Event){
CheckKeys();
MoveHero();
CheckCollision();
}
//create the function KeyDown.
function KeyDown(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is pressed.
key_left = true;
}
if(event.keyCode == 39){ //checks if right arrowkey is pressed.
key_right = true;
}
if(event.keyCode == 38){ //checks if up arrowkey is pressed.
key_up = true;
}
if(event.keyCode == 40){ //checks if down arrowkey is pressed.
key_down = true;
}
}
function KeyUp(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is released.
key_left = false;
}
if(event.keyCode == 39){ //checks if right arrowkey is released.
key_right = false;
}
if(event.keyCode == 38){ //checks if up arrowkey is released.
key_up = false;
}
if(event.keyCode == 40){ //checks if down arrowkey is released.
key_down = false;
}
}
function CheckKeys(){
if(key_left){
xspeed -= speed;
}
if(key_right){
xspeed += speed;
}
if(key_up){
yspeed -= speed*thrust;
}
if(key_down){
yspeed += speed*thrust;
}
}
function MoveHero(){
hero.x += xspeed;
hero.y += yspeed;
xspeed *= friction;
yspeed += gravity;
yspeed *= friction;
hero.rotation += xspeed;
}
function CheckCollision(){
//Checks if left border hits the wall.
if(wall.hitTestPoint(hero.x-(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if right border hits the wall.
if(wall.hitTestPoint(hero.x+(hero.width-5)/2,hero.y,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if upper border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y-(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Checks if lower border hits the wall.
if(wall.hitTestPoint(hero.x,hero.y+(hero.height-5)/2,true)){
hero.x = 275;
hero.y = 200;
xspeed = 0;
yspeed = 0;
}
//Now do the same for our coin.
if(hero.hitTestPoint(coin.x,coin.y,true)){
coin.x = Math.random()*510+20; //Changes the x of the coin to a random number between 20 and 530.
coin.y = Math.random()*360+20; //Changes the y of the coin to a random number between 20 and 380.
}
}
And that’s all for today.
Download source codes and thank Tim Edelaar for the contribution
Never miss an update! Subscribe, and I will bother you by email only when a new game or full source code comes out.