我正在制作有硬币的平台游戏。一旦角色走过它,硬币应该被移除。我试过了
private function coinremove(event:Event):void{
if(mcMain.hitTest(Coin)){
this.parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, coinremove);
_root.mainScore += 100;
}
遗憾的是,它没有用,所以如果您有任何建议或更好的方法,请在此处发布。
答案 0 :(得分:1)
我没有在MovieClip的文档中看到 hitTest 函数,因此我假设您使用hitTestObject。我也会假设硬件删除是你的硬币类的功能......这是正确的吗?
如果这是真的,问题似乎是你正在对类而不是对象执行命中测试。像ActionScript这样的语言之间的区别可能会有点模糊,这就是为什么你的代码编译(如果它编译),但它的错误。试试这个:
private function coinremove(event:Event):void {
if (mcMain.hitTestObject(this)) {
parent.removeChild(this);
removeEventListener(Event.ENTER_FRAME, coinremove);
_root.mainScore += 100;
}
}
现在,对象对自身执行命中测试,而不是对其类执行。对象(或实例)具有值的属性,而类定义对象可以具有的属性。这是面向对象编程的基础。要在ActionScript 3中阅读有关OOP的更多信息,请查看this page by Adobe。