2015-05-15 3 views
1

Я создаю игру и пытаюсь настроить заставку.Libgdx tweening issue

Всякий раз, когда я сделать спрайт, что я хочу твин, чтобы с помощью метода sprite.draw который выглядит следующим образом:

@Override 
public void render(float delta) 
{ 
    Gdx.gl20.glClearColor(0.2F, 0.5F, 1F, 1F); 

    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    tm.update(delta); 

    cam.update(); 

    sb.setProjectionMatrix(cam.combined); 

    sb.begin(); 

    Assets.splash_spr_bg.draw(sb); 

    sb.end(); 

} 

Tweening прекрасно работает, кроме я могу видеть только 1/4 изображения на мой экран, он полностью вышел из положения.

И всякий раз, когда я пытаюсь использовать этот код для того, чтобы сделать спрайт с помощью SpriteBatch нарисовать его, который выглядит следующим образом:

@Override 
public void render(float delta) 
{ 
    Gdx.gl20.glClearColor(0.2F, 0.5F, 1F, 1F); 

    Gdx.gl20.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    tm.update(delta); 

    cam.update(); 

    sb.setProjectionMatrix(cam.combined); 

    sb.begin(); 

    sb.draw(Assets.splash_spr_bg, 0, 0); 

    sb.end(); 

} 

Я могу видеть фон большое, большое качество, правильный размер и положение, и все такое. Тем не менее, твинирование не работает вообще; Ничего не произошло.

Почему это не работает? Как я могу это исправить?


Вот еще один код.

Initializion класса TweenHandler:

package com.heavenapps.jumpdodge.handlers; 

import com.badlogic.gdx.graphics.g2d.Sprite; 

import aurelienribon.tweenengine.TweenAccessor; 

public class TweenHandler implements TweenAccessor<Sprite> 
{ 

public static final int ALPHA = 1; 

@Override 
public int getValues(Sprite target, int tweenType, float[] returnValues) 
{ 
    switch(tweenType) 
    { 
    case ALPHA: 
     returnValues[0] = target.getColor().a; 
     return 1; 
    default: 
     return 0; 
    } 
} 

@Override 
public void setValues(Sprite target, int tweenType, float[] newValues) 
{ 
    switch(tweenType) 
    { 
    case ALPHA: 
     target.setColor(1, 1, 1, newValues[0]); 
     break; 
    } 
} 

}

Initializion спрайта/текстуры:

package com.heavenapps.jumpdodge.handlers; 

import com.badlogic.gdx.Gdx; 
import com.badlogic.gdx.graphics.Texture; 
import com.badlogic.gdx.graphics.Texture.TextureFilter; 
import com.badlogic.gdx.graphics.g2d.Sprite; 

public class Assets 
{ 

    public static Texture splash_tex_bg; 

    public static Sprite splash_spr_bg; 

    public static void init() 
    { 
    // Splash Screen 

    splash_tex_bg = new Texture(Gdx.files.internal("Splash Screen/Background.png")); 

    splash_tex_bg.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

    splash_spr_bg = new Sprite(splash_tex_bg); 

    splash_spr_bg.setOrigin(splash_spr_bg.getWidth()/2, splash_spr_bg.getHeight()/2); 

    splash_spr_bg.setPosition(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

    splash_spr_bg.setColor(1, 1, 1, 0); 


} 

} 

Использование в промежуточных кадров:

public void fadeSplashScreen() 
{ 
    Tween.to(Assets.splash_spr_bg, TweenHandler.ALPHA, 2F).target(1).ease(TweenEquations.easeInBounce).start(tm); 
} 

ответ

0

Вы п чтобы задать положение спрайта, если вы хотите нарисовать его, используя свой первый метод. (sprite.draw(spriteBatch)). И вам нужно использовать свой первый метод, если вы хотите использовать цвет спрайта, который контролируется анимацией.

Похоже, что вы дали фоном спрайт в исходное положение, но вы отложили его на экран. Меняет

splash_spr_bg.setPosition(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

в

splash_spr_bg.setPosition(0, 0); 

Причины второй метод, который вы показали (spriteBatch.draw(sprite, x, y)) втягивает его в правильном положении, что этот метод рисования игнорирует тот факт, что это спрайт и просто рисует область текстуры, принадлежащая спрайту, в любой позиции, которую вы ему даете. И этот метод не угасает спрайт, потому что он игнорирует тот факт, что это спрайт (который имеет цвет).

+0

О, ничего себе, глупая ошибка. В любом случае спасибо большому брату, действительно помог мне! :) – Dumbostyle