我是AndEngine的新手,我正试图在this tutorial之后实施hanoi游戏。 在将背景图像插入gfx文件夹并设置所有onCreateResources代码和onCreateScene代码后,我尝试运行该应用程序,我所能看到的是一个代表我的背景图像的三角形,如this image中所示。
这是我的代码:
final int CAMERA_WIDTH = 480;
final int CAMERA_HEIGHT = 800;
public EngineOptions onCreateEngineOptions() {
myCamera = new Camera(800, 480, CAMERA_WIDTH, CAMERA_HEIGHT);
return new EngineOptions(false, ScreenOrientation.PORTRAIT_SENSOR,
new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),
myCamera);
}
public ITextureRegion texture;
public void onCreateResources(
OnCreateResourcesCallback pOnCreateResourcesCallback)
throws Exception {
try {
// 1 - Set up bitmap textures
ITexture backgroundTexture = new BitmapTexture(
this.getTextureManager(), new IInputStreamOpener() {
public InputStream open() throws IOException {
return getAssets().open("gfx/background.png");
}
});
// 2 - Load bitmap textures into VRAM
backgroundTexture.load();
// 3 - Set up texture regions
this.mBackgroundTextureRegion = TextureRegionFactory
.extractFromTexture(backgroundTexture);
}
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback)
throws Exception {
// 1 - Create new scene
final Scene scene = new Scene();
Sprite backgroundSprite = new Sprite(0, 0, this.mBackgroundTextureRegion, getVertexBufferObjectManager());
scene.attachChild(backgroundSprite);
}
由于我自己试图解决这个错误,我已经尝试过了:
另外,AndEngine论坛中有一个主题,this one我没有找到答案。
答案 0 :(得分:1)
试试这个
myCamera = new Camera(0, 0, CAMERA_WIDTH, CAMERA_HEIGHT);
代替
myCamera = new Camera(800, 480, CAMERA_WIDTH, CAMERA_HEIGHT);
答案 1 :(得分:1)
对我来说,它看起来像是一些OpenGL问题。看看RenderOptions,您可以通过调用engineOptions.getRenderOptions();
来获取它们。您可以调整各种渲染选项。
无论如何,你的Camera构造函数非常奇怪,你想要实现的目标是什么?通常的参数如driver613所述。此外,您似乎交换了CAMERA_WIDTH和CAMERA_HEIGHT的值。如果我没有弄错的话,Android会处理设备方向,以便宽度真正对应于设备当前方向的宽度。
答案 2 :(得分:1)
部分问题可能在这里
public void onCreateResources(
OnCreateResourcesCallback pOnCreateResourcesCallback)
您永远不会致电pOnCreateResourcesCallback
- 您应该在OnCreateResources
方法结束时这样做。
答案 3 :(得分:1)
您的代码中存在一些错误
1)在myCamera = new Camera(800, 480, CAMERA_WIDTH, CAMERA_HEIGHT);
第一个和第二个参数是位置x和y。所以你应该这样做
myCamera = new Camera(0,0,CAMERA_WIDTH,CAMERA_HEIGHT);
2)在CameraOptions中使用
new EngineOptions(true,ScreenOrientation.LANDSCAPE_FIXED, 新的RatioResolutionPolicy(CAMERA_WIDTH,CAMERA_HEIGHT),myCamera);
3)要加载BitmapTexture,您应该使用BitmapTextureAtlasTextureRegionFactory
。
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
BitmapTextureAtlas bitmapTextureAtlas = new BitmapTextureAtlas(
getTextureManager(), width_of_image, height_of_image,
TextureOptions.BILINEAR //Or any TextureOpion you want.
);
ITextureRegion texture = BitmapTextureAtlasTextureRegionFactory
.createFromAsset( bitmapTextureAtlas, this, "file_name.png", x_position, y_position);
bitmapTextureAtlas.load();
答案 4 :(得分:0)
当/如果您的textureAtlas太小而无法容纳所有纹理时,也会发生这种情况。检查所有纹理是否确实在其中找到了位置。例如,如果您有一行10个纹理,10x10像素,并且您的图集只有90(或小于100像素)宽或小于10像素高。如果您有疑问,只需尝试足够大的尺寸,看看会发生什么:)