在Andengine中制作一个.png到一个textureRegion
Make a .png to a textureRegion in Andengine
我想将 png 制作成 textureRegions,经过一番搜索后我感到很困惑。有人说我必须使用纹理、其他人的 textureAtlas、其他人的 bitmapTextureAtlas 等等。
所以谁能告诉我该怎么做,从创建必须创建的内容,到让 textuReregion 在我需要的任何地方都可用。
我绝对混淆所以请详细说明!谢谢
纹理构造函数
a = new ITexture() {
@Override
public int getWidth() {
return 0;
}
@Override
public int getHeight() {
return 0;
}
@Override
public int getHardwareTextureID() {
return 0;
}
@Override
public boolean isLoadedToHardware() {
return false;
}
@Override
public void setNotLoadedToHardware() {
}
@Override
public boolean isUpdateOnHardwareNeeded() {
return false;
}
@Override
public void setUpdateOnHardwareNeeded(boolean pUpdateOnHardwareNeeded) {
}
@Override
public void load() {
}
@Override
public void load(GLState pGLState) throws IOException {
}
@Override
public void unload() {
}
@Override
public void unload(GLState pGLState) {
}
@Override
public void loadToHardware(GLState pGLState) throws IOException {
}
@Override
public void unloadFromHardware(GLState pGLState) {
}
@Override
public void reloadToHardware(GLState pGLState) throws IOException {
}
@Override
public void bind(GLState pGLState) {
}
@Override
public void bind(GLState pGLState, int pGLActiveTexture) {
}
@Override
public PixelFormat getPixelFormat() {
return null;
}
@Override
public TextureOptions getTextureOptions() {
return null;
}
@Override
public boolean hasTextureStateListener() {
return false;
}
@Override
public ITextureStateListener getTextureStateListener() {
return null;
}
@Override
public void setTextureStateListener(ITextureStateListener pTextureStateListener) {
}
}
我不太清楚你的问题是什么,但如果你想加载你的.png图片,这是这样做的方法。
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
AddTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(),
256, 256, TextureOptions.BILINEAR);
Add_region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(
AddTextureAtlas, activity, "add.png", 0, 0);
AddTextureAtlas.load();
然后像这样附加它
Sprite mySprite = new Sprite(0, 0,
ResourcesManager.getInstance().Add_region,
ResourcesManager.getInstance().vbom);
attachChild(mySprite);
我正在使用单独的资源管理器 class 来加载纹理。其中 gfx 是 assets
中的一个文件夹
一步一步:
- 在您的项目 "assests" 文件夹中,您可以创建 "gfx" 文件夹。
- 将您的 example.png 图像放入 "gfx" 文件夹中。名称必须小写。
编码。最好有一些 ResourceManager class 和加载纹理的方法。假设您创建了一个。其中之一(即 loadExamplePNG()
:
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
- 这会为您的图像设置默认文件夹(您不必使用它,但稍后您将不得不放置图像路径)
BitmapTextureAtlas exampleTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(),
256, 256);
- 纹理图集就像一张 sheet 上面贴有贴纸的纸。你创建大图集来放置你的 images/textures 并将它们加载在一起。数字 256、256 表示您的地图集有多大。它们必须是二的幂(256、512、1024、2048)。有些手机不能超过 1024 x 1024。
ITextureRegion exampleTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset(
exampleTextureAtlas, activity, "example.png", 0, 0);
- 这里我们把我们的图像放在图集上,就像纸上的贴纸一样。您选择图像 "example.png" 并将其放在 exampleTextureAtlas
的位置 (0, 0) 上。您可以在图集中放置多个区域,但您不能选择相同的坐标。因此,如果第一个区域位于位置 (0, 0) 并且它是 100x100 大 - 例如第二个图像必须位于位置 (110, 0) 以便它们不重叠。
exampleTextureAtlas.load();
- 最后我们加载我们的地图集。简单。
同样,正如@mayurN 指出的那样:如果将这段代码放在 resourceManager 的方法中(作为单例模式 class),您可以将其用作:
ResourceManager.getInstance().loadExamplePNG();
我想将 png 制作成 textureRegions,经过一番搜索后我感到很困惑。有人说我必须使用纹理、其他人的 textureAtlas、其他人的 bitmapTextureAtlas 等等。 所以谁能告诉我该怎么做,从创建必须创建的内容,到让 textuReregion 在我需要的任何地方都可用。 我绝对混淆所以请详细说明!谢谢
纹理构造函数
a = new ITexture() {
@Override
public int getWidth() {
return 0;
}
@Override
public int getHeight() {
return 0;
}
@Override
public int getHardwareTextureID() {
return 0;
}
@Override
public boolean isLoadedToHardware() {
return false;
}
@Override
public void setNotLoadedToHardware() {
}
@Override
public boolean isUpdateOnHardwareNeeded() {
return false;
}
@Override
public void setUpdateOnHardwareNeeded(boolean pUpdateOnHardwareNeeded) {
}
@Override
public void load() {
}
@Override
public void load(GLState pGLState) throws IOException {
}
@Override
public void unload() {
}
@Override
public void unload(GLState pGLState) {
}
@Override
public void loadToHardware(GLState pGLState) throws IOException {
}
@Override
public void unloadFromHardware(GLState pGLState) {
}
@Override
public void reloadToHardware(GLState pGLState) throws IOException {
}
@Override
public void bind(GLState pGLState) {
}
@Override
public void bind(GLState pGLState, int pGLActiveTexture) {
}
@Override
public PixelFormat getPixelFormat() {
return null;
}
@Override
public TextureOptions getTextureOptions() {
return null;
}
@Override
public boolean hasTextureStateListener() {
return false;
}
@Override
public ITextureStateListener getTextureStateListener() {
return null;
}
@Override
public void setTextureStateListener(ITextureStateListener pTextureStateListener) {
}
}
我不太清楚你的问题是什么,但如果你想加载你的.png图片,这是这样做的方法。
BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
AddTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(),
256, 256, TextureOptions.BILINEAR);
Add_region = BitmapTextureAtlasTextureRegionFactory.createFromAsset(
AddTextureAtlas, activity, "add.png", 0, 0);
AddTextureAtlas.load();
然后像这样附加它
Sprite mySprite = new Sprite(0, 0,
ResourcesManager.getInstance().Add_region,
ResourcesManager.getInstance().vbom);
attachChild(mySprite);
我正在使用单独的资源管理器 class 来加载纹理。其中 gfx 是 assets
中的一个文件夹一步一步:
- 在您的项目 "assests" 文件夹中,您可以创建 "gfx" 文件夹。
- 将您的 example.png 图像放入 "gfx" 文件夹中。名称必须小写。
编码。最好有一些 ResourceManager class 和加载纹理的方法。假设您创建了一个。其中之一(即
loadExamplePNG()
:BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/");
- 这会为您的图像设置默认文件夹(您不必使用它,但稍后您将不得不放置图像路径)BitmapTextureAtlas exampleTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256);
- 纹理图集就像一张 sheet 上面贴有贴纸的纸。你创建大图集来放置你的 images/textures 并将它们加载在一起。数字 256、256 表示您的地图集有多大。它们必须是二的幂(256、512、1024、2048)。有些手机不能超过 1024 x 1024。ITextureRegion exampleTextureRegion = BitmapTextureAtlasTextureRegionFactory.createFromAsset( exampleTextureAtlas, activity, "example.png", 0, 0);
- 这里我们把我们的图像放在图集上,就像纸上的贴纸一样。您选择图像 "example.png" 并将其放在exampleTextureAtlas
的位置 (0, 0) 上。您可以在图集中放置多个区域,但您不能选择相同的坐标。因此,如果第一个区域位于位置 (0, 0) 并且它是 100x100 大 - 例如第二个图像必须位于位置 (110, 0) 以便它们不重叠。exampleTextureAtlas.load();
- 最后我们加载我们的地图集。简单。
同样,正如@mayurN 指出的那样:如果将这段代码放在 resourceManager 的方法中(作为单例模式 class),您可以将其用作:
ResourceManager.getInstance().loadExamplePNG();