Для создания кое-каких анимация я решил использовать этот
плагин.
Его суть в том, что он прокручивает изображения в папке Picture в цикле, используя для ориентира префикс.
То есть он берёт названия изображения и создаёт циклическую анимацию по его префиксу(Picture_1, Picture_2 и так далее)
Через команду плагина указывается основное имя файла(без префикса_), скорость, координаты и количество кадров.
Командой стоп анимация прекращается. Пока что это единственный плагин, который бы избавлял меня от нудной работы по составлению огромного списка команд Показать изображения, ведь некоторые анимации бывают и по 100 кадров.
Но есть в этом плагине одна проблема. Если командой Stop прервать анимацию, то при следующем включении она начинается с кадра на котором остановилась, либо вообще умудряется продолжаться после отключения и выдавать анимацию с какого-то кадры с середины анимации.
А мне бы желательно чтобы каждый раз при запуске анимация начиналась именно с первого кадра. Но сколько бы я не копал код, додуматься не выходит, как его изменить.
Вот сам код:
//SOUL_PictureMotion.js
/*:
* @plugindesc v1.0 Creates a single sequence based picture motion in the screen.
* @author Soulpour777 - soulxregalia.wordpress.com
*
*
@help
Picture Motion Plugin
Author: Soulpour777
Description:
This plugin allows you to show an image that creates sequence timers so it
appears as if you're showing a film reel / motion picture or a gif like
set of sequenced images.
Instructions:
Place all images in the img / Pictures folder.
What does it mean by Prefix?
In your plugin commands, the imagename is a prefix. It means that if
you have an image sequence of Picture_1, Picture_2, Picture_3 for
example, the image name should be Picture, not Picture_ or Picture_1.
The command only needs the first word.
Plugin Commands:
Start : PictureMotion : imagename : speed : x : y : frames
where:
imageName is the name of the image you are using. (Prefix Only)
speed is the speed of the sequence for interchanging
x is the x coordinate of the motion picture
y is the y coordinate of the motion picture
frames is the number of frames your motion picture has
example:
Start : PictureMotion : Picture : 5 : 250 : 300 : 6
====================================
SUPPORT: Contact me at:
https://soulxregalia.wordpress.com/
====================================
============================================
PATREON: https://www.patreon.com/Soulpour777
============================================
*
*/
var Imported = Imported || {};
Imported.SOUL_PictureMotion = true;
var Soulpour777 = Soulpour777 || {};
Soulpour777.PictureMotion = Soulpour777.PictureMotion || {};
var soulMessageBust = PluginManager.parameters('SOUL_PictureMotion');
var tempImageSpeed = 0;
var tempImageX = null;
var tempImage_xCoord = 0;
var tempImage_yCoord = 0;
var tempSequence = 0;
var startMotion = false;
(function(){
Soulpour777.PictureMotion.Spriteset_Map_createLowerLayer = Spriteset_Map.prototype.createLowerLayer;
Spriteset_Map.prototype.createLowerLayer = function() {
Soulpour777.PictureMotion.Spriteset_Map_createLowerLayer.call(this);
this.cycleImageNumberX = 0;
this.cycleImageCounterX = 0;
this.motionpicture = new Sprite();
this.addChild(this.motionpicture);
};
Soulpour777.PictureMotion.Spriteset_Map_update = Spriteset_Map.prototype.update;
Spriteset_Map.prototype.update = function() {
Soulpour777.PictureMotion.Spriteset_Map_update.call(this);
this.motionpicture.x = tempImage_xCoord;
this.motionpicture.y = tempImage_yCoord;
if (this.cycleImageCounterX >= tempImageSpeed) {
this.cycleImageCounterX = 0;
if (this.cycleImageNumberX >= tempSequence) {
this.cycleImageNumberX = 1;
} else {
this.cycleImageNumberX++;
}
if (startMotion) {
this.motionpicture.bitmap = ImageManager.loadPicture(tempImageX + '_' + this.cycleImageNumberX);
} else {
this.motionpicture.bitmap = ImageManager.loadPicture(null);
}
} else {
this.cycleImageCounterX++;
}
};
Soulpour777.PictureMotion.Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
Soulpour777.PictureMotion.Game_Interpreter_pluginCommand.call(this, command, args);
if (command === 'Start') {
if (args[0] === ':') {
if (args[1] === 'PictureMotion') {
if (args[2] === ':') {
tempImageX = args[3];
if (args[4] === ':') {
tempImageSpeed = Number(args[5]);
if (args[6] === ':') {
tempImage_xCoord = Number(args[7]);
if (args[8] === ':') {
tempImage_yCoord = Number(args[9]);
if (args[10] ===':') {
tempSequence = Number(args[11]);
for (var i = 1; i <= tempSequence; i++) {
ImageManager.loadPicture(tempImageX + '_' + i);
}
startMotion = true;
}
}
}
}
}
}
}
}
if (command === 'Stop') {
if (args[0] === ':') {
if (args[1] === 'PictureMotion') {
startMotion = false;
}
}
}
};
})();
Может кто-нибудь знает как его изменить, чтобы анимация после команды start всегда с первого кадра изображения была ? Хотя вроде по коду он и должен с первого начинать.