1

好吧,事情就是这样,我正在制作一个破砖游戏。我正在尝试构建它,以便我可以手动在舞台上添加砖块,而不是使用代码。

在舞台上,有一个球(“Ball”),目前正在跟随鼠标移动,还有一个内部带有命中测试代码的砖块电影剪辑。

主机代码如下:

import flash.events.Event;

addEventListener(Event.ENTER_FRAME,moveBall);

function moveBall (e:Event):void{
Ball.x = mouseX;
Ball.y = mouseY;
}

这是我在砖电影剪辑中编写的代码:

addEventListener(Event.ENTER_FRAME,checkHit);

function checkHit (e:Event):void{
    if(this.hitTestObject(Ball)){
    trace ("HIT!!");
}
}

这就是所有的代码,球和砖已经在舞台上。当我运行它时,我得到“符号'brick',图层'Layer 1',第1帧,第6行1120:访问未定义属性Ball。”

第 6 行是:

if(this.hitTestObject(Ball)){

请告诉我为什么以及如何解决这个问题.. 我试图将对象更改为 stage.Ball ,但我仍然收到错误:(

提前致谢

4

1 回答 1

1

您收到错误是因为Ball不在您的任何积木的范围内(这是一个不了解 Ball 的不同时间线)。

您可以使用parent关键字访问 Ball。例如:MovieClip(parent).Ball可能会工作。

一个更有效的建议:将其更改addEventListener(Event.ENTER_FRAME,moveBall);为使用MouseEvent.MOUSE_MOVE而不是 ENTER_FRAME。这样它只有在鼠标移动时才会触发。

于 2012-11-09T18:40:58.463 回答