Actionscript 3 编写一个简单的平台游戏,敌人赢了';我没有出现

Actionscript 3 编写一个简单的平台游戏,敌人赢了';我没有出现,actionscript-3,Actionscript 3,我一直有一个问题,让敌人出现,这是最后的伸展之前,我可以让游戏完全工作 它本来应该是一次性的,最初的计划是让敌人产卵,但我为敌人设定的坐标没有起作用 我将使用actionscript3将主代码和敌人附加为文件 // MAIN TIME LINE CODE import flash.events.Event; var leftPressed:Boolean = false; var rightPressed:Boolean = false; var upPressed:Boolean = fa

我一直有一个问题,让敌人出现,这是最后的伸展之前,我可以让游戏完全工作

它本来应该是一次性的,最初的计划是让敌人产卵,但我为敌人设定的坐标没有起作用

我将使用
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
}

我不清楚你的问题是什么,你添加的敌人实例在屏幕上不可见?如果是这种情况,请解释什么是
back
,以及它的上下文(似乎是敌人实例的父实例)-最有可能的是
back
对象位置与敌人对象的位置相结合,使其脱离屏幕。如果你只发布最少量的代码来重现问题,这将是很有帮助的。后面是角色移动的舞台,我在舞台上放置对象以获取坐标,一个应该在我的角色前面生成,但它没有,标记为敌人的对象将是静态的不难处理的对象。
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
          }

        }

    }