编码一个简单的平台游戏和敌人不会出现

时间:2017-05-12 18:41:52

标签: actionscript-3

我遇到了让敌人出现的问题,这是我可以让游戏完全发挥作用的最后一段时间。

这应该是一次性的,最初的计划是让敌人产生,但我为敌人设计的坐标没有用。

我将使用.as附加主代码和敌人actionscript3文件。

// MAIN TIME LINE CODE

import flash.events.Event;

var leftPressed:Boolean = false;
var rightPressed:Boolean = false;
var upPressed:Boolean = false;
var downPressed:Boolean = false;
//buttong pressing

var leftBumping:Boolean = false;
var rightBumping:Boolean = false;
var upBumping:Boolean = false;
var downBumping:Boolean = false;
// collision variables

var leftBumpPoint:Point = new Point(-30, -55);
var rightBumpPoint:Point = new Point(30, -55);
var upBumpPoint:Point = new Point(0, -120);
var downBumpPoint:Point = new Point(0, 0);
// character collision

var gravityConstant:Number = 1.5;
var jumpConstant:Number = - 35;
var maxSpeedConstant:Number = 18;
//jumping

var animationState:String = "idle";
// for the animation

var bulletList:Array = new Array();
var enemyList:Array = new Array();

var currentLevel:int = 1;

var scrollX:Number = 0;
var scrollY:Number = 500;
//parralax

var xSpeed:Number = 0;
var ySpeed:Number = 0;
// speeeeeed

var speedConstant:int = 5;

var friction:Number = 0.9;

stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);

stage.addEventListener(Event.ENTER_FRAME, loop);

addEnemiesToLevel1();

function addEnemiesToLevel1():void {
    addEnemy(340, 390);
  /*  addEnemy(900, -490);
    addEnemy(2005, -115);
    addEnemy(1225, -875);*/
    //adds an enemy
}



function loop(e:Event):void{
    if(back.hitTestPoint(player.x + leftBumpPoint.x, player.y + leftBumpPoint.y, true)){
        trace("leftBumping");
        leftBumping = true;
    } else {
        leftBumping = false;
    }

    if(back.hitTestPoint(player.x + rightBumpPoint.x, player.y + rightBumpPoint.y, true)){
        trace("rightBumping");
        rightBumping = true;
    } else {
        rightBumping = false;
    }

    if(back.hitTestPoint(player.x + upBumpPoint.x, player.y + upBumpPoint.y, true)){
        trace("upBumping");
        upBumping = true;
    } else {
        upBumping = false;
    }

    if(back.hitTestPoint(player.x + downBumpPoint.x, player.y + downBumpPoint.y, true)){
        trace("downBumping");
        downBumping = true;
    } else {
        downBumping = false;
    }   


    if(leftPressed){
        xSpeed -= speedConstant;
        /*player.x -= xSpeed;*/
        player.scaleX = -1;
            trace("fff");

    } else if(rightPressed) {
        xSpeed += speedConstant;
        /*player.x += xSpeed;*/
        player.scaleX = 1;
// player movement left and right
    }

    /*player.scaleX = 1;*/ // copy in case

    /*if(upPressed){
        ySpeed -= speedConstant;

    } else if(downPressed){
        ySpeed += speedConstant;

    }*/

    if(leftBumping){
        if(xSpeed < 0){
            xSpeed *= -0.5;
        }
    }

    if(rightBumping){
        if(xSpeed > 0){
            xSpeed *= -0.5;
        }
    }

    if(upBumping){ 
        if(ySpeed < 0){
            ySpeed *= -0.5;
        }
    }  ////BUMPING

    if(downBumping){   //if touching the floor
        if(ySpeed > 0){
            ySpeed = 0;
            trace("1")
        }
        if(upPressed) { //y speed to jump constant
            ySpeed = jumpConstant;
            trace("2");
        }
    }   else { // if not touching the floor
             ySpeed += gravityConstant;  // moves downward
        trace("portobello");
    }

    if(xSpeed > maxSpeedConstant) { // lettin you move right
        xSpeed = maxSpeedConstant;
    } else if(xSpeed < (maxSpeedConstant * -1)) { // leting you move left
        xSpeed = (maxSpeedConstant * -1);
    }

    xSpeed *= friction;
    ySpeed *= friction;

    if(Math.abs(xSpeed) < 0.5) {
    xSpeed = 0;
}

    scrollX -= xSpeed;
    scrollY -= ySpeed;

    back.x = scrollX;
    back.y = scrollY;

    if( ( leftPressed || rightPressed || xSpeed > speedConstant || xSpeed < speedConstant *-1 ) && downBumping) {
    animationState = "running";
} else if(downBumping) {
    animationState = "idle";
} else {
    animationState = "jumping";
}
if (player.currentLabel != animationState) {
    player.gotoAndStop(animationState);
 }  

}

if (player.currentLabel != animationState) {
    player.gotoAndStop(animationState);
}

if (enemyList.length > 0) // if there are any enemies left in the enemyList
{
    for (var i:int = 0; i < enemyList.length; i++) // for each enemy in the enemyList
    {
        if (bulletList.length > 0) // if there are any bullets alive
        {
            for (var j:int = 0; j < bulletList.length; j++) // for each bullet in the bulletList
            {
                if ( enemyList[i].hitTestObject(bulletList[j]) )
                {
                    trace("Bullet and Enemy are colliding");
                    enemyList[i].removeSelf();
                    bulletList[j].removeSelf();
                }
            }
        }
    }
}



function keyDownHandler(e:KeyboardEvent):void{
    if(e.keyCode == Keyboard.LEFT){
        leftPressed = true;

    } else if(e.keyCode == Keyboard.RIGHT){
        rightPressed = true;

    } else if(e.keyCode == Keyboard.UP){
        upPressed = true;

    } else if(e.keyCode == Keyboard.DOWN){
        downPressed = true;
    }   
}

function keyUpHandler(e:KeyboardEvent):void{
    if(e.keyCode == Keyboard.LEFT){
        leftPressed = false;

    } else if(e.keyCode == Keyboard.RIGHT){
        rightPressed = false;

    } else if(e.keyCode == Keyboard.UP){
        upPressed = false;

    } else if(e.keyCode == Keyboard.DOWN){
        downPressed = false;
    }   
    if(e.keyCode == Keyboard.SPACE) {
    fireBullet();
    }
}



function addEnemy(xLocation:int, yLocation:int): void {
    var enemy:Enemy = new Enemy(xLocation, yLocation);
    back.addChild(enemy);

    enemy.addEventListener(Event.REMOVED, enemyRemoved);
    enemyList.push(enemy);
}

function enemyRemoved(e:Event):void {
    e.currentTarget.removeEventListener(Event.REMOVED, enemyRemoved);
    enemyList.splice(enemyList.indexOf(e.currentTarget), 1);
}


function fireBullet():void {
    var playerDirection:String;
    if(player.scaleX < 0) {
        playerDirection = "left";
    } else if(player.scaleX > 0) {
        playerDirection = "right";
    }
    var bullet:Bullet = new Bullet(player.x, player.y, playerDirection);
    stage.addChild(bullet);
    // firing direction
}

function bulletRemoved(e:Event):void
{
    e.currentTarget.removeEventListener(Event.REMOVED, bulletRemoved); // stops and error from occuring in the event listener
    bulletList.splice(bulletList.indexOf(e.currentTarget), 1); // removes a bullet from the list
}

敌人 .as 文件:

package  {

    import flash.display.MovieClip;
    import flash.events.Event;

    public class Enemy extends MovieClip { 

        public function Enemy(xLocation:int, yLocation:int) {
            // constructor code
            x = xLocation;
            y = yLocation;

            addEventListener(Event.ENTER_FRAME, loop);
          }

        public function loop(e:Event):void {
            //looping code
          }

        public function removeSelf():void {
            trace("remove self");   
            removeEventListener(Event.ENTER_FRAME, loop); //stops the loop
            this.parent.removeChild(this); // tell this objects "parent object" to remove said object
          }

        }

    }

0 个答案:

没有答案
相关问题