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

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

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

Libgdx прорисовка текстур - Android

17.05.2016, 23:33. Просмотров 92. Ответов 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
SQLite и libGDX Android
Android Libgdx AI
Android Splash на libgdx
Android Libgdx polygon
Libgdx. Задержка перед выполнением действия Android
Android LibGDX. TexturePacker. Не пакует текстуры
Android LibGDX, не получается создать apk файл
Android Столкновение в libgdx через overlaps
Компиляция игры, libGDX Android
Android Libgdx уроки посоветуйте
LibGDX вращение текстуры Android

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

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

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