Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用纹理区域和引擎渲染精灵_Java_Android_Sprite_Andengine - Fatal编程技术网

Java 使用纹理区域和引擎渲染精灵

Java 使用纹理区域和引擎渲染精灵,java,android,sprite,andengine,Java,Android,Sprite,Andengine,请注意,这是我在安德林的第一次尝试。我一直把libGdx作为Android游戏开发的一个潜在工具,但它不适合我的需要,因为我只想为Android开发,让一个3D引擎做2D工作似乎有些过分了。我现在想试试发动机,看看它是否有我需要的。Andengine最大的问题似乎是复杂的命名方案(当引擎关键字有无数个字符长时,我更容易出现打字错误。LibGdx有一个简单的命名约定(纹理、TextureAtlas等) 然而,libGdx.jar中的screen类似乎有一个bug,我的libGdx项目很不幸将不得不

请注意,这是我在安德林的第一次尝试。我一直把libGdx作为Android游戏开发的一个潜在工具,但它不适合我的需要,因为我只想为Android开发,让一个3D引擎做2D工作似乎有些过分了。我现在想试试发动机,看看它是否有我需要的。Andengine最大的问题似乎是复杂的命名方案(当引擎关键字有无数个字符长时,我更容易出现打字错误。LibGdx有一个简单的命名约定(纹理、TextureAtlas等)

然而,libGdx.jar中的screen类似乎有一个bug,我的libGdx项目很不幸将不得不暂停。我看到Andengine是另一个非常流行的引擎,它有一个类似(但不完全相同)的类称为scene。无论如何,我在这里

我的代码:

private Camera camera;
private static final int CAM_WIDTH = 800;
private static final int CAM_HEIGHT = 480;
private ITexture texture;
private ITextureRegion textureRegion;

public int playerX = 300;
public int playerY = 300;

@Override
public EngineOptions onCreateEngineOptions()
{
    camera = new Camera(0, 0, CAM_WIDTH, CAM_HEIGHT);
    EngineOptions engineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE_FIXED, new RatioResolutionPolicy(CAM_WIDTH, CAM_HEIGHT), camera);
return engineOptions;

@Override
public void  onCreateResources()
{
    //Load textures
    try{
        this.texture = new AssetBitmapTexture(this.getTextureManager(), this.getAssets(), “europe.png”)
    } catch (IOException e){}
    this.texture.load();
}

@Override
public Scene onCreateScene()
{
    Scene scene = new Scene();
    scene.setBackground(0.09874f, 0.6274f, 0.8784f);
    Sprite player = new Sprite(playerX, playerY, this.textureRegion, this.getVertexBufferObjectManager());
    scene.attachChild(player);
    return scene;
    }
}
我的问题是:

每当我运行这个项目时,我的欧洲地图在我的平板电脑的右上角只会部分显示为三角形。地图也会翻转过来

我不能使用TextureAtlas,因为我的主计算机坏了,上面安装了Texture Packer,这使我不得不在平板电脑上编码(使用AIDE)。我还使用了一个过时的安引擎的.jar。原因是我将git repo克隆到了我的游戏中,并出现了一系列错误,称x86.so文件中存在损坏。我最终会让它工作起来(即使我必须自己修改被破坏的游戏引擎!!!),但同时我想学习引擎的基本知识

有人知道如何解决我的问题吗?另外,尽管不需要任何关于使用Andengine的建议,我们将不胜感激。提前感谢

附加说明:

无论我在
Sprite player=new Sprite()
构造函数中输入了什么数字,都不会改变

还要注意的是,屏幕宽度故意设置得很低

重要更新! 我设法从GitHub获得了克隆的回购协议,以便与AIDE合作。我有一个ARM Android设备,而不是x86设备(我不完全确定许多人是否有x86 Android)。这可能会帮助其他人解决这个问题:

为了修复编译错误,我进入了
android.mk
脚本,该脚本初始化了Andengine机器代码的构建。我对x86进行了注释,并用一个基本的Andengine项目运行了我的应用程序,它成功了。显然,它试图为我的ARM设备构建x86机器代码

我现在可以使用Andengine的全部功能,最终可以扔掉我一直在使用的蹩脚、过时的.JAR。这为我打开了许多教程,尽管我仍然希望在这里找到答案


为了回应下面的评论,我在问题中发布了我从一个教程网站上复制了上面的代码。我已经确定,在我开始编造自己混乱的代码库之前,我需要学习安引擎的基础知识:)

看起来纹理坐标的顺序不对,你能给我看一下初始化密码吗textureregion@FunkTheMonk我在网上为数不多的几个有效示例中找到了我的代码。我复制了整个代码库。今天早上刚借了一本关于安德林的书。Packt pub的“烹饪书”。你的图像要么比你的纹理图集大,要么你用x和y坐标开始你的区域,这意味着它试图在一个不存在的空间中绘制它。增加纹理图集的大小,如果图像>1024,则减小图像的大小。