2010-11-12 4 views
3

Пытается сделать пример PhysicsRemoveExample.java от here.Что не так с моим кодом PhysicsRemoveExample.java (AndEngine)?

я получаю это сообщение при запуске программы:

Sorry! The application PhysicsRemoveExample(process org.anddev.andengine.PhysicsRemoveExample) has stopped unexpectedly. Please try again. 

У меня есть Путь сборки andengine.jar и andenginephysicsbox2dextension.jar assets/gfx -> face_box_tiled.png и face_circle_tiled.png.

Это мой код Java в PhysicsRemoveExample.java. То же, что и в примере, хотя я изменился на extends BaseGameActivity.

package org.anddev.andengine.PhysicsRemoveExample; 

import org.anddev.andengine.engine.Engine; 
import org.anddev.andengine.engine.camera.Camera; 
import org.anddev.andengine.engine.options.EngineOptions; 
import org.anddev.andengine.engine.options.EngineOptions.ScreenOrientation; 
import org.anddev.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy; 
import org.anddev.andengine.entity.primitive.Rectangle; 
import org.anddev.andengine.entity.scene.Scene; 
import org.anddev.andengine.entity.scene.Scene.IOnAreaTouchListener; 
import org.anddev.andengine.entity.scene.Scene.IOnSceneTouchListener; 
import org.anddev.andengine.entity.scene.Scene.ITouchArea; 
import org.anddev.andengine.entity.scene.background.ColorBackground; 
import org.anddev.andengine.entity.shape.Shape; 
import org.anddev.andengine.entity.sprite.AnimatedSprite; 
import org.anddev.andengine.entity.util.FPSLogger; 
import org.anddev.andengine.extension.physics.box2d.PhysicsConnector; 
import org.anddev.andengine.extension.physics.box2d.PhysicsFactory; 
import org.anddev.andengine.extension.physics.box2d.PhysicsWorld; 
import org.anddev.andengine.input.touch.TouchEvent; 
import org.anddev.andengine.opengl.texture.Texture; 
import org.anddev.andengine.opengl.texture.TextureOptions; 
import org.anddev.andengine.opengl.texture.region.TextureRegionFactory; 
import org.anddev.andengine.opengl.texture.region.TiledTextureRegion; 
import org.anddev.andengine.sensor.accelerometer.AccelerometerData; 
import org.anddev.andengine.sensor.accelerometer.IAccelerometerListener; 
import org.anddev.andengine.ui.activity.BaseGameActivity; 

import android.hardware.SensorManager; 
import android.widget.Toast; 

import com.badlogic.gdx.math.Vector2; 
import com.badlogic.gdx.physics.box2d.Body; 
import com.badlogic.gdx.physics.box2d.FixtureDef; 
import com.badlogic.gdx.physics.box2d.BodyDef.BodyType; 


/** 
* @author Nicolas Gramlich 
* @since 18:47:08 - 19.03.2010 
*/ 
public class PhysicsRemoveExample extends BaseGameActivity implements IAccelerometerListener, IOnSceneTouchListener, IOnAreaTouchListener { 
     // =========================================================== 
     // Constants 
     // =========================================================== 


     private static final int CAMERA_WIDTH = 720; 
     private static final int CAMERA_HEIGHT = 480; 


     // =========================================================== 
     // Fields 
     // =========================================================== 


     private Texture mTexture; 


     private TiledTextureRegion mBoxFaceTextureRegion; 
     private TiledTextureRegion mCircleFaceTextureRegion; 


     private PhysicsWorld mPhysicsWorld; 


     private int mFaceCount = 0; 


     private final Vector2 mTempVector = new Vector2(); 


     // =========================================================== 
     // Constructors 
     // =========================================================== 


     // =========================================================== 
     // Getter & Setter 
     // =========================================================== 


     // =========================================================== 
     // Methods for/from SuperClass/Interfaces 
     // =========================================================== 


     @Override 
     public Engine onLoadEngine() { 
       Toast.makeText(this, "Touch the screen to add objects. Touch an object to remove it.", Toast.LENGTH_LONG).show(); 
       final Camera camera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT); 


       final EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT), camera); 
       engineOptions.getTouchOptions().setRunOnUpdateThread(true); 


       return new Engine(engineOptions); 
     } 


     @Override 
     public void onLoadResources() { 
       this.mTexture = new Texture(64, 64, TextureOptions.BILINEAR_PREMULTIPLYALPHA); 
       TextureRegionFactory.setAssetBasePath("gfx/"); 
       this.mBoxFaceTextureRegion = TextureRegionFactory.createTiledFromAsset(this.mTexture, this, "face_box_tiled.png", 0, 0, 2, 1); // 64x32 
       this.mCircleFaceTextureRegion = TextureRegionFactory.createTiledFromAsset(this.mTexture, this, "face_circle_tiled.png", 0, 32, 2, 1); // 64x32 
       this.mEngine.getTextureManager().loadTexture(this.mTexture); 


       this.enableAccelerometerSensor(this); 
     } 


     @Override 
     public Scene onLoadScene() { 
       this.mEngine.registerUpdateHandler(new FPSLogger()); 


       final Scene scene = new Scene(2); 
       scene.setBackground(new ColorBackground(0, 0, 0)); 
       scene.setOnSceneTouchListener(this); 


       this.mPhysicsWorld = new PhysicsWorld(new Vector2(0, SensorManager.GRAVITY_EARTH), false); 


       final Shape ground = new Rectangle(0, CAMERA_HEIGHT - 2, CAMERA_WIDTH, 2); 
       final Shape roof = new Rectangle(0, 0, CAMERA_WIDTH, 2); 
       final Shape left = new Rectangle(0, 0, 2, CAMERA_HEIGHT); 
       final Shape right = new Rectangle(CAMERA_WIDTH - 2, 0, 2, CAMERA_HEIGHT); 


       final FixtureDef wallFixtureDef = PhysicsFactory.createFixtureDef(0, 0.5f, 0.5f); 
       PhysicsFactory.createBoxBody(this.mPhysicsWorld, ground, BodyType.StaticBody, wallFixtureDef); 
       PhysicsFactory.createBoxBody(this.mPhysicsWorld, roof, BodyType.StaticBody, wallFixtureDef); 
       PhysicsFactory.createBoxBody(this.mPhysicsWorld, left, BodyType.StaticBody, wallFixtureDef); 
       PhysicsFactory.createBoxBody(this.mPhysicsWorld, right, BodyType.StaticBody, wallFixtureDef); 


       scene.getBottomLayer().addEntity(ground); 
       scene.getBottomLayer().addEntity(roof); 
       scene.getBottomLayer().addEntity(left); 
       scene.getBottomLayer().addEntity(right); 


       scene.registerUpdateHandler(this.mPhysicsWorld); 


       scene.setOnAreaTouchListener(this); 


       return scene; 
     } 


     @Override 
     public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final ITouchArea pTouchArea, final float pTouchAreaLocalX, final float pTouchAreaLocalY) { 
       if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN) { 
         PhysicsRemoveExample.this.removeFace((AnimatedSprite)pTouchArea); 
         return true; 
       } 


       return false; 
     } 


     public void onLoadComplete() { 


     } 


     @Override 
     public boolean onSceneTouchEvent(final Scene pScene, final TouchEvent pSceneTouchEvent) { 
       if(this.mPhysicsWorld != null) { 
         if(pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN) { 
           this.addFace(pSceneTouchEvent.getX(), pSceneTouchEvent.getY()); 
           return true; 
         } 
       } 
       return false; 
     } 


     @Override 
     public void onAccelerometerChanged(final AccelerometerData pAccelerometerData) { 
       this.mTempVector.set(pAccelerometerData.getY(), pAccelerometerData.getX()); 


       this.mPhysicsWorld.setGravity(this.mTempVector); 
     } 


     // =========================================================== 
     // Methods 
     // =========================================================== 


     private void addFace(final float pX, final float pY) { 
       final Scene scene = this.mEngine.getScene(); 


       this.mFaceCount++; 


       final AnimatedSprite face; 
       final Body body; 


       final FixtureDef objectFixtureDef = PhysicsFactory.createFixtureDef(1, 0.5f, 0.5f); 


       if(this.mFaceCount % 2 == 0) { 
         face = new AnimatedSprite(pX, pY, this.mBoxFaceTextureRegion); 
         body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, face, BodyType.DynamicBody, objectFixtureDef); 
       } else { 
         face = new AnimatedSprite(pX, pY, this.mCircleFaceTextureRegion); 
         body = PhysicsFactory.createCircleBody(this.mPhysicsWorld, face, BodyType.DynamicBody, objectFixtureDef); 
       } 


       face.animate(200, true); 
       face.setUpdatePhysics(false); 


       scene.registerTouchArea(face); 
       scene.getTopLayer().addEntity(face); 
       this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(face, body, true, true, false, false)); 
     } 


     private void removeFace(final AnimatedSprite face) { 
       final Scene scene = this.mEngine.getScene(); 


       final PhysicsConnector facePhysicsConnector = this.mPhysicsWorld.getPhysicsConnectorManager().findPhysicsConnectorByShape(face); 


       this.mPhysicsWorld.unregisterPhysicsConnector(facePhysicsConnector); 
       this.mPhysicsWorld.destroyBody(facePhysicsConnector.getBody()); 


       scene.unregisterTouchArea(face); 
       scene.getTopLayer().removeEntity(face); 
     } 


     // =========================================================== 
     // Inner and Anonymous Classes 
     // =========================================================== 
} 

И я получаю эту ошибку в LogCat:

11-12 20:31:39.482: ERROR/vold(27): Error opening switch name path '/sys/class/switch/test' (No such file or directory) 
11-12 20:31:39.482: ERROR/vold(27): Error bootstrapping switch '/sys/class/switch/test' (No such file or directory) 
11-12 20:31:39.482: ERROR/vold(27): Error opening switch name path '/sys/class/switch/test2' (No such file or directory) 
11-12 20:31:39.482: ERROR/vold(27): Error bootstrapping switch '/sys/class/switch/test2' (No such file or directory) 
11-12 20:31:55.381: ERROR/BatteryService(52): usbOnlinePath not found 
11-12 20:31:55.381: ERROR/BatteryService(52): batteryVoltagePath not found 
11-12 20:31:55.381: ERROR/BatteryService(52): batteryTemperaturePath not found 
11-12 20:31:55.401: ERROR/SurfaceFlinger(52): Couldn't open /sys/power/wait_for_fb_sleep or /sys/power/wait_for_fb_wake 
11-12 20:32:01.131: ERROR/EventHub(52): could not get driver version for /dev/input/mouse0, Not a typewriter 
11-12 20:32:01.131: ERROR/EventHub(52): could not get driver version for /dev/input/mice, Not a typewriter 
11-12 20:32:01.351: ERROR/System(52): Failure starting core service 
11-12 20:32:01.351: ERROR/System(52): java.lang.SecurityException 
11-12 20:32:01.351: ERROR/System(52):  at android.os.BinderProxy.transact(Native Method) 
11-12 20:32:01.351: ERROR/System(52):  at android.os.ServiceManagerProxy.addService(ServiceManagerNative.java:146) 
11-12 20:32:01.351: ERROR/System(52):  at android.os.ServiceManager.addService(ServiceManager.java:72) 
11-12 20:32:01.351: ERROR/System(52):  at com.android.server.ServerThread.run(SystemServer.java:176) 
11-12 20:32:01.361: ERROR/AndroidRuntime(52): Crash logging skipped, no checkin service 
11-12 20:32:12.683: ERROR/ActivityThread(103): Failed to find provider info for android.server.checkin 
11-12 20:32:15.853: ERROR/ActivityThread(103): Failed to find provider info for android.server.checkin 
11-12 20:32:16.183: ERROR/ActivityThread(103): Failed to find provider info for android.server.checkin 
11-12 20:32:17.303: ERROR/MediaPlayerService(31): Couldn't open fd for content://settings/system/notification_sound 
11-12 20:32:17.313: ERROR/MediaPlayer(52): Unable to to create media player 
11-12 20:32:23.833: ERROR/AndroidRuntime(135): ERROR: thread attach failed 
11-12 20:32:32.292: ERROR/AndroidRuntime(178): ERROR: thread attach failed 
11-12 20:32:59.373: ERROR/AndroidRuntime(225): Uncaught handler: thread main exiting due to uncaught exception 
11-12 20:32:59.533: ERROR/AndroidRuntime(225): java.lang.ExceptionInInitializerError 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at org.anddev.andengine.PhysicsRemoveExample.PhysicsRemoveExample.onLoadScene(PhysicsRemoveExample.java:125) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at org.anddev.andengine.ui.activity.BaseGameActivity.doResume(BaseGameActivity.java:159) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at org.anddev.andengine.ui.activity.BaseGameActivity.onWindowFocusChanged(BaseGameActivity.java:83) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at com.android.internal.policy.impl.PhoneWindow$DecorView.onWindowFocusChanged(PhoneWindow.java:1969) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at android.view.View.dispatchWindowFocusChanged(View.java:3731) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at android.view.ViewGroup.dispatchWindowFocusChanged(ViewGroup.java:657) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1819) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at android.os.Handler.dispatchMessage(Handler.java:99) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at android.os.Looper.loop(Looper.java:123) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at android.app.ActivityThread.main(ActivityThread.java:4363) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at java.lang.reflect.Method.invokeNative(Native Method) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at java.lang.reflect.Method.invoke(Method.java:521) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at dalvik.system.NativeStart.main(Native Method) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225): Caused by: java.lang.UnsatisfiedLinkError: Library andenginephysicsbox2dextension not found 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at java.lang.Runtime.loadLibrary(Runtime.java:489) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at java.lang.System.loadLibrary(System.java:557) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  at org.anddev.andengine.extension.physics.box2d.PhysicsWorld.<clinit>(PhysicsWorld.java:30) 
11-12 20:32:59.533: ERROR/AndroidRuntime(225):  ... 15 more 
11-12 20:32:59.603: ERROR/dalvikvm(225): Unable to open stack trace file '/data/anr/traces.txt': Permission denied 

Что не так? Попробовали с эмулятором 1.6 и 2.1 и создали совершенно новый AVD. Я без проблем мог бы сделать Getting Started Tutorial (Video – 5 minutes).

ответ

5

Проверьте libandenginephysicsbox2dextension.so файл находится в ЛИЭС/armeabi папки

+0

UnsatisfiedLinkError: Library andenginephysicsbox2dextension не найден - это ключ –

0

просто скопировать файл «Libs» -не в «Lib» Файл- из проекта примеров AndEngine и вставить его в свой проект.

2

Это то, что я сделал, чтобы получить физика работает в Затмении :::

1. Запуск и установка: Mercurial-2.1.exe

  1. ртутный-2,1 дает вам Инструмент командной строки HG.

  2. Используйте инструмент hg в командной строке (DOS), чтобы получить последние версии AndEngine и andenginephysicsbox2dextension. Используйте следующие команды Hg>

рт.ст. клон https://code.google.com/p/andenginephysicsbox2dextension/

рт.ст. клон https://andengine.googlecode.com/hg/ AndEngine

  1. Это загрузит два проекта. Импортируйте их в Eclipse. Используйте FILE -> Import -> Существующие проекты в рабочей области -> выберите корневой каталог -> BROWSE Найдите проект AndEngine, загруженный с помощью команды hg. Сделайте то же самое для проекта andenginephysicsbox2dextension - так что у вас будут два библиотечных проекта в Eclipse.

  2. Возможно, вам придется щелкнуть правой кнопкой мыши по проекту и установить «Цель создания проекта» на Android 2.3. Вероятно, вам также понадобится создать папку res и gen в корне проекта. Убедитесь, что проект скомпилирован.

  3. Щелкните правой кнопкой мыши проект и выберите «Экспорт» -> в разделе «Java» выберите параметр «jar file». Нажмите NEXT. UNTICK EVERYTHING в правой панели - где говорится AndroidManifest.xml и все остальное в этом списке снимите флажок. укажите местоположение файла .jar, например, если вы компилируете AndEngine.jar , вы можете ввести: C: \ temp \ andengine.jar в поле ввода файла jar. Нажмите «ОКОНЧАТЬ» - он должен скомпилироваться.

  4. Перейти на этот сайт:

    http://code.google.com/p/andenginephysicsbox2dextension/source/browse/libs/?name=ed03082d4a&r=38406ae958c5f5ed89e2e73e9e71385c242e8e28#libs%2Farmeabi-v7a%253Fstate%253Dclosed

Скачать два файлы .so это нужно будет идти в: armeabi armeabi-v7a

  1. , Jar файлы идут в папку lib с корня. . Файлы .so --- создайте папку с именем libs. В папке libs создайте две папки armeabi AND armeabi-v7a - файлы .so входят в эти две папки.
+0

Спасибо за объяснение, чтобы удалить эту ошибку. –

+0

Но после копирования это приложение для файлов lib не будет запущено. Приложение запускается, но закрывается без отображения. –

+0

Репозитории Google Code теперь устарели, AndEngine и все расширения находятся на GitHub: https://github.com/nicolasgramlich/ – JohnEye

0

И Старый andengine.jar andenginephysicsbox2dextension.jar remvove.

И скопировать «Lib» и папку «Libs» - от проекта примеров AndEngine и вставьте его в свой project.and добавить Lib внутреннего .jar файл Добавить в пути сборки

0

Я столкнулся с той же проблемой и был не в состоянии сделать что-то с этой проблемой. опять и опять.

Ааа, наконец, я смог решить эту проблему и хочу поделиться, потому что должно быть могут одолевать должны потерять там тонны на волосы :)

я просто заменить один из Николаса репо в RealMayo репо. Ниже приведена ссылка https://github.com/RealMayo/AndEnginePhysicsBox2DExtension.

Пожалуйста, дайте мне знать. :)

Счастливое кодирование.

 Смежные вопросы

  • Нет связанных вопросов^_^