从昨天深夜开始,我一直在尝试修复上述错误。今天我又试了好几个小时。我学到了很多,也明白了很多。我一路上发现了一些东西并修复了它们,不幸的是错误仍然存在。
例如,我现在知道上述错误表明我的代码所针对的对象之一超出了范围。 可能由以下原因引起:
它被声明但未实例化
它没有实例名称(或实例名称拼写错误)
它不存在于该代码试图与之对话的框架中
它已动画到位,但未在每个关键帧中为其分配实例名称
它是相同对象的两个或多个连续关键帧之一,在前一帧中未指定名称(或不同名称)。
这是出错的错误行:
if (back.collisions.hitTestPoint(player.x + leftBumpPoint.x,player.y + leftBumpPoint.y,true))
所以它必须是有背部或碰撞的东西......
我检查了一下,它不是拼写错误的实例 BTW back 是带有 Back 实例的背景影片剪辑,它包含带有实例 Collisions 的碰撞图像
它正在被宣布(但可能不正确)
可能是原因。第 1 帧是预加载器。第 2 帧是带有启动代码 cat.as 的按钮的菜单。第 3 帧包含游戏
它只存在于一个关键帧上,所以它不是错误号 4
它只存在于一个关键帧上,所以它不是错误号 5
所以很可能是3号。
我认为发生的事情是我单击按钮,它立即想要运行 cat.as 在进入第 3 帧之前。我应该如何解决这个问题。我正在考虑将游戏放在第 2 帧但不在屏幕上。我非常希望对此提供反馈,请。谢谢
我的代码:编辑:我给了 var public
package
{
import flash.display.MovieClip;
import flash.events.*;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.geom.Point;
public class Cat extends MovieClip
{
public var leftPressedfBoolean = false;
public var rightPressed:Boolean = false;
public var upPressed:Boolean = false;
public var downPressed:Boolean = false;
public var leftBumping:Boolean = false;
public var rightBumping:Boolean = false;
public var upBumping:Boolean = false;
public var downBumping:Boolean = false;
public var leftBumpPoint:Point = new Point(-30,-55);
public var rightBumpPoint:Point = new Point(30,-55);
public var upBumpPoint:Point = new Point(0,-120);
public var downBumpPoint:Point = new Point(0,0);
public var scrollX:Number = 0;
public var scrollY:Number = 500;
public var xSpeed:Number = 0;
public var ySpeed:Number = 0;
public var speedConstant:Number = 4;
public var frictionConstant:Number = 0.9;
public var gravityConstant:Number = 1.8;
public var jumpConstant:Number = -35;
public var maxSpeedConstant:Number = 18;
public var doubleJumpReady:Boolean = false;
public var upReleasedInAir:Boolean = false;
public var keyCollected:Boolean = false;
public var doorOpen:Boolean = false;
public var currentLevel:int = 1;
public var animationState:String = "idle";
public var bulletList:Array = new Array();
public var enemyList:Array = new Array();
public var bumperList:Array = new Array();
public var player:Player;
public var back:Back;
public var sky:Sky;
public var collisions:Collisions;
public var visuals:Visuals;
public var other:Other;
public var doorKey:DoorKey;
public function Cat()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
public function init(e:Event):void
{
player = new Player();
back = new Back();
sky = new Sky();
visuals = new Visuals();
other = new Other();
collisions = new Collisions();
doorKey = new DoorKey();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
stage.addEventListener(Event.ENTER_FRAME, loop);
addEnemiesToLevel1();
addBumpersToLevel1();
}
public function addEnemiesToLevel1():void
{
addEnemy(620, -115);
addEnemy(900, -490);
addEnemy(2005, -115);
addEnemy(1225, -875);
}
public function addBumpersToLevel1():void
{
addBumper(500, -115);
addBumper(740, -115);
}
public function loop(e:Event):void
{
if (back.collisions.hitTestPoint(player.x + leftBumpPoint.x,player.y + leftBumpPoint.y,true))
{
//trace("leftBumping");
leftBumping = true;
}
else
{
leftBumping = false;
}