as3中的角色/硬币命中测试

时间:2011-12-06 17:02:38

标签: flash actionscript-3 flash-cs4

我正在制作有硬币的平台游戏。一旦角色走过它,硬币应该被移除。我试过了

private function coinremove(event:Event):void{
    if(mcMain.hitTest(Coin)){
    this.parent.removeChild(this);
    removeEventListener(Event.ENTER_FRAME, coinremove);
    _root.mainScore += 100;
}
遗憾的是,它没有用,所以如果您有任何建议或更好的方法,请在此处发布。

1 个答案:

答案 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