这听起来很简单,但我查看了各种网站,它只给了我两个参数:
void glGenTextures(GLsizei n, GLuint * textures)
Run Code Online (Sandbox Code Playgroud)
..解释.
但是当使用OpenGL ES和android时,该方法不存在,我也看到了多个网站,源代码和教程使用这个方法有三个参数,这对我来说不会给我一个编译器错误:
gl.glGenTextures(amountOfTexturesToMake, pointerToArray, 0);
Run Code Online (Sandbox Code Playgroud)
那零是什么?第三个参数是什么?即使很难看到各种各样的人使用它,我也找不到它的解释.
当试图在舞台上放置一个简单的ImageButton时,它似乎没有检测到点击.
ImageButton btnStart = new ImageButton(ButtonArt.UP, ButtonArt.DOWN));
// btnStart.setClickListener(new ClickListener() {
// @Override
// public void click(Actor a, float arg1, float arg2) {
// a.visible = false;
// }
// });
stage.addActor(btnStart);
Run Code Online (Sandbox Code Playgroud)
ButtonArt.UP和ButtonArt.DOWN是每个州的TextureRegions.现在,当我点击按钮时,它不会改变状态!我也尝试了上面的ClickListener(用于测试),但它似乎也没有用.
在我的render方法中,我只调用stage.act()和stage.render().我也尝试在我的渲染方法中使用SpriteBatch绘制TextureRegions,它们实际上是不同的纹理.
难道我做错了什么?
我有超类Vehicle,有它的子类Plane和Car.车辆从具有final string name;场的类延伸,该场只能从构造器设置.
我想将此字段设置为类的名称,因此Car的名称将为Car,Plane将为Plane,Vehicle将为Vehicle.我首先想到的是:
public Vehicle() {
super(getClass().getSimpleName()); //returns Car, Plane or Vehicle (Subclass' name)
}
Run Code Online (Sandbox Code Playgroud)
但这给了我错误:Cannot refer to an instance method while explicitly invoking a constructor.
如何将name字段设置为类名,而不是手动将其作为String传递?
我正在尝试制作JTextFields的2D网格来表示水平贴图.为了初始化TextFields的2D数组,我来了以下内容:
fields = new TextField[level.rows][level.columns];
TextField field;
for (int r = 0; r < level.rows; r++) {
for (int c = 0; c < level.columns; c++) {
field = new TextField(level.bricks[r][c].type);
fields[r][c] = field;
}
Run Code Online (Sandbox Code Playgroud)
现在我必须将它们添加到JFrame中,但是它们需要排成一行,以便每个row都在另一列之下.我确实找到了GridLayout,但是我对AWT/Swing不是很有经验,但仍然不知道如何实现所需的布局.我期待那里有某种方法gLayout.add(JComponent,row,column).
我试图用Android上的opengl进行一个简单的突破游戏,我无法决定是否必须使用单独的线程来处理某些游戏逻辑,比如更新游戏和碰撞检测.我做了一个简单的原型:在自己的线程中绘制和更新彼此的并行.它带来的问题比我想象的要多,所以我想:
我需要多个线程吗?
例如,由于突破游戏,有6X5网格块,并且每个块需要测试
球是否触摸这块砖?而且每秒约30次.如果我把这段代码放在我的主要绘图循环中:OnDrawFrame(GL10)我恐怕会花费很多渲染时间.
那么我可以回到单线程游戏吗?(因为Android设备与..pc相比并不那么强大.
在Android中创建和填充我的新SQLiteDatabase时,我遇到两个相互矛盾的异常.总之我的代码:
SQLiteOpenHelper扩展类:
public void onCreate(SQLiteDatabase db) {
db.execSQL(DB_TABLE_CREATE);
loadLevelData(db); //puts data in the database
//db.close(); <<< ?
}
Run Code Online (Sandbox Code Playgroud)
在我的activity类中,我实例化了这个类(在onCreate()中),并调用getWritableDatabase():
dbHelper = new DbOpenHelper(getApplicationContext());
database = dbHelper.getWritableDatabase();
Run Code Online (Sandbox Code Playgroud)
现在如果我db.close()在填充数据库之后没有调用,就像上面那样,我得到了
android.database.sqlite.DatabaseObjectNotClosedException: Application did not close the cursor or database object that was opened here
Run Code Online (Sandbox Code Playgroud)
但是,如果我关闭它,我会得到以下异常:
java.lang.IllegalStateException: database not open
Run Code Online (Sandbox Code Playgroud)
在getWritableDatabase()上.
这真让我困惑,所以有人可以帮我解决错误吗?
我有一个SQLite数据库用于我的游戏关卡,数据来自Name, Campaign, Number, Score.在构建我的LevelList(带有自定义视图的ListView)时,我想从列表中选择一个Campaign,您可以在其中查看旁边的高分,这是通过在数据库中添加此广告系列级别的所有分数获得的.
数据库中的每个级别都有一个与其相关的活动字段.但要制作广告系列列表,我只希望获得不同的(独特的)广告系列.有没有一种从数据库中获取这些内容的好方法?
获得这些的最佳方法是什么,并获得总分?
数据库的一部分以及我将如何制作我的levelpicker listview:

在手册中它说我应该使用小单位(0.1-10米).不鼓励使用像素作为度量单位.但是为什么Box2D能够更好地运行,并且比我使用小型单元时具有更好的模拟效果?
如果我给身体不同的密度/质量,它们仍然以相同的速度下降.我知道在没有空气阻力的地方,质量不会影响下落速度.
但是,我如何逻辑制作,比方说气球和砖块,以不同的速度下降?我能想到的最接近的方法是使用setGravityScale来设置这一切..
我可能会遗漏一些东西,但每当在Android(或java)中抛出异常时,我的应用程序总是强制关闭,整个程序终止.但是当数据库查询出现问题时,我只想返回主菜单.
try {
database.query(params);
} catch (Exception e) {
Log.e("Game", "Failed Loading Level", e);
returnToMenu();
}
Run Code Online (Sandbox Code Playgroud)
}
这例如强制关闭我的程序,我只想继续!
android ×6
java ×6
box2d ×2
exception ×2
libgdx ×2
opengl-es ×2
physics ×2
sqlite ×2
class ×1
database ×1
grid-layout ×1
inheritance ×1
jcomponent ×1
listview ×1
parameters ×1
simulation ×1
stage ×1
swing ×1