Vad är det för fel? PhysicsRemoveExample.java (AndEngine)

Diskussion i 'Frågor, support och diskussion' startad av xtreme, 13 nov 2010.

  1. xtreme

    xtreme Adult Droid Medlem

    Blev medlem:
    12 apr 2010
    Inlägg:
    517
    Mottagna gillanden:
    13

    MINA ENHETER

    Försöker få följande exempel för AndEngine att fungera PhysicsRemoveExample.java som finns här http://code.google.com/p/andenginee...va?r=18648ed40c65722c602591b2ae6769315fdfe134

    När jag kompilerar ger emulatorn följande meddelande:
    Skapat en mapp som heter lib som jag kört Build Path för andengine.jar och andenginephysicsbox2dextension.jar
    Bilderna face_box_tiled.png and face_circle_tiled.png finns i assets/gfx

    Så här ser min javakod ut. Den är samma som exemplet i länken överst förutom att jag ändrat till "extends BaseGameActivity"

    Kod:
    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
            // ===========================================================
    }
    
    Följande fel visas i min LogCat:
    Kod:
    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
    
    Vad är det för fel? Har provat med emulatorn för 1.6 och 2.1 samt skapat en helt ny AVD. "Getting Started Tutorial (Video – 5 minutes)" http://www.andengine.org/blog/2010/06/andengine-getting-started-tutorial-video/ Fungerade utan problem. Någon som kan prova köra koden och se om ni får den att fungera?
     
    Last edited: 13 nov 2010
  2. ichi7e

    ichi7e Baby Droid Medlem

    Blev medlem:
    8 aug 2010
    Inlägg:
    28
    Mottagna gillanden:
    0

    MINA ENHETER

    Har du lagt "libandenginephysicsbox2dextension.so" under "libs/armeabi/libandenginephysicsbox2dextension.so"?
     
  3. xtreme

    xtreme Adult Droid Medlem

    Blev medlem:
    12 apr 2010
    Inlägg:
    517
    Mottagna gillanden:
    13

    MINA ENHETER

    [Löst]

    Fantastiskt, nu fungerar det. Tackar!

    [Löst]