这是我的第一个问题,但是我最近一直在遇到这个问题,需要一些帮助。
我正在为周末编程一个小的Android游戏,我在使我的船的子弹击中敌人时遇到了问题,两者都消失了...
我会给你一个我的代码的摘要:
stage.addEventListener(Event.ENTER_FRAME, Update);
LeftButton.addEventListener(TouchEvent.TOUCH_OVER, LBOn);
LeftButton.addEventListener(TouchEvent.TOUCH_BEGIN, LBTouch);
LeftButton.addEventListener(TouchEvent.TOUCH_OUT, LBOff);
LeftButton.addEventListener(TouchEvent.TOUCH_END, LBRelease);
RightButton.addEventListener(TouchEvent.TOUCH_OVER, RBOn);
RightButton.addEventListener(TouchEvent.TOUCH_BEGIN, RBTouch);
RightButton.addEventListener(TouchEvent.TOUCH_OUT, RBOff);
RightButton.addEventListener(TouchEvent.TOUCH_END, RBRelease);
BA.addEventListener(TouchEvent.TOUCH_BEGIN, Shoot);
这是我舞台的活动听众块。当前所有的EventListeners都在这很小的部分,非常简单,它们在我所做的工作中可以正常工作,但是最后一个事件称为功能拍摄,这就是事情变得棘手...
function Shoot(TouchEvent) {
SpawnBullet();
};
好,很简单。只是一个调用另一个功能来产生我的子弹的功能,我看到的方式没有太大伤害...
这就是我尝试运行代码的方式:
function SpawnBullet() {
var Bullet:Bullet1 = new Bullet1();
stage.addChild(Bullet);
Bullet.x = Player.x;
Bullet.y = Player.y - (Player.height / 2);
Bullet.addEventListener(Event.ENTER_FRAME, BulletUpdate);
function BulletUpdate(Event) {
Bullet.y -= 20;
if(Bullet.y <= 100) {
Bullet.removeEventListener(Event.ENTER_FRAME, BulletUpdate);
stage.removeChild(Bullet);
Bullet = null;
};
};
};
当我运行游戏时,我会收到此错误:
ReferenceError: Error #1069: Property ENTER_FRAME not found on flash.events.Event and there is no default value.
at Function/Shooter_fla:MainTimeline/SpawnBullet/Shooter_fla:BulletUpdate()[Shooter_fla.MainTimeline::frame1:41]
我不是想伪造自己的技能,我认为我不知道添加和删除子女是如何工作的,而且由于我讨厌仅搜索网络寻找某种方法,而无需学习某种方法,所以来这里寻求帮助。预先感谢您的任何帮助!
该错误与添加/删除孩子无关。您的错误是声明函数参数事件,其名称与类名称相同,因此编译器被混淆了。另外,作为附带说明,请尽量避免在功能中声明功能,就像欢迎痛苦和恐怖。
我认为您的代码会很好如下:
function SpawnBullet():void
{
// With the "new" operator you can omit () if constructor has no arguments.
var aBull:Bullet1 = new Bullet1;
stage.addChild(aBull);
aBull.x = Player.x;
aBull.y = Player.y - (Player.height / 2);
aBullet.addEventListener(Event.ENTER_FRAME, BulletUpdate);
}
function BulletUpdate(e:Event):void
{
// Get the reference to the bullet from the event.
// Alternately you might store it in a variable outside of both functions.
var aBull:Bullet1 = e.target as Bullet1;
aBull.y -= 20;
if (aBull.y <= 100)
{
aBull.removeEventListener(Event.ENTER_FRAME, BulletUpdate);
stage.removeChild(aBull);
}
}
p.s。不要害羞地彻底格式化代码。这并不是看起来那么麻烦,很快您就会习惯它,而格式化的代码干净且可读性,并且可以通过正确进行格式来避免某些错误。