1

私はライブ壁紙を作成していますが、今のところ、単純なスプライトが右に移動するだけで十分です。スプライトのアニメーションがありません。壁紙が読み込まれ、スプライトが表示されますが、動かないだけです。私はPathModiferを実装し、エラーは0でした。コードを多数の例と投稿でチェックしましたが、動かない理由がわかりません。

ここに私のクラス全体があります:

import org.andengine.engine.camera.Camera;
import org.andengine.engine.options.EngineOptions;
import org.andengine.engine.options.ScreenOrientation;
import org.andengine.engine.options.resolutionpolicy.RatioResolutionPolicy;
import org.andengine.entity.IEntity;
import org.andengine.entity.modifier.LoopEntityModifier;
import org.andengine.entity.modifier.PathModifier;
import org.andengine.entity.modifier.PathModifier.IPathModifierListener;
import org.andengine.entity.modifier.PathModifier.Path;
import org.andengine.entity.scene.Scene;
import org.andengine.entity.scene.background.Background;
import org.andengine.entity.sprite.Sprite;
import org.andengine.extension.ui.livewallpaper.BaseLiveWallpaperService;
import org.andengine.input.sensor.acceleration.AccelerationData;
import org.andengine.input.sensor.acceleration.IAccelerationListener;
import org.andengine.opengl.texture.TextureOptions;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlas;
import org.andengine.opengl.texture.atlas.bitmap.BitmapTextureAtlasTextureRegionFactory;
import org.andengine.opengl.texture.region.ITextureRegion;
import org.andengine.util.debug.Debug;
import org.andengine.util.modifier.ease.EaseSineInOut;

public class LiveWallpaperService extends BaseLiveWallpaperService implements IAccelerationListener{

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

    private static int CAMERA_WIDTH = 480;
    private static int CAMERA_HEIGHT = 854;

    private Scene mScene;

    private BitmapTextureAtlas grass;
    private ITextureRegion yourTextureRegion;

    private BitmapTextureAtlas house;
    private ITextureRegion houseRegion;

    private BitmapTextureAtlas cloud1;
    private ITextureRegion cloud1Region;

    @Override
    public EngineOptions onCreateEngineOptions() {
      Camera mCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
              EngineOptions options = new EngineOptions(true,
                      ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(
                              CAMERA_WIDTH, CAMERA_HEIGHT), mCamera);
              return options;

     }

    @Override
    public void onCreateResources(
            OnCreateResourcesCallback pOnCreateResourcesCallback)
            throws Exception {
        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");

        this.grass = new BitmapTextureAtlas(this.getTextureManager(), 1024, 512, TextureOptions.DEFAULT);
        yourTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.grass, this, "bglwp.png", 0, 0);
        this.mEngine.getTextureManager().loadTexture(this.grass);

        this.cloud1 = new BitmapTextureAtlas(this.getTextureManager(), 256, 128, TextureOptions.DEFAULT);
        cloud1Region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.cloud1, this, "clld1.png", 0, 0);
        this.mEngine.getTextureManager().loadTexture(this.cloud1);

        this.house = new BitmapTextureAtlas(this.getTextureManager(), 512, 512, TextureOptions.DEFAULT);
        houseRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.house, this, "front.png", 0, 0);
        this.mEngine.getTextureManager().loadTexture(this.house);


        pOnCreateResourcesCallback.onCreateResourcesFinished();


    }

    @Override
    public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception {
        final float x = CAMERA_WIDTH / 2 - yourTextureRegion.getWidth() /2;
        final float y = CAMERA_HEIGHT / 2 - yourTextureRegion.getHeight() /2;
        final float xx = CAMERA_WIDTH / 2 - houseRegion.getWidth() /2;
        final float yy = CAMERA_HEIGHT / 2 - houseRegion.getHeight() /2;

         mScene= new Scene();
         mScene.setBackground(new Background(0.3294117f, 0.788235f, 0.909803f));
         Sprite backgroundSprite = new Sprite(x - 80, y + 171, this.yourTextureRegion, getVertexBufferObjectManager());
         mScene.attachChild(backgroundSprite);

         Sprite foregroundSprite = new Sprite(xx + 10, yy + 80, this.houseRegion, getVertexBufferObjectManager());
         mScene.attachChild(foregroundSprite);

         Sprite cloud1Sprite = new Sprite( 100, 100, this.cloud1Region, getVertexBufferObjectManager());

         final Path path = new Path(2).to(200, 200).to(20, 20);

         cloud1Sprite.registerEntityModifier(new LoopEntityModifier(
                 new PathModifier(5, path, null, new IPathModifierListener() {
                @Override
                public void onPathStarted(final PathModifier pPathModifier, final IEntity pEntity) {
                    Debug.d("onPathStarted");
                }

                @Override
                public void onPathWaypointStarted(PathModifier pPathModifier,
                        IEntity pEntity, int pWaypointIndex) {

                }

                @Override
                public void onPathWaypointFinished(PathModifier pPathModifier,
                        IEntity pEntity, int pWaypointIndex) {

                }

                @Override
                public void onPathFinished(PathModifier pPathModifier,
                        IEntity pEntity) {
                }
                 }, EaseSineInOut.getInstance())));

         mScene.attachChild(cloud1Sprite);
         pOnCreateSceneCallback.onCreateSceneFinished(mScene);
         }

    @Override
    public void onPopulateScene(Scene pScene,
            OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAccelerationAccuracyChanged(AccelerationData pAccelerationData) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAccelerationChanged(AccelerationData pAccelerationData) {
        // TODO Auto-generated method stub

    }
}

誰でも助けていただければ幸いです。ありがとうございます。

4

1 に答える 1