hitTestObject不是一个函数

时间:2014-11-28 18:11:01

标签: actionscript-3 flash-cs6

嘿,伙计们只是想在flash中制作简单的游戏,这个角色运行并收集硬币,然后硬币计数增加。当我只处理一枚硬币然后我试图用数组和这个错误做这件事时工作正常。

还有其他办法吗?我刚接触as3只做2周。 感谢

import flash.events.KeyboardEvent;

var char:mario = new mario();

addChild(char);

char.x = 300;

char.y = 720;

var money:coin = new coin();

var Coin:Array = new Array(money,money,money,money,money);

addChild(Coin[2]);

trace(Coin[2]);

for(var b:int = 0; b<5; b++)

{
    addChild(Coin[b]);
    Coin[b].x = 300;
    Coin[b].y = 100*b;

}

stage.addEventListener(KeyboardEvent.KEY_DOWN,movement);


var a:int;
function movement(e:KeyboardEvent)
{
    if(e.keyCode == 38) 
    {
        char.y -= 5;
    }

    if(e.keyCode == 40) 
    {
        char.y += 5;
    }

    if(e.keyCode == 37) 
    {
        char.x -= 5;
    }

    if(e.keyCode == 39) 
    {
        char.x += 5;
    }

    if(Coin.hitTestObject(char))
    {

        Coin[b].y = -5000;
        a++;

    }
    trace("coins= " + a);
}

1 个答案:

答案 0 :(得分:1)

哇,你完全倒退了第一个字母的大写字母。

您的实例/变量应使用小写。你的类名应该是大写的。

所以没有

var Coin:coin = new coin();

但是

var coin:Coin = new Coin();

执行此操作if(Coin.hitTestObject(char))时,您基本上在Array实例上查找名为hitTestObject的方法。阵列没有这种方法。您需要为其指定索引(Coin[1].hitTestObject(...));所以它使用硬币实例(你应该在for-cycle中为每个硬币进行)。现在我只能假设你的马里奥&#39;和&#39;硬币&#39;类扩展了一些显示对象,因此它们实际上具有hitTestObject方法。