2012-11-09 37 views
1

好吧继承人的事情,我正在做一个砖破碎机游戏。即时尝试构建它,以便我可以手动添加砖块,而不是使用代码。砖破碎机撞击测试错误

在舞台上有一个球(“球”),目前正在浏览鼠标移动,以及一个带有命中测试代码的砖块动画片。

继承人的大型机代码:

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!!"); 
} 
} 

这就是所有的代码和球和砖都是alredy在舞台上。 当我跑这个我得到“符号'砖',图层'层1',第1帧,第6行1120:访问未定义的属性球。”

线6:

if(this.hitTestObject(Ball)){ 

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

感谢推进

回答

1

,您会收到错误,因为Ball是不是在你的任何砖块的范围(这是一个不同的时间表,不知道球)。

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

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

+0

感谢您的帮助! MOUSE_MOVE将被使用=],但我试图改变线if(this.hitTestObject(MovieClip.parent(Ball))){和我再次得到相同的错误加上“通过静态引用调用一个可能未定义的方法父类型类“。如果我写“Ball.parent.Ball”,那么旧的错误无论如何跳转。 =/ –

+0

应该是:'if(this.hitTestObject(MovieClip(parent).Ball)){' – BadFeelingAboutThis

+0

你是一个真正的天才!谢啦! =]完美地工作 –