Така че създавам начален екран, който във фонов режим зарежда ресурсите на игрите. По време на началния екран това е анимиран спрайт, който трябва да стои в центъра на екрана и да анимира, докато всички ресурси се заредят и мога просто да превключвам сцени към сцената на менюто. В момента обаче спрайтът анимира за кратко време, след което замръзва и просто седи, без да прави нищо за няколко секунди, след което зарежда сцената на менюто (тези „няколко секунди“ променят продължителността в зависимост от това колко бърз е телефонът, когато се изпълнява включен, например телефонът ми (нов) е като част от секундата, но телефонът на приятелите ми (стар) отнема 4 или 5 секунди).
Искам спрайтът да е анимиран през цялото време, през което можем да видим началния екран, докато зареждането се извършва на заден план... Има ли смисъл в това?
По-долу е моят клас MainActivity...
public class MainActivity extends BaseGameActivity
{
protected static int CAMERA_WIDTH = 480;
protected static int CAMERA_HEIGHT = 800;
protected PhysicsWorld mPhysicsWorld;
SceneManager sceneMan;
Camera camera;
@SuppressWarnings("deprecation")
@Override
public EngineOptions onCreateEngineOptions()
{
camera = new Camera(0, 0, CAMERA_WIDTH,CAMERA_HEIGHT);
float camwid = CAMERA_WIDTH;
float camhi = CAMERA_HEIGHT;
CropResolutionPolicy pop = new CropResolutionPolicy(camwid,camhi);
return new EngineOptions(true, ScreenOrientation.PORTRAIT_FIXED, pop, camera);
}
@Override
public void onCreateResources(OnCreateResourcesCallback pOnCreateResourcesCallback) throws Exception
{
sceneMan = new SceneManager(this, mEngine, camera);
sceneMan.loadSplashResources();
pOnCreateResourcesCallback.onCreateResourcesFinished();
}
@Override
public void onCreateScene(OnCreateSceneCallback pOnCreateSceneCallback) throws Exception
{
pOnCreateSceneCallback.onCreateSceneFinished(sceneMan.createSplashScene());
}
@Override
public void onPopulateScene(Scene pScene,OnPopulateSceneCallback pOnPopulateSceneCallback) throws Exception
{
mEngine.registerUpdateHandler(new TimerHandler(2f, new ITimerCallback()
{
@Override
public void onTimePassed(TimerHandler pTimerHandler)
{
mEngine.unregisterUpdateHandler(pTimerHandler);
sceneMan.loadFirstTimeRunAllResources();
sceneMan.createMenuScene();
sceneMan.setCurrentScene(AllScenes.MENU_SCREEN);
}
}));
pOnPopulateSceneCallback.onPopulateSceneFinished();
}
}
И по-долу е кодът за създаване на пръскаща сцена, който създава нещата за моята пръскаща сцена и казва на спрайта да анимира, това се намира в друг клас, който обработва зареждането и създаването на сцените...
public Scene createSplashScene()
{
//Will only call once!
//Will never return to this scene
splashScene = new Scene();
splashScene.setBackground(new Background(0,0,0));
AnimatedSprite icon = new AnimatedSprite(0, 0, splashAniTR, engine.getVertexBufferObjectManager());
icon.setPosition(camera.getWidth()-(camera.getWidth()/2)-(icon.getWidth()/2)+12,camera.getHeight()-(camera.getHeight()/2)-icon.getHeight()/2);
icon.animate(300);
splashScene.attachChild(icon);
return splashScene;
}