我正在使用libGDX制作游戏,我想使用Gradle将其导出为HTML。当我使用此方法获取演员列表时,问题就来了。显然isInstance()
和isInstanceOf
与GWT不兼容,因此我正在寻找解决此问题的方法。 Gradle告诉我isInstance
未定义。它可以在桌面上正常运行。
public static ArrayList<BaseActor> getList(Stage stage, String className) {
ArrayList<BaseActor> list = new ArrayList<BaseActor>();
Class theClass = null;
try {
theClass = ClassReflection.forName("com.mygdx.game.actors." + className);
} catch (Exception error) {
error.printStackTrace();
}
for (Actor a : stage.getActors()) {
if (theClass.isInstance(a))
list.add((BaseActor) a);
}
return list;
}
Actor类具有用户对象属性(getUserObject()
/ setUserObject()
),可用于附加数据。您可以使BaseActor将此作为类标记属性使用,并使用抽象方法,这样您就不会忘记将其添加到任何Actor实现中。
abstract class BaseActor {
//...
public BaseActor() {
setUserObject(getClassTag());
//...
}
protected abstract String getClassTag();
}
class SomeSpecificActor extends BaseActor {
public SomeSpecificActor () {
super();
//...
}
@Override
protected String getClassTag() {
return "SomeSpecificActor";
}
}
public static ArrayList<BaseActor> getList(Stage stage, String classTag) {
ArrayList<BaseActor> list = new ArrayList<BaseActor>();
for (Actor a : stage.getActors()) {
if (classTag.equals(a.getUserObject()))
list.add((BaseActor) a);
}
return list;
}