Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
SmirnygaTotosh
3 / 3 / 3
Регистрация: 17.11.2013
Сообщений: 26
#1

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

17.05.2016, 23:33. Просмотров 311. Ответов 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 типа анимации:нормальная и задом наперёд.
0
Миниатюры
Libgdx прорисовка текстур   Libgdx прорисовка текстур  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.05.2016, 23:33
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Libgdx прорисовка текстур (Программирование Android):

Libgdx AI
Добрый день , кто нибудь пользовался данной вещью? ...

Libgdx polygon
Добрый день, возникла следующая проблема : создаю объект класса Polygon...

SQLite и libGDX
Здраствуйте! Программирую потихоньку игры на либе, так чисто для себя. Тут...

Splash на libgdx
Всем привет есть 2 атласа 2048x2048 на андроиде 4.2 и выше, работает все...

LibGDX вращение текстуры
Здравствуйте, есть ли в llibGDX какой-нибудь способ повернуть текстуру кроме...

Нужен ли мне LibGDX?
Уважаемые программисты, подскажите, пожалуйста, мне ответ на следующий вопрос:...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.05.2016, 23:33
Привет! Вот еще темы с решениями:

Libgdx уроки посоветуйте
Привет! Посоветуйте уроки по LibGDX плиз. В гугле на первом месте сайт -...

LibGDX загрузка аудио
Ни как не получается загрузить музыку. В папку assets помещаю drop.wav rain.mp3...

Компиляция игры, libGDX
Здравствуйте. Помогите скомпилировать проект. Да, странная просьба) Я так...

Столкновение в libgdx через overlaps
Есть два списка Rectangle экземпляров. Мне нужно проверить пересечение через if...


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

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

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