Проблема Android и Engine с сенсорными событиями
Я изучаю andEngine и пытаюсь сделать простую игру на основе некоторых примеров. Моя проблема в том, что игра останавливается в некоторые случайные моменты, и я могу использовать только кнопку "назад"; / Я использовал logcat и нашел проблему, вот журнал:
/ отпускание клавиши
I/DEBUG ( 2656): pid: 4918, tid: 4926 >>> com.homework.mygame <<< I/DEBUG ( 2656): сигнал 11 (SIGSEGV), код 1 (SEGV_MAPERR), адрес ошибки 3f8191d 4 I / ОТЛАДКА (2656): r0 00000000 r1 00000000 r2 3f800000 r3 000191d 4 I/DEBUG ( 2656): r4 00140a30 r5 00149978 r6 449d9b18 r7 44dbe008 I / DEBUG (2656): r8 449d9b6c r9 4370d9108 4370d9
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, приостановлен 268 мс. I / AndEngine (4918): org.anddev.andengine.input.touch.TouchEvent $ было исчерпано, TouchEventPold с 10 пунктов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 10 элементов еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 11 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 11 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 12 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 12 элементов еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 13 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 13 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 14 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 14 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 15 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 15 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 16 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 16 элементов еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 17 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 17 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 18 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 18 элементов еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 19 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 19 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 20 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 20 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 21 элемент еще не переработан. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 21 элемент еще не переработан. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 22 элемента еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 22 элемента еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 23 элемента еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 23 элемента еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 24 элемента еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 24 элемента еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 25 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 25 элементов еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 26 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 26 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 27 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 27 элементов еще не переработаны. Выделено 1 мес. D/dalvikvm( 929): Cronos GC_EXTERNAL_ALLOC освобожден 10K, 55% свободен 2686K/5895K, внешний 905K/927K, приостановлен 294 мс D / dalvikvm (929): Cronos GC_EXTERNAL_ALLOC освобожден 5K, 55% свободный 2686K 5895/5895 1016K, пауза 135 мс I / DEBUG (2656):
00 шт 000189b8 /data/data/com.homework.mygame/lib
/libandenginephysicsbox2dextension.so (_ZN6b2Body13CreateFixtureEPK12b2FixtureDe f) I / DEBUG (2656): # 01 pc 0000bfbc /data/data/com.homework.mygame/lib /libandenginephysicsbox2J_F_J_F_J_F_D_F_D_F_D_F_D_F_D_F_D_F_D_F_D_F_D_F_D_F_D_F_D_D_F_D_F_D_D_F_D_D_F_D_D_F
(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/ ОТЛАДКА ( 2656): 806189b8 e7921003 e1a00005 e3811001 e7821003 I/ ОТЛАДКА ( 2656): 806189c8 e8bd81f0 e594105c e1a00005 e284200c I/ ОТЛАДКА ( 2656): 806189d8 e2811a19 e2811f76 eb0003ae eaffffe2 I/ ОТЛАДКА (2656): I / DEBUG (2656): код около lr: I/DEBUG ( 2656): 8062ee98 e51d0004 e12fff1e e1a0c000 e1a00001 I/DEBUG ( 2656): 8062eea8 e1a0100c eaffffff e92d400f ebffffe1 I/DEBEBE0000 800 e8008 800 e8 800 (2656) eBeD: 800 I8 DEBUG-E-800 DEBUG (2656): 8062eec8 ebfffff8 03a00001 13a00000 e49df008 I / DEBUG (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 80617174 /data/data/com.homework.mygame/liphis 2656): 449d9ad0 00149978 I / DEBUG (2656):
449d9ad4 449d9b18 I / DEBUG ( 2656): 449d9ad8 0000ffff I / DEBUG ( 2656): 449d9adc 44dbe008 I / DEBUG ( 2656): 449d9ae0 00000001 I / DEBUG ( 2656): 449d9ae4 00000000 I/DEBUG9 (DEBUG9: 260000 I / DEBUG9: 260000 I / DEBUG9 (DEBUG9: 2600) ( 2656): 449d9aec 421cf249 I / DEBUG ( 2656): 449d9af0 bf800001 I / DEBUG ( 2656): 449d9af4 8062ef1c /data/data/com.homework.mygame/lib/li bandenginephysicsbox2dextension 926D9D0DF0508: d9 / dfg. I / DEBUG (2656):
449d9afc e3a070ad I / DEBUG (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/data/com.homework.mygame/lib/li bandenginephysicsbox2dextension.so I / DEBUG (2656): # 01 449d9b18 80632718 26 / DE: DE
449d9b1c 0016a928 I/DEBUG ( 2656): 449d9b20 00000000 I/DEBUG ( 2656): 449d9b24 00000000 I/DEBUG ( 2656): 449d9b28 00000000 I/DEBUG ( 2656): 449d9b2c 00000000 I/DEBUG9: 26009 (DEBUG) 266 (отладка): 260000 (I / DEBUG): отладка 44: 29 (DEBUG): отладка (DEBUG): отладка (DEBUG) отладки: 449d299000000000000000000000000 (I / DEBUG): отладка для мобильных устройств (DEBUG): отладка: 449d9 (DEBUG): отладка (DEBUG): отладка (DEBUG) отладчика ( 2656): 449d9b34 0000ffff I/DEBUG ( 2656): 449d9b38 449d9b90 I/DEBUG ( 2656): 449d9b3c 00000003 I/DEBUG ( 2656): 449d9b40 44843052 I/DEBUG ( 2656): 44,1 фунтов / кв.дюйм / мин. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 28 элементов еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 28 элементов еще не переработаны. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, а 29 элементов еще не переработано. Выделено еще 1. D/dalvikvm( 602): Cronos GC_EXTERNAL_ALLOC освобожден 257K, 40% свободен 6266K/10311K, e xternal 1546K/1581K, приостановлен 445 мс I / AndEngine (4918): org.anddev.andengine.util.pool.PoolUpdateHandler 29 пункт еще не переработан. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 30 элементов еще не переработано. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 30 элементов еще не переработано. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 31 элемент еще не переработан. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 31 элемент еще не переработан. Выделено 1 мес. I/AndEngine( 4918): org.anddev.andengine.input.touch.TouchEvent$TouchEventPool был исчерпан, 32 элемента еще не переработаны. Выделено еще 1. I/AndEngine( 4918): org.anddev.andengine.util.pool.PoolUpdateHandler$1 был исчерпан, 32 элемента еще не переработаны. Выделено 1 мес. D/dalvikvm( 929): Cronos GC_EXTERNAL_ALLOC освобожден 11K, 55% свободен 2685K/5895K, внешний 726K/889K, приостановлен 139 мс D / dalvikvm (929): Cronos GC_EXTERNAL_ALLOC освобожден 10K, 55% свободный 2686K 695 6/5895 749K, пауза 140 мс D / dalvikvm (929): Cronos GC_EXTERNAL_ALLOC освобождена 5K, 55% свободна 2685K/5895K, расширен 921K/1016K, приостановлена 138 мс D / dalvikvm (602): Cronos GC_EXTERNAL_ALLOC освобождена 6KK, освобождена 6 0K 32KK, освобождена 32K6, 2624K 6116K611, освобождена 6 0KK, освобождена 32K6, 6246K611, освобождена 6KK 3210K, освобождена 6KK, 32K внешний 1403K / 1470K, приостановленный 343ms I/BootReceiver( 602): копирование /data/tombstones/tombstone_02 в DropBox (SYSTEM_ TOMBSTONE) E/InputDispatcher( 602): канал '408f3600 com.homework.mygame/com.homework.myg.com.homework.mygame (server)' ~ Потребитель закрыл входной канал или произошла ошибка. events=0x8 E/InputDispatcher( 602): канал '408f3600 com.homework.mygame/com.homework.myg ame.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-куча (602): Увеличение кучи (для фрагмента) до 9,928 МБ для 161568-байтового выделенного D / dalvikvm (602): Cronos GC_FOR_MALLOC освобожден 3K, 38% свободен 6538K/10503K, внешняя l 958K/1470K, приостановлена 147 мс I/WindowManager( 602): ВЫИГРАТЬ СМЕРТЬ: Окно {408f3600 com.homework.mygame/com.homew ork.mygame.com.homework.mygame paused=false} D/dalvikvm( 602): Cronos GC_FOR_MALLOC освобождено 2K, 38% бесплатно 6537K/10503K, внешняя l 847K/1359K, пауза 143ms I/dalvikvm-heap( 602): увеличение кучи (случай фрагмента) до 9,891MB для 80792-байтового выделения на D / dalvikvm (602): Cronos GC_FOR_MALLOC освобождено<1K, 38% свободно 6615K/10631K, внешне все 847K / 1359K, пауза 144 мс D / dalvikvm (602): Cronos GC_FOR_MALLOC освобожден 217K, 40% свободен 6398K/10631K, внешний 847K / 1359K, приостановлен 142 мс I/WindowManager( 602): ВЫИГРАТЬ СМЕРТ: Окно {4090fff = =false} D/gralloc ( 602): освобождение буфера графического процессора при 0 D/gralloc ( 602): освобождение буфера графического процессора при 307200 I/ActivityManager( 602): процесс com.homework.mygame (pid 4918) умер. W/InputManagerService( 602): Получено RemoteException, отправляющее уведомление setActive(false) в pid 4918 uid 10088 D/dalvikvm( 929): Cronos GC_EXPLICIT освобожден 9K, 55% свободен 2683K/5895K, внешний 4 89K/889K, приостановлен 68ms V/com.mobilityflow.animatedweather.services.UpdateService$ServiceThread( 929): временная тревога onReceive(), запущенная во время: 2011-05-13 17:07:25.491 W/System.err( 929): java.net.UnknownHostException: www.yr.no W/System.err( 929): на java.net.InetAddress.lookupHostByName(InetAddress.jav a:506) W/System.err( 929): на java.net.InetAddress.getAllByNameImpl(InetAddress.jav a:294) W/System.err( 929): в java.net.InetAddress.getAllByName(InetAddress.java:25 6) W/System.err( 929): в org.apache.http.impl.conn.DefaultClientConnectionOper ator.openConnection(DefaultClientConnectionOperator.java:136) W/System.err( 929): at org.apache.http.impl.conn.AbstractPoolEntry.open(Abst ractPoolEntry.java:164) W/System.err( 929): at org.apache.http.impl.conn.AbstractPooledConnAdapter.o pen(AbstractPooledConnAdapter.java:119) W/System.err( 929): в org.apache.http.impl.client.DefaultRequestDirector.ex ecute(DefaultRequestDirector.java:348) W/System.err( 929): в org.apache.http.impl.client.AbstractHttpClient.execut e(AbstractHttpClient.java:555) W/System.err( 929): at org.apache.http.impl.client.AbstractHttpClient.execut e(AbstractHttpClient.java:487) W/System.err( 929): в org.apache.http.impl.client.AbstractHttpClient.execut e(AbstractHttpClient.java:465) W/System.err( 929): в com.mobilityflow.animatedweather.weather_providers.Yr Поставщик.loadWeatherWeek(YrProvider.java:440) W/System.err( 929): на com.mobilityflow.animatedweather.weather_providers.Yr Provider.providerLoadWeather(YrProvider.java:135) W/System.err( 929): на ком.mobilityflow.animatedweather.weather_providers.We atherProvider.loadWeatherData(WeatherProvider.java:125) W/System.err( 929): в com.mobilityflow.animatedweather.WebProvider$ThreadWe atherLoad.run(WebProvider.java:256)
Так что я думаю, это потому, что на функцию 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;
}
};
заранее спасибо
Greg
3 ответа
Не прикасайтесь к физическому телу внутри TouchEvent. UI-Thread и UpdateThread ненавидят работать одновременно!
Я получил ту же ошибку, и это потому, что я не вызвал scene.registerTouchArea(...). Надеюсь, это кому-нибудь поможет.
В моем случае проблема появилась при попытке использовать
physicsWorld.destroyBody(fixture.getBody());
Я избегал этой линии, и сцена работала нормально.