我是Android游戏的新手,在使用createTiledFromAsset时启动了andengine并面临问题 我遇到问题的代码是
@Override
public void onLoadResources() {
mBitmapTextureAtlas = new BitmapTextureAtlas(128, 128,
TextureOptions.BILINEAR);
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
mPlayerTextureRegion = BitmapTextureAtlasTextureRegionFactory
.createTiledFromAsset(this.mBitmapTextureAtlas, this,
"move.png", 0, 0, 10, 1);
mEngine.getTextureManager().loadTexture(mBitmapTextureAtlas);
}
@Override
public Scene onLoadScene() {
mEngine.registerUpdateHandler(new FPSLogger());
mMainScene = new Scene();
mMainScene
.setBackground(new ColorBackground(0.09804f, 0.6274f, 0.8784f));
player = new AnimatedSprite(0, 0, mPlayerTextureRegion);
mMainScene.attachChild(player);
return mMainScene;
}
我没有得到错误,因为我的BitmapTextureAtlas是128 * 128并且来自createTiledFromAsset的每个平铺部分应该是78 * 85,因为传递给它的参数是1行10列,我的源图像是779 * 85这意味着当宽度被平铺到10个部分然后779/10 = 78大约是每个平铺部分的宽度并且因为行是1所以85/1 = 85因此每个平铺部分的宽度*高度将被放置在BitmapTextureAtlas上是78 * 85而BitmapTextureAtlas本身的大小是128 * 128那么为什么错误说Supplied pTextureAtlasSource must not exceed bounds of Texture
这里发生了什么......?或者我不了解实际的功能......?如果我错了那么createTiledFromAsset的过程如何工作........?
答案 0 :(得分:5)
我也发现了同样的问题。我正在使用大型精灵表,并尝试使用它。在搜索之后,我在本教程中找到了一些线索:getting-started-working-with-images我意识到宽度和高度的值用于:
BitmapTextureAtlas(WIDTH, HEIGHT ,TextureOptions.BILINEAR);
必须高于图像尺寸。例如,如果我使用1200 * 100精灵表,我必须使用高于1200 * 100的宽度和高度。
BitmapTextureAtlas(2047, 128, TextureOptions.BILINEAR);
答案 1 :(得分:2)
如果我正确理解了BitmapTextureAtlas,你试图将779 * 85图像放入128 * 128的小空间。 TextureAtlas是一个大型画布,您应该在其上放置许多图像。稍后使用名为TextureRegion的对象访问这些图像,该对象基本上指定画布上较小图片的大小和坐标。 createTiledFromAsset方法可能会将原始图像1:1复制到TextureAtlas上并保存切片的坐标。
请注意,TextureRegion与图像本身无关,它只是指向存储图像的TextureAtlas上的位置的“指针”。
要了解TextureAtlas的实际情况,请查看本页底部的精彩图片: http://www.blackpawn.com/texts/lightmaps/default.html