有没有办法"清理"您创建的对象和其他变量?或者他们是自动处理还是我错了这整个概念?这样做的正确方法是什么?我试图尽可能地避免使用GC.
我使用ArrayList作为我的"库存".我无法找到一种方法来添加同一项目的多个而不占用"库存"中的一个点.例如:我在我的库存中添加药水.现在我添加另一种药水,但这次不是在库存中添加另一种药水,而是应该显示我有:药水x 2,而只占用ArrayList中的一个点.我想出了一些解决方案,但我觉得它们好像是不好的做法.我尝试过的一个解决方案是将一个AMOUNT变量添加到项目本身并增加它.帮我找到更好的解决方案?
编辑:好的,请忽略上述内容.我已经得到了相当不错的答案,但让我感到惊讶的是,几乎没有关于角色扮演游戏库存系统的教程.我做了很多谷歌搜索,找不到任何好的例子/教程/源代码.如果有人能指出一些好的例子/教程/源代码(无论什么语言,但更好的java,甚至是c/c ++),我将不胜感激,谢谢.哦,还有关于这个主题的任何书籍.
因此,我只是想让一个球在屏幕周围反弹,这应该会因为重力而减速,并像普通球一样从墙上反射(反弹).有人可以提供一些基础知识和非常简单的实现吗?其他例子似乎有点"过头",似乎超出了我想做的事情.我试过这个:
public void updateLogic() {
if (x < -1) {
xPos += (-x * gravity);
} else if (x > 1) {
xPos -= (x * gravity);
}
if (y > 1) {
yPos += (y * gravity);
} else if (y < -1) {
yPos -= (-y * gravity);
}
}
Run Code Online (Sandbox Code Playgroud)
这是我自己最接近的.顺便说一句,x和y值来自加速度计.任何帮助将不胜感激,谢谢!
我创建一个SQLiteDatabase实例并以这种方式调用getReadableDatabase()或getWritableDatabase()操作数据,但我从不关闭数据库db.close().不关闭它不好吗?我尝试添加db.close()到我的onStop()或onDestroy()方法,但它只是强制关闭.
日志报告数据库或游标未关闭.我基本上有一个带有自定义surfaceview的活动,并使用处理程序报告回活动.当我收到消息时,我会显示alertdialog并更新数据库.
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch(msg.what) {
case 1:
dh.open();
dh.updateEvent("id", "name", "someone");
dh.close();
successAlert.show();
break;
case 2:
failAlert.show();
break;
}
}
};
Run Code Online (Sandbox Code Playgroud)
以前我没有"dh.close()",那就是当日志报告数据库/游标未关闭时.但是自从我加入之后,它需要很长时间才能完成.收到消息后,系统似乎挂起了.我做错了什么或通常需要这么长时间.我也尝试使用try块,最后关闭db.
编辑:
public class DatabaseHelper {
private Database dbHelper;
private SQLiteDatabase db;
private Context context;
public DatabaseHelper(Context context) {
this.context = context;
//database = new Database(context);
}
public void open() {
dbHelper = new Database(context);
db = dbHelper.getWritableDatabase();
}
public void close() {
dbHelper.close();
}
public void updateEvent(int id, …Run Code Online (Sandbox Code Playgroud) 我如何从不同的活动中调用方法?在我的主要活动中,我有一个按钮,显示一个对话框来设置游戏的难度级别.然后单击开始游戏,开始一个包含所有游戏信息视图的新活动.我需要将选择的难度级别发送到其他活动,但似乎无法弄清楚如何.