// ================================================ =============================
//循环动画
//通过Shaz
//
// ================================================ =============================
/ *:
* @plugindesc允许动画地图上圈上
*也可以让动画(正常或循环)低于播放/后面的字符
* @author Shaz
*
* @帮帮我
*
*插件命令:
* LoopAnim启动事件animid#启动循环动画上一个事件
* LoopAnim停止事件#停止动画循环
*
* SetAnimLoc事件定位#设置动画的位置
*
*事件=号特定事件
*事件= 0“这个”事件
*事件= -1球员
*事件= $ gameVariables.value(X),以得到变量x的事件ID
*
*位置=下面或背后 - 玩角色背后的精灵动画
*位置=上方或前方 - 性格精灵的面前放动画
*默认是在性格精灵的面前放动画
* /
/*:
* @plugindesc Allows animations on the map to loop
* Also allows animations (normal or looping) to play below/behind characters
* @author Shaz
*
* @help
*
* Plugin Command:
* LoopAnim start event animid # Start a looping animation on an event
* LoopAnim stop event # Stop animation loop
*
* SetAnimLoc event location # Set location of animation
*
* event = number for specific event
* event = 0 for "this" event
* event = -1 for player
* event = $gameVariables.value(x) to get the event id from variable x
*
* location = below or behind - play animation behind character sprite
* location = above or front - play animation in front of character sprite
* default is to play animation in front of character sprite
*/
(function() {
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function(command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
if (command.toUpperCase() === 'LOOPANIM') {
var character = this.character(eval(args[1]));
if (character) {
switch (args[0].toUpperCase()) {
case 'START':
character.loopAnimStart(args[2]);
break;
case 'STOP':
character.loopAnimStop();
}
}
}
if (command.toUpperCase() === 'SETANIMLOC') {
var character = this.character(eval(args[0]));
if (character) {
character.setAnimLoc(args[1] || 'above');
}
}
}
var _Game_CharacterBase_initMembers = Game_CharacterBase.prototype.initMembers;
Game_CharacterBase.prototype.initMembers = function() {
_Game_CharacterBase_initMembers.call(this);
this._loopAnimId = 0;
this._animZ = 8;
};
Game_CharacterBase.prototype.loopAnimStart = function(animId) {
this._loopAnimId = animId;
this.requestAnimation(animId);
};
Game_CharacterBase.prototype.loopAnimStop = function() {
this._loopAnimId = 0;
};
Game_CharacterBase.prototype.setAnimLoc = function(location) {
switch (location.toUpperCase()) {
case 'BELOW':
case 'BEHIND':
this._animZ = 0;
break;
default:
this._animZ = 8;
}
}
Game_CharacterBase.prototype.animZ = function() {
return this._animZ;
}
Sprite_Character.prototype.isAnimationPlaying = function() {
if (this._animationSprites.length > 0) {
result = true;
} else if (this._character._loopAnimId > 0) {
this._character.requestAnimation(this._character._loopAnimId);
this.setupAnimation();
this._animationSprites[this._animationSprites.length - 1].z = this._character.animZ();
result = true;
} else {
result = false;
};
return result;
};
})();