扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 140|回复: 0

[转载发布] 事件使用:高斯模糊(毛玻璃)效果简单实现

[复制链接]
累计送礼:
0 个
累计收礼:
0 个
  • TA的每日心情
    开心
    2025-2-4 02:05
  • 签到天数: 110 天

    连续签到: 2 天

    [LV.6]常住居民II

    2327

    主题

    395

    回帖

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    6
    卡币
    10465
    OK点
    16
    推广点
    0
    同能卷
    0
    积分
    13215

    灌水之王

    发表于 2024-2-13 13:36:56 | 显示全部楼层 |阅读模式
    自己在制作时候正好用上。请教过别人,然后我自己把功能扩充了下。具体功能可见代码help
    另外,由于保存图片在”事件“中,想要渐变,移动等功能只要使用 移动图片 即可实现。

    JAVASCRIPT 代码下载
    1. /*:
    2. * @author 日月星辰
    3. * @plugindesc 屏幕截图&模糊 工具
    4. * @help
    5. * 1. 在事件中显示名为 snap 的图片即可获取全屏截图 (可随便放一张图片,推荐为空)
    6. * 2. 在事件中显示名为 blur 的图片即可获取全屏截图并模糊 (同上)
    7. * 3. 在事件中使用插件指令: blurPart x, y, w, h, opacity, id,
    8. *    即可获取区域截图并模糊,保存至id号图片
    9. *
    10. * @param blurLevel
    11. * @desc 模糊的等级,越高越糊,推荐范围[1,5],默认1
    12. * @default 1
    13. */
    14. var params = PluginManager.parameters('SnapBlur');
    15. var blurLevel = Number(params['blurLevel'] || 1);
    16. var x;
    17. var y;
    18. var w;
    19. var h;
    20. (function() {
    21. Sprite_Picture.prototype.loadBitmap = function() {
    22.   if (this._pictureName === "snap") {
    23.     this.bitmap = SceneManager.snap();
    24.   } else if (this._pictureName === "blur" ){
    25.     this.bitmap = SceneManager.snap();
    26.     for (var i = 0; i < blurLevel; i++)
    27.       this.bitmap.blur();
    28.   } else if (this._pictureName === "blurPart") {
    29.     this.bitmap = SceneManager.snap();
    30.     for (var i = 0; i < blurLevel; i++)
    31.       this.bitmap.blurArea(x, y, w, h);
    32.   } else {
    33.     this.bitmap = ImageManager.loadPicture(this._pictureName);
    34.   }
    35. };
    36. })();
    37. var alias_command = Game_Interpreter.prototype.pluginCommand;
    38. Game_Interpreter.prototype.pluginCommand = function(command, args) {
    39.   alias_command.call(this, command, args);
    40.   if (command === 'blurPart') {
    41.     x = parseInt(args[0]);
    42.     y = parseInt(args[1]);
    43.     w = parseInt(args[2]);
    44.     h = parseInt(args[3]);
    45.     var opacity = parseInt(args[4]);
    46.     var id = parseInt(args[5]);
    47.     $gameScreen.showPicture(id, "blurPart" ,0, 0, 0, 100, 100, opacity, 0, x, w, y, h);
    48.   }
    49.   return true;
    50. };
    51. Bitmap.prototype.blurArea = function(x, y, w, h) {
    52.     for (var i = 0; i < 2; i++) {
    53.         var canvas = this._canvas;
    54.         var context = this._context;
    55.         var tempCanvas = document.createElement('canvas');
    56.         var tempContext = tempCanvas.getContext('2d');
    57.         tempCanvas.width = w + 2;
    58.         tempCanvas.height = h + 2;
    59.         tempContext.drawImage(canvas, x, y, w, h, 1, 1, w, h);
    60.         tempContext.drawImage(canvas, x, y, w, 1, 1, 0, w, 1);
    61.         tempContext.drawImage(canvas, x, y, 1, h, 0, 1, 1, h);
    62.         tempContext.drawImage(canvas, x, h - 1, w, 1, 1, h + 1, w, 1);
    63.         tempContext.drawImage(canvas, w - 1, y, 1, h, w + 1, 1, 1, h);
    64.         context.save();
    65.         context.fillStyle = 'black';
    66.         context.fillRect(x, y, w, h);
    67.         context.globalCompositeOperation = 'lighter';
    68.         context.globalAlpha = 1 / 9;
    69.         for (var yy = 0; yy < 3; yy++) {
    70.             for (var xx = 0; xx < 3; xx++) {
    71.                 context.drawImage(tempCanvas, xx, yy, w, h, x, y, w, h);
    72.             }
    73.         }
    74.         context.restore();
    75.     }
    76.     this._setDirty();
    77. };
    复制代码


                 本帖来自P1论坛作者日月星辰,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=390550  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2025-3-10 15:47 , Processed in 0.131767 second(s), 53 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表