Я пишу игру с открытым исходным кодом Falloutish 2 в PHP + HTML + CSS + JavaScript. Прямо сейчас, имея дело с двигателем. У меня есть этот gif: https://dl.dropboxusercontent.com/u/4258402/nmwarrgb_e.gifJavascript: Анимированный GIF для URI данных
... который я хочу конвертировать в URI данных. Мне нужно сделать это, потому что браузеры кэшируют изображения, а этот не зацикливается, поэтому, чтобы иметь возможность «запустить его снова», когда анимация заканчивается, а блок переходит на другую плиту, мне нужно преобразовать ее в URI данных. В противном случае мне пришлось бы повторно загружать изображение снова и снова, например. добавив случайную строку в конец файла изображения. Который работает отлично, но слишком сильно переносит передачу и вызывает отставание.
Это код, который я пытался использовать:
var image = new Image();
(..)
this.convertImageObjectToDataURI = function (image) {
var canvasTemp = document.createElement('canvas');
canvasTemp.width = image.naturalWidth; // or 'width' if you want a special/scaled size
canvasTemp.height = image.naturalHeight; // or 'height' if you want a special/scaled size
canvasTemp.getContext('2d').drawImage(image, 0, 0);
var dataUri = canvasTemp.toDataURL('image/gif');
// Modify Data URI beginning
dataUri = "data:image/gif;" + dataUri.substring(15);
console.log(dataUri);
// Return image as Data URI
return dataUri;
};
К сожалению, он производит URI данных только для первого кадра. Я пробовал искать плагины, читал о html-холсте, но все же Я просто не знаю, как конвертировать анимированные gif в URI данных. Любая помощь будет очень, очень приветствуется!
Анимированный gif - это анимация на холсте? Я думаю, что они не ожидают. Это твоя проблема. Вам нужно преобразовать его динамически? Я сказал, что если вы хотите поместить код base64 в переменную без загрузки изображений на свой сервер, вы можете закодировать ее с помощью онлайн-инструмента, и вам не нужно кодировать во время игры. –
Проблема в том, что около 20 000 анимаций gif: -) И забота обо мне - заставить этот gif начать все заново, после того, как он заканчивает игру в первый раз. Ах, мне, вероятно, придется придерживаться нескольких запросов со случайной строкой, прикрепленной к концу, чтобы обмануть браузер. – Rav
OMG, тогда мой ответ о спрайтах опущен, я думаю. Но вы должны знать, что спрайты - самая используемая техника для анимаций в играх. Удачи ! –