Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
SmirnygaTotosh
3 / 3 / 0
Регистрация: 17.11.2013
Сообщений: 26
#1

Libgdx прорисовка текстур - Программирование Android

17.05.2016, 23:33. Просмотров 130. Ответов 0
Метки нет (Все метки)

Господа знатоки!Кто-нибудь может мне прояснить причину подобного явления?
Первый скрин(png) - это результат работы кода,приведённого ниже на desktop(Win Xp Sp3).
Второй скрин - на android 4.4.2 Samsung galaxy ace4 neo.
Почему один и тот же код работает по-разному,и как это исправить?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
public class MainMenu implements Screen{
    SpriteBatch batch;
    Texture fon;
    Music music;
 
        Animation fonAnimation; // #3
        Animation InversefonAnimation; 
        Texture fonSheet; // #4
        TextureRegion currentFrame; // #7
        TextureAtlas atlas;
        TextureRegion[] frames;
        TextureRegion[] inverse_frames;
 
boolean isInverse;
        float stateTime; // #8
    
    public MainMenu() {
            super();
            
        fon = new Texture(Gdx.files.internal("main_screen.png"));
        music = Gdx.audio.newMusic(Gdx.files.internal("opus.ogg")); 
        fonSheet = new Texture(Gdx.files.internal("fon.jpg")); // #9
        atlas = new TextureAtlas(Gdx.files.internal("fon.atlas"));
        batch = new SpriteBatch();        
        frames = new TextureRegion[40];
        inverse_frames = new TextureRegion[40];
         for(int i = 0;i < frames.length;i++)
         {
                 frames[i] = atlas.findRegion(Integer.toString(i + 10));
         }
         for(int i = 0,j = frames.length - 1;i < frames.length;i++,j--)
         {
             inverse_frames[i] = frames[j];
         }
            fonAnimation = new Animation(0.1f, frames); // #11
            InversefonAnimation = new Animation(0.1f, inverse_frames);
       
 
            stateTime = 0f; // #13
            isInverse = false;
        }
 
 
    @Override
    public void show() {
        music.play();
        music.setLooping(true);
        Gdx.app.debug(ElfGame.TAG, "show");
}
 
    
 
    @Override
    public void render(float delta) {
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); // #14
        stateTime += delta;
        Gdx.app.log(ElfGame.TAG, "stateTime = "+stateTime);
        Gdx.app.log(ElfGame.TAG, "delta = "+delta);
            int a;
            if (!isInverse)
            {
                a = fonAnimation.getKeyFrameIndex(stateTime);
                if (a == frames.length -1)
                {
                    isInverse = true;
                    currentFrame = frames[frames.length -1];
                    stateTime = 0f;
                }
                else
                    currentFrame = fonAnimation.getKeyFrame(stateTime);
            }
            else
            {
                a = InversefonAnimation.getKeyFrameIndex(stateTime);
                if (a == inverse_frames.length -1)
                {
                    isInverse = false;
                    currentFrame = inverse_frames[inverse_frames.length -1];
                    stateTime = 0f;
                
                }
                else
                    currentFrame = InversefonAnimation.getKeyFrame(stateTime);
            }           
            
            Gdx.app.log(ElfGame.TAG, "frame = "+a);
            Gdx.app.log(ElfGame.TAG,"current_frame = "+currentFrame);
        batch.begin();
       batch.draw(currentFrame, 0, 0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight()); // #17
       batch.draw(fon,0,0,Gdx.graphics.getWidth(),Gdx.graphics.getHeight());
        batch.end();
         
 
    }
 
 
    @Override
    public void resize(int width, int height) {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void pause() {
        music.pause();
        
    }
 
    @Override
    public void resume() {
        music.play();
        
    }
 
    @Override
    public void hide() {
        // TODO Auto-generated method stub
        
    }
 
    @Override
    public void dispose() {
        batch.dispose();
        fon.dispose();
        music.dispose();
        fonSheet.dispose(); // #4 // #7
        atlas.dispose();
    }
 
}
Там по очереди проигрываются 2 типа анимации:нормальная и задом наперёд.
Миниатюры
Libgdx прорисовка текстур   Libgdx прорисовка текстур  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 23:33     Libgdx прорисовка текстур
Посмотрите здесь:

Libgdx или android studio для создания текстового симулятора - Программирование Android
Здравствуйте. В планах создать текстовый симулятор для андроида на подобии &quot;Бомжары&quot;. что лучше для этого использовать: возможности android...

Не получается указать путь для андроид (LibGDX) (FileInputStream ObjectInputStream) - Программирование Android
Всем привет! Помогите прочитать файл потока(ObjectInputStream) &quot;Локально-Gdx.files.getLocalStoragePath()&quot; или...

Не могу сделать простейшую Libgdx-игру, одна и та же ошибка вылетает - Программирование Android
Всем привет! Дело такое. Только-только начал учиться работать с Libgdx-библиотекой. Хотел простую desktop-игрушку для начала...

Что лучше изучить для создания игр 2D? Unity 3D или libGDX - Программирование Android
Здравствуйте! В данные момент разрабатываю только приложения для Android с помощью Android Studio. Начал изучать для разработки игры...

Привязка текстур и SpriteBatch - Программирование Android
Читал в хелпе по LibGDX, что дергается видеокарта всякий раз, когда привязывается текстура. И что типа если использовать TextureRegion, то...

Обработка событий + прорисовка - Программирование Android
Доброго времени суток, создаю свое первое приложение на Android. У меня есть прорисовка в отдельном потоке и обработка событий, проблемма в...

Прорисовка элементов в ListView - Программирование Android
Доброго дня. Необходимо сделать свой список с своим View, нашёл статью и сделал как в ней. Но поведение CheckBox'ов оказалось поломанное....

Прорисовка не на весь экран - Программирование Android
На эмуляторе 480х800 все идеально а на планшете рисует заужено Ориентация стоит портретная &lt;activity ...

Как можно ускорить рендер больших текстур? - Программирование Android
Задался вопросом: Имеются две текстуры 1024х1024. Они подаются на вход фрагментному шейдеру, шейдер с ними что то делает (в моем случае...

Таймер в libgdx - Java ME
Привет всем...пишу игру на libgdx..нужно ,что бы каждые 5 секунд выполнялось какое то действие...Как поставить для этого таймер???

LibGDX на html(5) - HTML, CSS
Здравствуйте.В libGDX можно делать приложения GWT и выкладывать на Apache или Nginx. Сделал все как по инструкции, все получилось и я...

Progressbar in Libgdx - Java
Привет всем)))Только начал изучать Java и Libgdx)))Дали написать простенькую игру ,где двоя дерутся...Ну вот наткнулся на вопросик...Для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru