Проблема Android и Engine с сенсорными событиями - PullRequest
0 голосов
/ 14 мая 2011

Я изучаю andEngine и пытаюсь сделать простую игру, основанную на некоторых примерах. Моя проблема в том, что игра останавливается в некоторые случайные моменты, и я могу использовать только кнопку назад; / Я использовал logcat и нашел проблему, вот журнал:

/ отпустить клавиши

I / DEBUG (2656): pid: 4918, tid: 4926 >>> com.homework.mygame <<< I / DEBUG (2656): сигнал 11 (SIGSEGV), код 1 (SEGV_MAPERR), ошибка addr 3f8191d 4 I / DEBUG (2656): r0 00000000 r1 00000000 r2 3f800000 r3 000191d4 I / DEBUG (2656): r4 00140a30 r5 00149978 r6 449d9b18 r7 44dbe008 I / DEBUG (2656): r8 449d9b6c r9 43707d58 10 43707d40 fp 449d9ed8 </p>

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): Кронос GC_EXTERNAL_ALLOC освободил 166K, 55% бесплатно 2686 К / 5895 К, внешнее 905 К / 987 К, приостановлено 268 мс I / AndEngine (4918): org.anddev.andengine.input.touch.TouchEvent $ TouchEventPool был исчерпан с 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): Кронос GC_EXTERNAL_ALLOC освободил 10K, 55% бесплатно 2686K / 5895K, внешняя 905K / 927K, приостановлено 294ms D / dalvikvm (929): Cronos GC_EXTERNAL_ALLOC освободил 5K, 55% бесплатно 2686K / 5895K, удлиненный 920K / 1016K, приостановлено 135 мс I / DEBUG (2656):

00 шт. 000189b8 /data/data/com.homework.mygame/lib

/ libandenginephysicsbox2dextension.so (_ZN6b2Body13CreateFixtureEPK12b2FixtureDe е) I / DEBUG (2656): # 01 шт. 0000bfbc /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): код вокруг ПК: 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 e1a0100c eaffffff e92d400f ebffffe1 I / DEBUG (2656): 8062eeb8 e3500000 43700000 e8bd800f e52de008 I / 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/lib/li bandenginephysicsbox2dextension.so I / DEBUG (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 / 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 / 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 I / DEBUG (2656):
449d9b1c 0016a928 I / DEBUG (2656): 449d9b20 00000000 I / DEBUG (2656): 449d9b24 00000000 I / DEBUG (2656): 449d9b28 00000000 I / DEBUG (2656): 449d9b2c 00000000 I / DEBUG (2656): 449d9b30 00017b00 I / DEBUG (2656): 449d9b34 0000ffff I / DEBUG (2656): 449d9b38 449d9b90 I / DEBUG (2656): 449d9b3c 00000003 I / DEBUG (2656): 449d9b40 44843052 I / DEBUG (2656): 449d9b44 aca11d78 /system/lib/libdvm.so 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.Д / далвиквм (602): Кронос GC_EXTERNAL_ALLOC освободил 257K, 40% бесплатно 6266K / 10311K, внешний 1546K / 1581K, приостановлено 445 мс I / AndEngine (4918): org.anddev.andengine.util.pool.PoolUpdateHandler $ 1 был исчерпан, с 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): Кронос GC_EXTERNAL_ALLOC освободил 11K, 55% бесплатно 2685 К / 5895 К, внешняя 726 К / 889 К, приостановлено 139ms D / dalvikvm (929): Cronos GC_EXTERNAL_ALLOC освободил 10K, 55% бесплатно 2686K / 5895K, внешняя 667K / 749K, приостановлено 140 мс D / dalvikvm (929): Cronos GC_EXTERNAL_ALLOC освободил 5K, 55% бесплатно 2685К / 5895К, удлиненный 920К / 1016К, приостановлено 138ms D / dalvikvm (602): Cronos GC_EXTERNAL_ALLOC освобождает 32K, 40% бесплатно 6246К / 10311К, внешнее 1403К / 1470К, приостановил 343ms I / BootReceiver (602): Копирование / данные / надгробия / надгробие_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 (сервер) '~ Канал неисправимо сломан и будет ликвидирован! Д / Зигота (565): Процесс 4918 завершается сигналом (11) Д / далвиквм (602): Кронос GC_FOR_MALLOC освободил 123K, 39% бесплатно 6384K / 10311K, внешний 958K / 1470K, пауза 141мс I / dalvikvm-куча (602): Вырасти кучу (осколок) до 9,928 МБ для 161568-байтовый выделенный ион D / dalvikvm ( 602): Кронос GC_FOR_MALLOC освобожден 3K, 38% бесплатно 6538K / 10503K, внешняя л 958 К / 1470 К, пауза 147 мс I / WindowManager (602): ВЫИГРАТЬ СМЕРТЬ: Окно {408f3600 com.homework.mygame / com.homew ork.mygame.com.homework.mygame paused = false} D / dalvikvm (602): Кронос GC_FOR_MALLOC освобожден 2K, 38% бесплатно 6537K / 10503K, внешняя л 847 К / 1359 К, пауза 143 мс Я / далвиквм-куча (602): расти куча (случай фрагмента) до 9,891 МБ для 80792 байта Allocati на D / Dalvikvm (602): Кронос GC_FOR_MALLOC освобожден <1K, 38% бесплатно 6615K / 10631K, внешняя часть 847K / 1359K, приостановлено 144 мс D / dalvikvm (602): Cronos GC_FOR_MALLOC освободил 217K, 40% бесплатно 6398K / 10631K, внешний 847K / 1359K, приостановлено 142ms I / WindowManager (602): ВЫИГРАТЬ СМЕРТЬ: Window {4090fff8 SurfaceView paused = false} D / gralloc (602): освобождение буфера GPU при 0 D / gralloc ( 602): освобождение буфера GPU на 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, приостановлено 68мс В / 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): в org.apache.http.impl.conn.AbstractPoolEntry.open (Abst ractPoolEntry.java:164) W / System.err ( 929): в org.apache.http.impl.conn.AbstractPooledConnAdapter.o Ручка (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 е (AbstractHttpClient.java:555) W / System.err (929): в org.apache.http.impl.client.AbstractHttpClient.execut е (AbstractHttpClient.java:487) W / System.err (929): в org.apache.http.impl.client.AbstractHttpClient.execut е (AbstractHttpClient.java:465) W / System.err (929): в com.mobilityflow.animatedweather.weather_providers.Yr Provider.loadWeatherWeek (YrProvider.java:440) W / System.err (929): в com.mobilityflow.animatedweather.weather_providers.Yr Provider.providerLoadWeather (YrProvider.java:135) W / System.err (929): в com.mobilityflow.animatedweather.weather_providers.We atherProvider.loadWeatherData (WeatherProvider.java:125) W / System.err (929): в com.mobilityflow.animatedweather.WebProvider $ ThreadWe atherLoad.run (WebProvider.java:256) </p>

Так что, я полагаю, это из-за функции 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;
                }
             };

Заранее спасибо

Грег

Ответы [ 3 ]

3 голосов
/ 26 мая 2011

Не прикасайтесь к физическому телу внутри TouchEvent. UI-Thread и UpdateThread ненавидят работать одновременно!

1 голос
/ 02 октября 2011

Я получил ту же ошибку, и это потому, что я не вызвал scene.registerTouchArea (...). Надеюсь, это кому-нибудь поможет.

0 голосов
/ 16 апреля 2015

В моем случае проблема возникла, когда я пытаюсь использовать

physicsWorld.destroyBody(fixture.getBody());

Я избегал этой строки, и сцена работала нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...