【发布时间】:2011-05-14 08:47:54
【问题描述】:
我正在学习 andEngine 并尝试根据一些示例制作一个简单的游戏。我的问题是游戏在某些随机时刻停止,我只能使用返回按钮;/ 我使用 logcat 发现问题,这里是日志:
/释放键'
我/调试(2656):pid:4918,tid: 第4926章>>> 我/调试(2656):信号11 (SIGSEGV),代码 1 (SEGV_MAPERR),故障 地址 3f8191d 4 I/调试(2656):r0 00000000 r1 00000000 r2 3f800000 r3 000191d4 I/调试(2656):r4 00140a30 r5 00149978 r6 449d9b18 r7 44dbe008 I/调试(2656):R8 449d9b6c r9 43707d58 10 43707d40 fp 449d9ed8
I/调试 (2656): ip 00000000 sp 449d9b00 lr 8062eeb8 个人电脑 806189b8 cpsr 600 00010 I/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 3 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 3 个项目尚未回收。已分配 1 更多的 。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 4 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 4 件物品尚未回收。已分配 1 更多的 。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 5 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 5 个项目尚未回收。已分配 1 更多的 。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 6 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 6 件物品尚未回收。已分配 1 更多的 。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 7 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 7 件物品尚未回收。已分配 1 更多的 。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 8 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 8 件物品尚未回收。已分配 1 更多的 。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 9 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 9 件物品尚未回收。已分配 1 更多的 。 D/dalvikvm(929):克罗诺斯 GC_EXTERNAL_ALLOC 释放 166K,释放 55% 2686K/5895K,外接905K/987K, 暂停 268 毫秒 I/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 10 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 10 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 11 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 11 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 12 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 12 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 13 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 13 个项目尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 14 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 14 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 15 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 15 个项目尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 16 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 16 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 17 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 17 个项目尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 18 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 18 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 19 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 19 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 20 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 20 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 21 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 21 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 22 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 22 项尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 23 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 23 项尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 24 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 24 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 25 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 25 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 26 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 26 项尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 27 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 27 项尚未回收。已分配 1 更多的。 D/dalvikvm(929):克罗诺斯 GC_EXTERNAL_ALLOC 释放 10K,释放 55% 2686K/5895K,外接905K/927K, 暂停 294 毫秒 D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 5K,释放 55% 2686K/5895K,外接 920K/1016K, 暂停 135 毫秒 I/DEBUG(2656):
00 pc 000189b8 /data/data/com.homework.mygame/lib
/libandenginephysicsbox2dextension.so (_ZN6b2Body13CreateFixtureEPK12b2FixtureDe f) I/DEBUG (2656): #01 pc 0000英国广播公司 /data/data/com.homework.mygame/lib /libandenginephysicsbox2dextension.so (Java_com_badlogic_gdx_physics_box2d_Body_ jniCreateFixture__JJFFFZSSS) I/DEBUG
(2656):#02 个人电脑 00011d74 /system/lib/libdvm.so I/DEBUG ( 2656): I/DEBUG (2656): 代码 电脑:我/调试(2656):80618998 eb00595d e3500000 0a000001 e1a00004 我/调试(2656):806189a8 ebfffd9f e594205c e3a03a19 e2833f75 I/DEBUG ( 2656): 806189b8 e7921003 e1a00005 e3811001 e7821003 I/调试(2656): 806189c8 e8bd81f0 e594105c e1a00005 e284200c I/调试(2656):806189d8 e2811a19 e2811f76 eb0003ae eaffffe2 我/调试(2656): 我/调试(2656): lr 周围的代码:I/DEBUG(2656): 8062ee98 e51d0004 e12fff1e e1a0c000 e1a00001 I/调试(2656):8062eea8 e1a0100c eaffffff e92d400f ebffffe1 我/调试(2656):8062eeb8 e3500000 43700000 e8bd800f e52de008 I/DEBUG ( 2656): 8062eec8 ebfffff8 03a00001 13a00000 e49df008 I/调试(2656): 8062eed8 e52de008 ebfffff3 33a00001 23a00000 I/DEBUG (2656): I/DEBUG
(2656):堆栈:I/DEBUG(2656):
449d9ac0 43707d58 I/调试(2656): 449d9ac4 43707d40 I/调试(2656): 449d9ac8 449d9ed8 I/调试(2656): 449d9acc 80617174 /data/data/com.homework.mygame/lib/li bandenginephysicsbox2dextension.so 我/调试(2656):449d9ad0 00149978 I/DEBUG (2656):
449d9ad4 449d9b18 I/调试(2656): 449d9ad8 0000ffff I/调试(2656): 449d9adc 44dbe008 I/调试(2656): 449d9ae0 00000001 I/调试(2656): 449d9ae4 00000000 I/调试(2656): 449d9ae8 00000000 I/调试(2656): 449d9aec 421cf249 I/调试(2656): 449d9af0 bf800001 I/调试(2656): 449d9af4 8062ef1c /data/data/com.homework.mygame/lib/li bandenginephysicsbox2dextension.so 我/调试(2656):449d9af8 df002777 I/调试 (2656):
449d9afc e3a070ad I/DEBUG(2656):00 449d9b00 ffffffff I/DEBUG (2656): 449d9b04 00000000 I/DEBUG
(2656):449d9b08 80632718 我/调试(2656):449d9b0c 43707d84 I/调试(2656):
449d9b10 449d9b6c I/调试(2656): 449d9b14 8060bfc0 /data/data/com.homework.mygame/lib/li bandenginephysicsbox2dextension.so 我/调试(2656):#01 449d9b18 80632718 I/DEBUG (2656):
449d9b1c 0016a928 I/调试(2656): 449d9b20 00000000 I/调试(2656): 449d9b24 00000000 I/调试(2656): 449d9b28 00000000 I/调试(2656): 449d9b2c 00000000 I/调试(2656): 449d9b30 00017b00 I/调试(2656): 449d9b34 0000ffff I/调试(2656): 449d9b38 449d9b90 I/调试(2656): 449d9b3c 00000003 I/调试(2656): 449d9b40 44843052 I/调试(2656): 449d9b44 aca11d78 /system/lib/libdvm.so I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 28 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 28 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 29 个项目 尚未回收。再分配1个。 D/dalvikvm(602):克罗诺斯 GC_EXTERNAL_ALLOC 释放 257K,释放 40% 6266K/10311K,外接 1546K/1581K, 暂停 445 毫秒 I/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 29 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 30 个项目 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 30 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 31 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 31 件物品尚未回收。已分配 1 更多的。我/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 32 项 尚未回收。再分配1个。 我/AndEngine(4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,与 32 件物品尚未回收。已分配 1 更多的。 D/dalvikvm(929):克罗诺斯 GC_EXTERNAL_ALLOC 释放 11K,释放 55% 2685K/5895K,外接726K/889K, 暂停 139 毫秒 D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 10K,释放 55% 2686K/5895K,外接667K/749K, 暂停 140 毫秒 D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 5K,释放 55% 2685K/5895K,外接 920K/1016K, 暂停 138 毫秒 D/dalvikvm(602):Cronos GC_EXTERNAL_ALLOC 释放 32K,释放 40% 6246K/10311K,外接1403K/1470K, 暂停 343 毫秒 I/BootReceiver(602): 复制 /data/tombstones/tombstone_02 到 DropBox (SYSTEM_TOMBSTONE) E/InputDispatcher(602):通道 '408f3600 com.homework.mygame/com.homework.myg ame.com.homework.mygame(服务器)'~ 消费者关闭输入通道或 错误发生。事件=0x8 E/InputDispatcher(602):通道 '408f3600 com.homework.mygame/com.homework.myg ame.com.homework.mygame(服务器)'~ 通道被不可恢复地破坏并且 将被处置! D/合子(565): 进程 4918 由信号 (11) 终止 D/dalvikvm(602):克罗诺斯 GC_FOR_MALLOC 释放 123K,释放 39% 6384K/10311K,外接 958K/1470K, 暂停 141 毫秒 I/dalvikvm 堆(602): 将堆(碎片案例)增加到 9.928MB 161568 字节分配 D/dalvikvm( 602): Cronos GC_FOR_MALLOC 释放 3K, 38% 免费 6538K/10503K,外置 958K/1470K,暂停147ms I/WindowManager(602):赢得死亡: 窗口{408f3600 com.homework.mygame/com.homew ork.mygame.com.homework.mygame 暂停=假} D/dalvikvm(602): Cronos GC_FOR_MALLOC 释放 2K,38% 免费 6537K/10503K,外接 847K/1359K,暂停143ms I/dalvikvm-heap(602): 增长堆 (碎片案例)到 9.891MB 为 80792 字节 分配 D/dalvikvm(602):Cronos GC_FOR_MALLOC 释放
所以我猜这是因为 onAreaTouched 函数。我用它来控制一个玩家,有2个箭头,我们可以触摸它们来从左到右移动玩家。我做得对还是应该以其他方式做?这是我的代码:
mRArrow = new Sprite(125, CAMERA_HEIGHT - 55, mRArrowTextureRegion) {
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);
}
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
Body playerBody = mPhysicsWorld.getPhysicsConnectorManager()
.findBodyByShape(mPlayer);
playerBody.setTransform(new Vector2((playerBody.getPosition().x + 0.15f) ,playerBody.getPosition().y), 0);
return true;
}
};
mLArrow = new Sprite(15, CAMERA_HEIGHT - 55, mLArrowTextureRegion) {
@Override
protected void onManagedUpdate(float pSecondsElapsed) {
super.onManagedUpdate(pSecondsElapsed);
}
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
Body playerBody = mPhysicsWorld.getPhysicsConnectorManager()
.findBodyByShape(mPlayer);
playerBody.setTransform(new Vector2((playerBody.getPosition().x - 0.15f) ,playerBody.getPosition().y), 0);
return true;
}
};
提前致谢
格雷格
【问题讨论】:
标签: android andengine touch-event