2015-02-22 1 views
0

Im tring, чтобы сделать png текстурРегионов и после некоторого поиска в смятении. Некоторые говорят, что я должен использовать текстуру, другие textureAtlas, другие bitmapTextureAtlas и так далее. Так может ли кто-нибудь сказать мне, как это сделать, от создания того, что должно быть создано, до того, что textuReregion можно использовать везде, где мне это нужно. Im абсолютно смущает, поэтому, пожалуйста, детализируйте! Благодарю.Сделайте a .png текстуреРегион в Andengine

Texture конструктор

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) { 

      } 
     } 

ответ

0

Шаг за шагом:

  1. В своем проекте «assests» папки вы можете создать папку «GFX».
  2. Поместите образ example.png в папку «gfx». Имя должно быть строчным.
  3. Кодирование. Это хорошая идея иметь некоторый класс ResourceManager с методами, которые загружают ваши текстуры. Допустим, вы его создали. В одном из них (т.е. loadExamplePNG():

    • BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); - это устанавливает defoult папку для ваших изображений (вы не должны использовать его, но тогда вам придется поставить путь к изображению позже)

    • BitmapTextureAtlas exampleTextureAtlas = new BitmapTextureAtlas(activity.getTextureManager(), 256, 256); - текстурный атлас похож на лист бумаги с наклейками на нем. Вы создаете большой атлас, чтобы поместить свои изображения/текстуры и загрузить их вместе. Числа 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 (выполнен в виде одноплодной шаблонного класса) использовать его как:

ResourceManager.getInstance().loadExamplePNG();

+0

также я заметил, что это можно сделать, создав ITexture из изображения (в gfx), а затем создав новый TextureRegion с ITexture и некоторыми параметрами, это позволит вам разрезать кусок ITexture. Или это не должно быть сделано? И как сделать это TiledTextureRegion? –

+0

Возможно решение: здесь вы можете найти учебное пособие: http://www.raywenderlich.com/12065/how-to-create-a-simple-android-game. Я нахожу свой подход более простым. –

+0

Второй момент, что такое активность, текущий класс? Поскольку я не могу найти этот метод –

0

Я не уверен, я понимаю ясно, что ваша проблема, но если вы хотите, чтобы загрузить изображение .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); 

Я использую отдельный класс менеджера ресурсов для загрузки текстур. Где GFX папка в активах

+0

Моя проблема заключается в том, что я не знаю, как сделать атлас, поместить в него изображение или использовать их. И у меня нет класса Add_region или AddTextureAtlas. –

+0

Проверьте это пошаговое руководство и скажите, решена ли ваша проблема. http://andenginefromscratch.blogspot.in/2011/03/introduccion-andengine-parte-ii.html – mayurN

+0

i belive - это более старая версия, например, у меня есть конструктор текстур. –

Смежные вопросы