1

我在我的游戏中使用 Actor 类来获得 Actors 类的几个优点。但目前我在使用 Stage.hit(...) 方法时遇到问题。

众所周知,“hit”返回 Actor 对象。

public class Enemy extends Actor
{
    int health = 100;

public Enemy (int type, float x, float y)
{
    setX(x);
    setY(y);
}

public void act(float deltaTime)
{               
    Actor hitActor = GameAsset.stage.hit(getX(), getY(), false);
    if(hitActor != null))
    {
               health -= 10;
               // next, should be reducing hitActor health in stage, but how?
    }
}
...

问题是,上面的评论有什么办法吗?

抱歉英语不好:D

4

1 回答 1

1

把它放在hitActor != null测试里面:

if (hitActor instanceof Enemy) {
   Enemy e = (Enemy)hitActor;
   e.health -= 10;
}

这将检查返回的是否Actor恰好是Enemy子类的实例。如果是这样,您可以转换对象并应用更改。如果不是,则忽略该命中。

您可以在此处了解有关将对象从其泛型类型转换为更具体类型的更多信息:http: //docs.oracle.com/javase/tutorial/java/IandI/subclasses.html(尤其是关于“转换对象”的最后一节。

于 2013-05-28T15:01:33.177 回答