0

我正在制作一个简单的游戏,我仍在学习 as3 我想在舞台上击中测试对象,如果 hittestobject gotoframe 或场景所有对象都在舞台上,则所有对象都在舞台上,并且下面的 maintimeline as3 一切正常但我得到空错误。这是一个迷宫游戏。

import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.geom.Rectangle;
import flash.ui.Keyboard;


var rightArrow:Boolean = false;
var leftArrow:Boolean = false;
var upArrow:Boolean = false;
var downArrow:Boolean = false;
var speed:int = 20;

stage.addEventListener(KeyboardEvent.KEY_DOWN, stage_onKeyDown);
stage.addEventListener(KeyboardEvent.KEY_UP, stage_onKeyUp);
stage.addEventListener(Event.ENTER_FRAME, stage_onEnterFrame);

function stage_onKeyDown(event:KeyboardEvent):void {
    if(event.keyCode == Keyboard.RIGHT) rightArrow = true;
    if(event.keyCode == Keyboard.LEFT) leftArrow = true;
    if(event.keyCode == Keyboard.UP) upArrow = true;
    if(event.keyCode == Keyboard.DOWN) downArrow = true;
}
function stage_onKeyUp(event:KeyboardEvent):void {
    if(event.keyCode == Keyboard.RIGHT) rightArrow = false;
    if(event.keyCode == Keyboard.LEFT) leftArrow = false;
    if(event.keyCode == Keyboard.UP) upArrow = false;
    if(event.keyCode == Keyboard.DOWN) downArrow = false;
}
function stage_onEnterFrame(event:Event):void {
    var rect:Rectangle = player.getBounds(this);
    var i:int = 0;
    var xBump:int = 0;
    var yBump:int = 0;
    if(rightArrow) {
        xBump = speed;
        for(i = 0; i < speed; i++) {
            if(maze.hitTestPoint(rect.right + i, player.y, true)) {
                xBump = i - 1;
                break;
            }
        }
    }

    if(player.hitTestObject(box))
    {
       // Go to next scene
       nextFrame();
    }
    if(leftArrow) {
        xBump = -speed;
        for(i = 0; i < speed; i++) {
            if(maze.hitTestPoint(rect.left - i, player.y, true)) {
                xBump = -i + 1;
                break;
            }
        }
    }


    if(upArrow) {
        yBump = -speed;
        for(i = 0; i < speed; i++) {
            if(maze.hitTestPoint(player.x, rect.top - i, true)) {
                yBump = -i + 1;
                break;
            }
        }
    }
    if(downArrow) {
        yBump = speed;
        for(i = 0; i < speed; i++) {
            if(maze.hitTestPoint(player.x, rect.bottom + i, true)) {
                yBump = i - 1;
                break;
            }
        }
    }
    player.x += xBump;
    player.y += yBump;
}
4

0 回答 0