0

我正在学习andEngine并尝试根据一些示例制作一个简单的游戏。我的问题是游戏在某些随机时刻停止,我只能使用后退按钮;/我使用 logcat 发现问题,这里是日志:

/释放键'

I/DEBUG (2656): pid: 4918, tid: 4926 >>> com.homework.mygame <<< I/DEBUG (2656): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 3f8191d 4 I/调试(2656):R0 00000000 R1 00000000 R2 3F800000 R3 000191D4 I/DEBUG(2656):R4 00140A30 R5 00149978 R6 R6 R6 449D9B18 R7 44DBE008 I/DEBUG(2656):R8 449D9B4449D9B449D9B449B449B449B449B449B449B449B449B449B449B449B449B449B

I/DEBUG (2656): ip 00000000 sp 449d9b00 lr 8062eeb8 pc 806189b8 cpsr 600 00010 I/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 3 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 3 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 4 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 4 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 5 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine。util.pool.PoolUpdateHandler$1 已用完,还有 5 个项目尚未回收。再分配1个。I/AndEngine(4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 6 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 6 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 7 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,有 7 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 8 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev。andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 8 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 9 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 9 个项目尚未回收。再分配1个。D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 166K,55% 空闲 2686K/5895K,外部 905K/987K,暂停 268ms I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 10 件物品尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 10 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input。touch.TouchEvent$TouchEventPool 已用尽,还有 11 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 11 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 12 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 12 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 13 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 13 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev。andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 14 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 14 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 15 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 15 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 16 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 16 个项目尚未回收。分配 1 更多 e。我/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 17 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 17 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 18 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 18 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 19 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 19 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 20 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 20 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 21 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 21 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 22 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 22 项尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 23 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 23 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 24 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 24 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 25 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,有 25 件物品尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 26 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 26 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 27 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 27 个项目尚未回收。分配 1 更多 e。D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 10K,55% 空闲 2686K/5895K,外部 905K/927K,暂停 294ms D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 5K,55% 空闲 2686K/5895K,exte 1016K,

00 个 000189b8 /data/data/com.homework.mygame/lib

/libandenginephysicsbox2dextension.so (_ZN6b2Body13CreateFixtureEPK12b2FixtureDe f) I/DEBUG (2656): #01 pc 0000bfbc /data/data/com.homework.mygame/lib /libandenginephysicsbox2dextension.so (Java_com_badlogic_gdx_physics_box2d_Body_jniCreate/DEBUG__JJFFZFFSSS)
(2656):#02 pc 00011d74 /system/lib/libdvm.so I/DEBUG(2656):I/DEBUG(2656):PC 周围的代码:I/DEBUG(2656):80618998 eb00595d e3500000 0a000001 e1a00004 I/DEBUG( 2656):806189a8 ebfffd9f e594205c e3a03a19 e2833f75 I / DEBUG(2656):806189b8 e7921003 e1a00005 e3811001 e7821003 I / DEBUG(2656):806189c8 e8bd81f0 e594105c e1a00005 e284200c I / DEBUG(2656):806189d8 e2811a19 e2811f76 eb0003ae eaffffe2 I / DEBUG(2656) :i/debug(2656):LR周围的代码:I/DEBUG(2656):8062EE98 E51D0004 E12FFF1E E1A0C000 E1A00001 I/DEBUG(2656):8062EEA8 E1A0100100100C EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE e92d400febfffFFFEFFFFEFFFEFFFE(26500 000)EB.26551 i/debug(2655 ebug)i/debug ebug ebug(265,2651 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/DEBUG(2656):449d9ac4 43707d40 I/DEBUG(2656):449d9ac8 449d9ed8 I/DEBUG(2656):449d9acc/homework/data .mygame/lib/li bandenginephysicsbox2dextension.so I/DEBUG (2656): 449d9ad0 00149978 I/DEBUG (2656):
449d9ad4 449d9b18 I/DEBUG (2656): 449d9ad8 0000ffff I/DEBUG (2656): 449/dBEadG (2656): 449/dBEadG (2656): 449/dBEadG ):449d9ae0 00000001 I / DEBUG(2656):449d9ae4 00000000 I / DEBUG(2656):449d9ae8 00000000 I / DEBUG(2656):449d9aec 421cf249 I / DEBUG(2656):449d9af0 bf800001 I / DEBUG(2656):449d9af4 8062ef1c / data/data/com.homework.mygame/lib/li bandenginephysicsbox2dextension.so I/DEBUG (2656): 449d9af8 df002777 I/DEBUG (2656):
449d9afc e3a070ad I/调试(2656):

00 449d9b00 ffffffff I/DEBUG(2656):449d9b04 00000000 I/DEBUG

(2656): 449d9b08 80632718 I/DEBUG (2656): 449d9b0c 43707d84 I/DEBUG (2656):
449d9b10 449d9b6c I/DEBUG (2656): 449d9b14 8060bfc0/data/dataengine.我/调试(2656):#01 449d9b18 80632718 我/调试(2656):
449D9B1C 0016A928 I/DEBUG(2656):449D9B20 00000000 I/DEBUG(2656):449D9B24 00000000 I/DEBUG(2656):449D9B28B28B28B28 0000000000 I/DEBUG(2656):449B2C2C2C2C2C.449B2C.449B2C.449DCCORI00 00449B2C.449DCCOR I/449DCCORI00 000B2C 0049B2C.449DCORIS (2656):449D9B34 0000FFFF I/DEBUG(2656):449D9B38 449D9B90 I/DEBUG(2656):449D9B3C 00000003 I/DEBUG(2656) I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 28 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 28 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,有 29 件物品尚未回收。再分配1个。D/dalvikvm(602):Cronos GC_EXTERNAL_ALLOC 释放 257K,40% 空闲 6266K/10311K,外部 1546K/1581K,暂停 445ms I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽, 29 件物品尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 30 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 30 个项目尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 31 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,有 31 件物品尚未回收。分配 1 更多 e。I/AndEngine(4918):org.anddev.andengine.input.touch.TouchEvent$TouchEventPool 已用尽,还有 32 个项目尚未回收。再分配1个。I/AndEngine(4918):org.anddev.andengine.util.pool.PoolUpdateHandler$1 已用尽,还有 32 个项目尚未回收。分配 1 更多 e。D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 11K,55% 空闲 2685K/5895K,外部 726K/889K,暂停 139 毫秒 D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 10K,55% 空闲 2686K/5895K/7766 749K,暂停 140 毫秒 D/dalvikvm(929):Cronos GC_EXTERNAL_ALLOC 释放 5K,55% 空闲 2685K/5895K,外部 920K/1016K,暂停 138 毫秒 D/dalvikvm(602):Cronos GC_EXTERNAL_ALLOC 释放 346/10,431%K,6外部 1403K/1470K,暂停 343ms I/BootReceiver(602):复制 /data/tombstones/tombstone_02 到 DropBox (SYSTEM_TOMBSTONE) E/InputDispatcher(602): channel '408f3600 com.homework.mygame/com.homework.mygame.com.homework.mygame (server)' ~ 消费者关闭输入通道或发生错误。events=0x8 E/InputDispatcher(602): channel '408f3600 com.homework.mygame/com.homework.mygame.com.homework.mygame (server)' ~ 频道已经不可恢复地被破坏了,将被处理掉!D/Zygote(565):进程 4918 被信号(11)终止 D/dalvikvm(602):Cronos GC_FOR_MALLOC 释放 123K,39% 空闲 6384K/10311K,外部 958K/1470K,暂停 141ms I/dalvikvm-heap(602) :为 161568 字节分配 D/dalvikvm(602)将堆(碎片情况)增加到 9.928MB:Cronos GC_FOR_MALLOC 释放 3K,38% 可用 6538K/10503K,外部 958K/1470K,

所以我想这是因为 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;
                }
             };

提前致谢

格雷格

4

3 回答 3

3

不要触摸 TouchEvent 内的物理“身体”。UI-Thread 和 UpdateThread 讨厌同时工作!

于 2011-05-26T10:19:37.117 回答
1

我得到了同样的错误,这是因为我没有调用 scene.registerTouchArea(...)。希望这可以帮助某人。

于 2011-10-02T18:33:01.633 回答
0

就我而言,当我尝试使用时出现了问题

physicsWorld.destroyBody(fixture.getBody());

我避开了这条线,场景效果很好。

于 2015-04-16T01:22:53.563 回答