In such a mess
creating platform game uni , nothing work ... created control pad move hero .. no errors showing can not work
anyone help.. complete dumbwit here no sleep in 3days
package {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.utils.gettimer;
import flash.ui.keyboard;
import flash.events.keyboardevent;
import flash.events.mouseevent;
import flash.events.touchevent;
import flash.ui.multitouch;
import flash.ui.multitouchinputmode;
public class platformgame extends movieclip {
// movement constants
static const gravity:number = .002;
// screen constants
static const edgedistance:number = 100;
// object arrays
private var fixedobjects:array;
private var otherobjects:array;
// hero , enemies
private var hero:object;
private var enemies:array;
// game state
private var playerobjects:array;
private var gamescore:int;
private var gamemode:string = "start";
private var playerlives:int;
private var lasttime:number = 0;
private var level:int = 1;
// start game
public function startplatformgame() {
playerobjects = new array();
gamescore = 0;
gamemode = "play";
playerlives = 3;
}
// start level
public function startgamelevel() {
// create characters
createhero();
addenemies();
// examine level , note objects
examinelevel();
// add listeners
this.addeventlistener(event.enter_frame,gameloop);
function ondown(e:mouseevent):void {
mcwheel.removeeventlistener(mouseevent.mouse_down, ondown);
stage.addeventlistener(mouseevent.mouse_up, onup);
this.addeventlistener(event.enter_frame, onenter);
}
function onup(e:mouseevent):void {
mcwheel.addeventlistener(mouseevent.mouse_down, ondown);
stage.removeeventlistener(mouseevent.mouse_up, onup);
this.removeeventlistener(event.enter_frame, onenter);
}
function onenter(e:event):void {
var xx:number = mcwheel.mousex;
var yy:number = mcwheel.mousey;
var angle:number;
if(angle==0){
hero.jump("jump",0.1);
}
else if(angle==-90){
hero.moveleft("walk",0.1);
}
else if(angle==180 || angle==-180){
hero.moveleft("walk",0.1);
}
else if(angle==90){
hero.jump("jump",0.1);
}
}
// set game state
gamemode = "play";
addscore(0);
showlives();
}
// creates hero object , sets properties
public function createhero() {
hero = new object();
hero.mc = gamelevel.hero;
hero.dx = 0.0;
hero.dy = 0.0;
hero.inair = false;
hero.direction = 1;
hero.animstate = "stand";
hero.walkanimation = new array(2,3,4,5,6,7,8);
hero.animstep = 0;
hero.jump = false;
hero.moveleft = false;
hero.moveright = false;
hero.jumpspeed = .8;
hero.walkspeed = .15;
hero.width = 30.0;
hero.height = 43.0;
hero.startx = hero.mc.x;
hero.starty = hero.mc.y;
}
// finds enemies in level , creates object each
public function addenemies() {
enemies = new array();
var i:int = 1;
while (true) {
if (gamelevel["enemy"+i] == null) break;
var enemy = new object();
enemy.mc = gamelevel["enemy"+i];
enemy.dx = 0.0;
enemy.dy = 0.0;
enemy.inair = false;
enemy.direction = 1;
enemy.animstate = "stand"
enemy.walkanimation = new array(2,3,4,5);
enemy.animstep = 0;
enemy.jump = false;
enemy.moveright = true;
enemy.moveleft = false;
enemy.jumpspeed = 1.0;
enemy.walkspeed = .03;
enemy.width = 30.0;
enemy.height = 30.0;
enemies.push(enemy);
i++;
}
}
// @ level children , note walls, floors , items
public function examinelevel() {
fixedobjects = new array();
otherobjects = new array();
for(var i:int=0;i<this.gamelevel.numchildren;i++) {
var mc = this.gamelevel.getchildat(i);
// add floors , walls fixedobjects
if ((mc floor) || (mc wall)) {
var floorobject:object = new object();
floorobject.mc = mc;
floorobject.leftside = mc.x;
floorobject.rightside = mc.x+mc.width;
floorobject.topside = mc.y;
floorobject.bottomside = mc.y+mc.height;
fixedobjects.push(floorobject);
// add treasure, key , door otherojects
} else if ((mc treasure) || (mc key) || (mc door) || (mc chest)) {
otherobjects.push(mc);
}
}
}
// note key presses, set hero properties
public function keydownfunction(event:keyboardevent) {
if (gamemode != "play") return; // don't move until in play mode
if (event.keycode == 37) {
hero.moveleft = true;
} else if (event.keycode == 39) {
hero.moveright = true;
} else if (event.keycode == 32) {
if (!hero.inair) {
hero.jump = true;
}
}
}
public function keyupfunction(event:keyboardevent) {
if (event.keycode == 37) {
hero.moveleft = false;
} else if (event.keycode == 39) {
hero.moveright = false;
}
}
// perform game tasks
public function gameloop(event:event) {
// time differentce
if (lasttime == 0) lasttime = gettimer();
var timediff:int = gettimer()-lasttime;
lasttime += timediff;
// perform tasks if in play mode
if (gamemode == "play") {
movecharacter(hero,timediff);
moveenemies(timediff);
checkcollisions();
scrollwithhero();
}
}
// loop through enemies , move them
public function moveenemies(timediff:int) {
for(var i:int=0;i<enemies.length;i++) {
// move
movecharacter(enemies[i],timediff);
// if hit wall, turn around
if (enemies[i].hitwallright) {
enemies[i].moveleft = true;
enemies[i].moveright = false;
} else if (enemies[i].hitwallleft) {
enemies[i].moveleft = false;
enemies[i].moveright = true;
}
}
}
// primary function character movement
public function movecharacter(char:object,timediff:number) {
if (timediff < 1) return;
// assume character pulled down gravity
var verticalchange:number = char.dy*timediff + timediff*gravity;
if (verticalchange > 15.0) verticalchange = 15.0;
char.dy += timediff*gravity;
// react changes key presses
var horizontalchange = 0;
var newanimstate:string = "stand";
var newdirection:int = char.direction;
if (char.moveleft) {
// walk left
horizontalchange = -char.walkspeed*timediff;
newanimstate = "walk";
newdirection = -1;
} else if (char.moveright) {
// walk right
horizontalchange = char.walkspeed*timediff;
newanimstate = "walk";
newdirection = 1;
}
if (char.jump) {
// start jump
char.jump = false;
char.dy = -char.jumpspeed;
verticalchange = -char.jumpspeed;
newanimstate = "jump";
}
// assume no wall hit, , hanging in air
char.hitwallright = false;
char.hitwallleft = false;
char.inair = true;
// find new vertical position
var newy:number = char.mc.y + verticalchange;
// loop through fixed objects see if character has landed
for(var i:int=0;i<fixedobjects.length;i++) {
if ((char.mc.x+char.width/2 > fixedobjects[i].leftside) && (char.mc.x-char.width/2 < fixedobjects[i].rightside)) {
if ((char.mc.y <= fixedobjects[i].topside) && (newy > fixedobjects[i].topside)) {
newy = fixedobjects[i].topside;
char.dy = 0;
char.inair = false;
break;
}
}
}
// find new horizontal position
var newx:number = char.mc.x + horizontalchange;
// loop through objects see if character has bumped wall
for(i=0;i<fixedobjects.length;i++) {
if ((newy > fixedobjects[i].topside) && (newy-char.height < fixedobjects[i].bottomside)) {
if ((char.mc.x-char.width/2 >= fixedobjects[i].rightside) && (newx-char.width/2 <= fixedobjects[i].rightside)) {
newx = fixedobjects[i].rightside+char.width/2;
char.hitwallleft = true;
break;
}
if ((char.mc.x+char.width/2 <= fixedobjects[i].leftside) && (newx+char.width/2 >= fixedobjects[i].leftside)) {
newx = fixedobjects[i].leftside-char.width/2;
char.hitwallright = true;
break;
}
}
}
// set position of character
char.mc.x = newx;
char.mc.y = newy;
// set animation state
if (char.inair) {
newanimstate = "jump";
}
char.animstate = newanimstate;
// move along walk cycle
if (char.animstate == "walk") {
char.animstep += timediff/60;
if (char.animstep > char.walkanimation.length) {
char.animstep = 0;
}
char.mc.gotoandstop(char.walkanimation[math.floor(char.animstep)]);
// not walking, show stand or jump state
} else {
char.mc.gotoandstop(char.animstate);
}
// changed directions
if (newdirection != char.direction) {
char.direction = newdirection;
char.mc.scalex = char.direction;
}
}
// scroll right or left if needed
public function scrollwithhero() {
var stageposition:number = gamelevel.x+hero.mc.x;
var rightedge:number = stage.stagewidth-edgedistance;
var leftedge:number = edgedistance;
if (stageposition > rightedge) {
gamelevel.x -= (stageposition-rightedge);
if (gamelevel.x < -(gamelevel.width-stage.stagewidth)) gamelevel.x = -(gamelevel.width-stage.stagewidth);
}
if (stageposition < leftedge) {
gamelevel.x += (leftedge-stageposition);
if (gamelevel.x > 0) gamelevel.x = 0;
}
}
// check collisions enemies, items
public function checkcollisions() {
// enemies
for(var i:int=enemies.length-1;i>=0;i--) {
if (hero.mc.hittestobject(enemies[i].mc)) {
// hero jumping down onto enemy?
if (hero.inair && (hero.dy > 0)) {
enemydie(i);
} else {
herodie();
}
}
}
// items
for(i=otherobjects.length-1;i>=0;i--) {
if (hero.mc.hittestobject(otherobjects[i])) {
getobject(i);
}
}
}
// remove enemy
public function enemydie(enemynum:int) {
var pb:pointburst = new pointburst(gamelevel,"another 1 bites dust!",enemies[enemynum].mc.x,enemies[enemynum].mc.y-20);
gamelevel.removechild(enemies[enemynum].mc);
enemies.splice(enemynum,1);
}
// enemy got player
public function herodie() {
// show dialog box
var dialog:dialog = new dialog();
dialog.x = 175;
dialog.y = 100;
addchild(dialog);
if (playerlives == 0) {
gamemode = "gameover";
dialog.message.text = "game over!";
} else {
gamemode = "dead";
dialog.message.text = "sorry died!";
playerlives--;
}
hero.mc.gotoandplay("die");
}
// player collides objects
public function getobject(objectnum:int) {
// award points treasure
if (otherobjects[objectnum] treasure) {
var pb:pointburst = new pointburst(gamelevel,100,otherobjects[objectnum].x,otherobjects[objectnum].y);
gamelevel.removechild(otherobjects[objectnum]);
otherobjects.splice(objectnum,1);
addscore(100);
// got key, add inventory
} else if (otherobjects[objectnum] key) {
pb = new pointburst(gamelevel,"woop got key!" ,otherobjects[objectnum].x,otherobjects[objectnum].y);
playerobjects.push("key");
gamelevel.removechild(otherobjects[objectnum]);
otherobjects.splice(objectnum,1);
addscore(200);
// hit door, end level if hero has key
} else if (otherobjects[objectnum] door) {
if (playerobjects.indexof("key") == -1) return;
if (otherobjects[objectnum].currentframe == 1) {
otherobjects[objectnum].gotoandplay("open");
levelcomplete();
}
// got chest, game won
} else if (otherobjects[objectnum] chest) {
otherobjects[objectnum].gotoandstop("open");
gamecomplete();
}
}
// add points score
public function addscore(numpoints:int) {
gamescore += numpoints;
scoredisplay.text = string(gamescore);
}
// update player lives
public function showlives() {
livesdisplay.text = string(playerlives);
}
// level over, bring dialog
public function levelcomplete() {
gamemode = "done";
var dialog:dialog = new dialog();
dialog.x = 175;
dialog.y = 100;
addchild(dialog);
dialog.message.text = "level complete!";
}
// game over, bring dialog
public function gamecomplete() {
gamemode = "gameover";
var dialog:dialog = new dialog();
dialog.x = 175;
dialog.y = 100;
addchild(dialog);
dialog.message.text = "you found boo!";
}
// dialog button clicked
public function clickdialogbutton(event:mouseevent) {
removechild(movieclip(event.currenttarget.parent));
// new life, restart, or go next level
if (gamemode == "dead") {
// reset hero
showlives();
hero.mc.x = hero.startx;
hero.mc.y = hero.starty;
gamemode = "play";
} else if (gamemode == "gameover") {
cleanup();
gotoandstop("start");
} else if (gamemode == "done") {
cleanup();
nextframe();
}
// give stage keyboard focus
stage.focus = stage;
}
// clean game
public function cleanup() {
removechild(gamelevel);
this.removeeventlistener(event.enter_frame,gameloop);
stage.removeeventlistener(keyboardevent.key_down,keydownfunction);
stage.removeeventlistener(keyboardevent.key_up,keyupfunction);
}
}
}
that code difficult read because of sloppy formatting , it's lengthy read carefully. start don't see you're adding keyboardevent listener.
if are, use trace function confirm listener functions receiving events.
More discussions in ActionScript 3
adobe
Comments
Post a Comment