2010-11-12 5 views
3

Essayer de créer l'exemple PhysicsRemoveExample.java à partir de here.Quel est le problème avec mon code PhysicsRemoveExample.java (AndEngine)?

Je reçois ce message lorsque le programme commence:

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

je construire le chemin andengine.jar et andenginephysicsbox2dextension.jar assets/gfx -> face_box_tiled.png et face_circle_tiled.png.

Ceci est mon code Java en PhysicsRemoveExample.java. Même chose que dans l'exemple, même si j'ai changé pour 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 
     // =========================================================== 
} 

Et je reçois cette erreur dans 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 

Qu'est-ce qui ne va pas? J'ai essayé avec l'émulateur 1.6 et 2.1 et j'ai créé un tout nouveau AVD. Je pourrais faire le Getting Started Tutorial (Video – 5 minutes) sans aucun problème.

Répondre

5

Vérifiez si libandenginephysicsbox2dextension.so fichier est dans votre dossier/libs armeabi

+0

L'UnsatisfiedLinkError: bibliothèque etenginephysicsbox2dextension introuvable est la clé –

0

copie le fichier « libs » -non Fichier- « lib » du projet exemples de AndEngine et le coller dans votre projet.

2

C'est ce que je l'ai fait pour obtenir la physique travaillant dans Eclipse :::

1. Exécuter et installer: Mercurial-2.1.exe

  1. La Mercurial-2.1 vous donne la Outil de commande HG.

  2. Utilisez l'outil hg à l'invite de commande (DOS) pour obtenir la dernière version d'AndEngine et andenginephysicsbox2dextension. Utilisez les commandes suivantes hg>

hg clone https://code.google.com/p/andenginephysicsbox2dextension/

hg clone https://andengine.googlecode.com/hg/ AndEngine

  1. Cela téléchargera les deux projets. Importez-les dans Eclipse. Utilisez FICHIER -> Importer -> Projets existants dans l'espace de travail -> sélectionnez le répertoire racine -> BROWSE Trouvez le projet AndEngine téléchargé avec la commande hg. Faites de même pour le projet andenginephysicsbox2dextension - vous aurez donc deux projets de bibliothèque dans Eclipse.

  2. Vous devrez probablement cliquer avec le bouton droit de la souris sur le projet et définir "Cible de création de projet" sur Android 2.3. Vous devrez également probablement créer un dossier res et gen à la racine du projet. Assurez-vous que le projet est compilé.

  3. Cliquez avec le bouton droit sur le projet et choisissez Exporter -> sous Java sélectionnez l'option "fichier jar". Cliquez sur NEXT. UNTICK TOUT dans le volet de droite - où est dit AndroidManifest.xml et tout le reste dans cette liste décochez-la. spécifier un emplacement pour le fichier .jar par exemple si vous compilez le AndEngine.jar vous pouvez entrer: C: \ temp \ andengine.jar dans la boîte de saisie de fichier jar. Cliquez sur FINISH - il devrait compiler.

  4. Aller sur ce site:

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

Téléchargez les deux fichiers .so ceux-ci devront aller dans: armeabi armeabi-V7A

  1. Le .jar les fichiers vont dans le dossier lib à la racine. Les fichiers .so --- créent un dossier appelé libs à la racine. Sous le dossier libs, créez deux dossiers armeabi AND armeabi-v7a - Les fichiers .so vont dans ces deux dossiers.
+0

Merci pour l'explication de supprimer cette erreur –

+0

Mais après avoir copié cette application de fichier lib ne sera pas lancée. L'application a commencé mais ferme sans aucun affichage. –

+0

Les dépôts de code Google sont maintenant obsolètes, AndEngine et toutes les extensions sont sur GitHub: https://github.com/nicolasgramlich/ – JohnEye

0

Et le vieux andengine.jar andenginephysicsbox2dextension.jar remvove.

et copiez le « lib » et « libs » dossier - du projet exemples de AndEngine et le coller dans votre project.and ajouter le fichier jar intérieur lib Ajouter à construire chemin

0

je faisais face au même problème et a été pas en mesure de faire quelque chose avec ce problème se produisant. encore et encore.

Ahh enfin j'ai pu résoudre le problème et que vous souhaitez partager, car il doit y avoir peut whop doit avoir tonns en vrac de là poils :)

je remplace simplement celle de repo à RealMayo Nicolas repo. Ci-dessous le lien https://github.com/RealMayo/AndEnginePhysicsBox2DExtension.

Faites-le moi savoir s'il vous plaît. :)

Bonne codification.