还有其他办法吗?我刚接触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);
}
答案 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方法。