Развитие игровой вспышки
Текущее время: Вт июн 19, 2018 10:51 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Phaser Preloader
СообщениеДобавлено: Сб июн 16, 2018 10:35 am 
Не в сети

Зарегистрирован: Сб июн 11, 2011 8:12 pm
Сообщений: 339
странно, но я не могу найти пример прелоадера для Phaser 2 с процентом загрузки.
хочу наводки.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser Preloader
СообщениеДобавлено: Сб июн 16, 2018 11:16 am 
Не в сети
Аватар пользователя

Зарегистрирован: Вс ноя 14, 2010 12:57 am
Сообщений: 1648
Тут надо смотреть разделение по стейтам.
Вот как выглядит стейт Boot
Код:
    this.bootScreen = function() {
        function preload() {//загружаем картинку прелоадера
            game.load.image('LOADER_BG', '../assets/img/loaderBg.jpg');
            game.load.image('LOADER_BAR','../assets/img/loader.png');
        }
        function create() {
            game.state.start('loadScreen');
        }

        return {
            preload: preload,
            create: create
        };
    };


Далее стейт загрузки выглядит так
Код:
   
this.loadScreen = function() {
        function preload() {
        //задаём список загружаемых картинок и звуков, которые будут в игре
            game.load.image('PIC_BGD', 'assets/kneo_assets/background.jpg');
            game.load.spritesheet('PIC_DIALBTN_INNER', 'assets/kneo_assets/small_button.png', 100, 99);
            // активизируем уже загруженные картинки прелоадера
            game.add.sprite(0, 0, 'LOADER_BG');
            game.load.setPreloadSprite(game.add.sprite(431, 380, 'LOADER_BAR'));
        }
        function create() {
            game.state.start('gameScreen');
        }

        return {
            preload: preload,
            create: create
        };
    };

А вот игровой стейт. там будут основные игровые функции
Код:

    this.gameScreen = function() {

        function create() {
        }
//..................................
        //а вот это для правильной регистрации стейта фазером
        return {
            create: create,
            update: update,
            render: render
        };
    };


и далее регистрируем стейты

Код:
    game.state.add('bootScreen', this.bootScreen);
    game.state.add('loadScreen', this.loadScreen);
    game.state.add('gameScreen', this.gameScreen);
    game.state.start('bootScreen');


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser Preloader
СообщениеДобавлено: Сб июн 16, 2018 7:56 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Пн янв 09, 2017 8:44 pm
Сообщений: 173
P.S. хотя код на TypeScript, но будет очень просто перенести на чистый JS

Код:
export class Preload extends Phaser.State {

    // тут объявляем, то что хотим загрузить
    preload() {

        this.game.load.crossOrigin = "anonymous";

        // коллбэки, которые ниже по коду
        this.game.load.onFileComplete.add(this.fileComplete, this);
        this.game.load.onFileError.add(this.fileError,  this);

        // файлы
        this.game.load.atlasJSONHash('atlasname', 'path/atlasname.png', 'path/atlasname.json');
        this.game.load.audio('soundname', ['path/soundname.mp3', 'path/soundname.ogg']);
        this.game.load.bitmapFont('fontname', 'path/fontname/fontname.png', 'path/fontname/fontname.fnt');
        this.game.load.image('image', 'path/image.png');
        this.game.load.script('webfont', '//ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js');

    }

    // выполнится, когда все файлы загрузятся (даже с ошибкой, например файл не найден)
    // после preload -> create
    create() {
        this.game.state.start('menu', true, false); // тут укажи свой следующий state, для примера 'menu'
    }

    // вызывается при загрузке каждого файла
    fileComplete(progress:any, cacheKey:any, success:any, totalFilesLoaded:any, totalFiles:any) {

        // % тут получаем процент загрузки от 0.0 до 1.0 (сколько файлов загрузили/сколько файлов осталось)
        // а не общий размер файлов как во флеше
        var progressPercent = (totalFilesLoaded/totalFiles);
       
        // процент можно использовать на свое усмотрение
        // допусти отображать число (0-100)% предварительно произведя: progressPercent * 100
        // или менять размер картинки прогресса: newWidth = imageDefaultWidth * progress; image.width = newWidth
        // жедательно сделать Tween для плавности
    }

    // в консоль ошибку при загрузке покажет, удобно при отладке
    fileError(cacheKey:any, file:any) {
        console.error(cacheKey, file);
    }

}


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Phaser Preloader
СообщениеДобавлено: Вс июн 17, 2018 12:02 pm 
Не в сети

Зарегистрирован: Сб июн 11, 2011 8:12 pm
Сообщений: 339
Спасибо, пацаны, всё работает. :)


Вернуться наверх
 Профиль Отправить e-mail  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB