Question

J'utilise AndEngine pour créer un fond d'écran en direct. Cependant, dans ma méthode onLoadResources () Je chargeais actuellement 3 textures différentes:

@Override
public void onLoadResources() {
    prefs = PhysicsWallpaperActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
    prefs.registerOnSharedPreferenceChangeListener(this);
    this.mAutoParallaxBackgroundTexture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);
    this.mAutoParallaxImage1Texture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);
    this.mAutoParallaxImage2Texture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);

    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
    this.mParallaxLayerBackground = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "background.jpg", 0, 0);
    this.mParallaxLayerImage1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxImage1Texture, this, "image1.jpg", 0, 0);
    this.mParallaxLayerImage2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxImage2Texture, this, "image2.png", 0, 800);

    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxBackgroundTexture);  
    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxImage1Texture);               
    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxImag2Texture);               

}

Je me sens comme ce n'est pas la façon la plus efficace de le faire. Mais si j'ai tous mes de les images 'BitmapTextureAtlasTextureRegionFactorys pointant vers un seul BitmapTextureAtlas, et ces « images » sont les mêmes coordonnées, les images se chargeront ensemble au-dessus de l'autre, même si je l'appelle seulement 1 d'entre eux.

Un exemple du problème est ici:

    @Override
 public void onLoadResources() {
    prefs = PhysicsWallpaperActivity.this.getSharedPreferences(SHARED_PREFS_NAME, 0);
    prefs.registerOnSharedPreferenceChangeListener(this);
    this.mAutoParallaxBackgroundTexture = new BitmapTextureAtlas(2048, 2048, TextureOptions.DEFAULT);

    BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
    this.mParallaxLayerBackground = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "background.jpg", 0, 0);
    this.mParallaxLayerImage1 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "image1.jpg", 0, 0;
    this.mParallaxLayerImage2 = BitmapTextureAtlasTextureRegionFactory.createFromAsset(this.mAutoParallaxBackgroundTexture, this, "image2.png", 0, 800);

    this.mEngine.getTextureManager().loadTexture(this.mAutoParallaxBackgroundTexture);               

}

^ j'aurais aimé utiliser le code comme ceci car il semble plus efficace, mais « image1 » et « image2 » charge automatiquement au-dessus de l'autre, même si je l'appelle seulement 1 d'entre eux.

Suis-je le faire de la bonne façon? Ou est-il un moyen plus efficace?

Était-ce utile?

La solution

Vos textures peut contenir plus d'une ressource. Pensez-y comme une feuille de sprite. ou comme le collage des photos à une grande feuille de papier blanc. vous n'avez pas besoin d'une nouvelle texture pour chaque région de texture. Par exemple: Disons que vous avez une image de l'étoile, qui est 250x250 pixels et une image de vaisseau spatial qui est 100x100 pixels. Vous pouvez mettre ces deux sur une texture qui mesure 512x256. Vous créez une région de texture pour l'étoile (250x250) à 0, 0. Ensuite, créez une deuxième zone de texture pour le vaisseau spatial à 251, 0.

Dans ce scénario, il y a encore une certaine zone de restes pour d'autres images soufflent le vaisseau spatial, si elles sont assez petits pour tenir. L'image ci-dessous montre comment votre texture ressemblerait si vous pouvez le voir dans la mémoire.

texture avec deux ressources supplémentaires

Hope this helps.

Autres conseils

Vos textures sont énormes! Êtes-vous bien sûr que vous avez besoin ce grand?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top