晚上好/早上好。
这是与游戏相关的问题。
我面临一个问题,即我有三个对象,(三个哥布林)数据输入到同一个类。
这三个对象在一个数组中,数据类型为该类,并初始化为数组。
private var goblin1:Goblin = new Goblin();
private var goblin2:Goblin = new Goblin();
private var goblin3:Goblin = new Goblin();
所以上面的变量然后被放入一个数组中。
private var aGoblinArray = new Array(container.goblin1, container.goblin2, container.goblin3);
将对象放入数组后,我已经遍历了所有的妖精。
for (var i:int = 0; i < aGoblinArray.length; i++)
{
var goblin:Goblin = aGoblinArray[i];
}
现在我在for循环中有一个hitTest,而hitTest是:
if (goblin.hitTestPoint(_character.x + 100, _character.y - 45, true))
{
goblinCanMove = false;
trace("lance hits");
//hitOnce
if (!hitOnce)
{
hitOnce = true;
trace("take on damage");
}
goblin.moveBack();
goblin.minusHealth();
}
这意味着如果这个玩家击中任何一个地精,他们就会完成这个功能。
在妖精班里怎么样?
public static var goblinLife; int;
goblinLife = 2;//put in main constructor
public function minusHealth():void
{
goblinLife --;
checkDeath();
}
private function checkDeath():void
{
if (goblinLife == 0)
{
parent.removeChild(this);
}
}
问题是,如果我击中goblin1,那么goblinLife将= 1.这意味着所有其他地精(goblin2和3)将有1个生命。因为他们共享同一个班级。
如果goblin1死亡,他将被移除并且var goblinLife将= 0; 现在我可以将它重置为2,但这将解决问题的一半。
我的问题是,有没有办法确定每个妖精是否拥有自己的个人生命系统。先感谢您。
答案 0 :(得分:1)
非常感谢潘和马蒂!
静态意味着可以从任何类和任何函数更改它。
私人意味着它将受到每个恶鬼的保护。
自改变
public static var goblinLife; int;
到
private var goblinLife; int;
这意味着每个单独的妖精都有自己的变量,同一类的其他类或对象都不能改变。
谢谢Pan和Martyn。我想我需要阅读AS3 101: Quick Tip – When to Use Static Properties and Methods和其他编码书籍!