じ☆ve冰风 发表于 2026-7-26 13:35:59

Set Flashing Animation | Mouse Press Plugin

Howdy all - for RPG Maker MV v1.5





Why
I picked up MV months ago, but decided to play with it today.I love it, but I didn't like the default square blinking effect on press.So, I thought I'd do the responsible thing and create a plugin to grant more options.

What
This lets you completely disable, and/or customize the blink effect when clicking or pressing.

Options

While messing around I chucked a bunch of options in there.

Color
Any CSS color including RGB and RGBA

Types
none, circle, square, box, url, text, circleoutline

Scale
0 to 1

Data
(optional) String or image URL to use

Animate
on or off, for the blink effect

BounceSpeed
Works inversely, I like 40, 60 or 90.​

Script:

License is do whatever you want (tm).Yes, you can use it commercially.

filename: SetFlashAnimation.js, save in your projects js\plugins folder.

                Code:       
/*:
* @plugindesc Sets, changes or removes the flashing press indicator.v1.0
* @author Lloyd (Red Iron Labs)
*
* @help This plugin does not provide plugin commands.
*
* @param color
* @desc CSS color format of the bitmap.RGB & RGBA allowed (i.e. rgba(0, 255, 0, 0.3)).
* @default white
*
* @param settype
* @desc none, circle, square, box, url, text, circleoutline
* @default none
*
* @param scale
* @desc scale from 0 to 1
* @default 1
*
* @param data
* @desc the text string (i.e. X) OR reference URL to an image to use (i.e. img/system/Shadow1.png)
* @default img/system/Shadow1.png
*
* @param animate
* @desc Bouncing animation
* @default on
*
* @param bouncespeed
* @desc Speed of bounce
* @default 20
*
*/

(function () {

    function toNumber(str, def) {
      return isNaN(str) ? def :+ (str || def);
    }

    var parameters = PluginManager.parameters('SetFlashAnimation');
    var color = parameters['color'].toLowerCase();
    var settype = parameters['settype'].toLowerCase();
    var scale = toNumber(parameters['scale'], 1);
    var data = parameters['data'];
    var animate = parameters['animate'].toLowerCase() == "on";
    var bouncespeed = toNumber(parameters['bouncespeed'], 20);

    Sprite_Destination.prototype.updateAnimation = function () {
      if (animate) {
            this._frameCount++;
            this._frameCount %= bouncespeed;
            this.opacity = (bouncespeed - this._frameCount) * 6;
            this.scale.x = 1 + this._frameCount / bouncespeed;
            this.scale.y = this.scale.x;
      }
    };

    Spriteset_Map.prototype.createDestination = function () {
      if (settype != 'none') {
            this._destinationSprite = new Sprite_Destination();
            this._destinationSprite.z = 9;
            this._tilemap.addChild(this._destinationSprite);
      }
    };

    Sprite_Destination.prototype.createBitmap = function () {

      var tileWidth = $gameMap.tileWidth();
      var tileHeight = $gameMap.tileHeight();
      this.bitmap = new Bitmap(tileWidth, tileHeight);

      if (settype == 'square' || settype == 'box') {
            this.bitmap.fillRect(
                (tileWidth - (tileWidth * scale)) / 2,
                (tileHeight - (tileHeight * scale)) / 2,
                tileWidth * scale,
                tileHeight * scale,
                color);
            if (settype == 'box') {
                this.bitmap.clearRect(
                  ((tileWidth - (tileWidth * scale)) / 2) + 4,
                  ((tileHeight - (tileHeight * scale)) / 2) + 4,
                  (tileWidth * scale) - 8,
                  (tileHeight * scale) - 8);
            }
      }

      if (settype == 'circle' || settype == 'circleoutline') {
            var minSize = tileWidth;
            if (tileHeight < tileWidth)
                minSize = tileHeight;
            this.bitmap.drawCircle(tileWidth / 2, tileHeight / 2, (minSize / 2) * scale, color);
            if (settype == 'circleoutline') {
                this.bitmap.drawCircle(tileWidth / 2, tileHeight / 2, ((minSize / 2) * scale) - 4, 'clear');
            }
      }

      if (settype == 'text') {
            this.bitmap.outlineColor = color;
            this.bitmap.drawText(
                data,
                (tileWidth - (tileWidth * scale)) / 2,
                (tileHeight - (tileHeight * scale)) / 2,
                tileWidth * scale,
                tileHeight * scale,
                'center');
            this.bitmap.blur();
      }

      if (settype == 'url') {
            this.bitmap = ImageManager.requestNormalBitmap(data, 0); // Bitmap.load(data);
            this.bitmap.resize(tileWidth, tileHeight);
      };

      this.anchor.x = 0.5;
      this.anchor.y = 0.5;
      this.blendMode = Graphics.BLEND_ADD;
    };

})();


Images:













Upcoming features:
None planned - but it is a pretty basic script.It isn't tested with other scripts, so could break stuff.In which case, just use it to learn if you like.


本贴来自国际rpgmaker官方论坛作者:Lloyd@RedIronLabs处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/set-flashing-animation-mouse-press-plugin.85334/
页: [1]
查看完整版本: Set Flashing Animation | Mouse Press Plugin