Hooman's Portfolio  
 Contact  
 Hootris  
 Dinky Chase  
 Hooman to Eves  
 Eves To Hooman  
Hotdog Guitar ActionScript 3.0

Demo Showing Scaling and Rotation

Click on the stage below to do some hotdog moves with my guitar. Use the arrow keys to rotate and move the guitar, or press plus and minus to enlarge and shrink the guitar.

The code for this demo is presented at the bottom of the page - switch the guitar for a spaceship and you almost have yourself an asteroids game. If you were creating a game or an application, you could prerender all the different rotations and scales ahead of time to speed things up. In this simple example, I am rendering everything in real time.


Note: This demo uses key.as, a simple object I created for reading input from the keyboard.

package {

import flash.display.Sprite;
import flash.display.Loader;
import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.net.URLRequest;
import flash.events.Event;
import flash.events.MouseEvent;


public class Guitar extends Sprite {


var loader : Loader = new Loader();
var guitar : Sprite = new Sprite();
var guitarB : Bitmap;
var guitarBD : BitmapData;


public function Guitar() : void {

// load the guitar
loader.load(new URLRequest("GuitarRed.png"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
}


// initialize everything once guitar is loaded
public function loaded(e : Event) {

// create bitmap of guitar
guitarBD = Bitmap(loader.content).bitmapData;
guitarB = new Bitmap(guitarBD);
guitarB.smoothing = true;
// make guitar centered in the sprite
guitarB.x = -(guitarB.width / 2);
guitarB.y = -(guitarB.height / 2);
guitar.addChild(guitarB);
addChild(guitar);
// center the guitar on the stage
guitar.x = stage.stageWidth / 2;
guitar.y = stage.stageHeight / 2;
// add keyboard handler
key.initKey(stage);
// also make the guitar draggable by the mouse
guitar.addEventListener(MouseEvent.MOUSE_DOWN, function (e : MouseEvent) { guitar.startDrag() } );
guitar.addEventListener(MouseEvent.MOUSE_UP, function (e : MouseEvent) { guitar.stopDrag() } );
// add enter frame handler
stage.addEventListener(Event.ENTER_FRAME, mainLoop);
}


// main loop
public function mainLoop(e : Event) {

var radians : Number;

if (key.k[key.LEFT]) { guitar.rotation -= 5; }
else if (key.k[key.RIGHT]) { guitar.rotation += 5; }

if (key.k[key.UP]) {
radians = ((guitar.rotation + 180) * Math.PI) / 180;
guitar.x += 5 * Math.cos(radians);
guitar.y += 5 * Math.sin(radians);
}
else if (key.k[key.DOWN]) {
radians = (guitar.rotation * Math.PI) / 180;
guitar.x += 5 * Math.cos(radians);
guitar.y += 5 * Math.sin(radians);
}

if ((key.k[key.PLUS] || key.k[key.EQUAL])&& guitar.scaleX <= 2.5) {
guitar.scaleX += 0.1;
guitar.scaleY += 0.1;
}
else if ((key.k[key.MINUS] || key.k[key.UNDERSCORE])&& guitar.scaleX > 0.5) {
guitar.scaleX -= 0.1;
guitar.scaleY -= 0.1;
}

if (guitar.x < 0) guitar.x = 0;
else if (guitar.x > stage.stageWidth) guitar.x = stage.stageWidth;

if (guitar.y < 0) guitar.y = 0;
else if (guitar.y > stage.stageHeight) guitar.y = stage.stageHeight;
}

}

}

Latest Work:

Applications
Content Management System
Local Developer
Manager's Advantage
Manager's Advantage Support

Games • ActionScript 3
Hootris
Dinky Chase (not finished)

Demos • ActionScript 3
Loading and Saving XML
Physics - 2D Collision
Physics - 1D Collision
Scroller
Filters Demo
Transition Demo
Tween Demo
Psychedelic Stage Light
Video Player
Hotdog Guitar
Filters and Gradients
Keyboard Demo
Hello World
Simple Button

Previous Work:

Applications • Turbo Pascal
Map Editor
Master GFX 16
Hooman's File Manager

Games
Stone Bringer
The Original Hootris

Demos • C++ / DirectX
Fish