设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
扫描二维码关注官方公众号
返回列表
+ 发新帖
查看: 94|回复: 0

[转载发布] More screen stretch modes plugin

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    2026-7-12 04:10
  • 签到天数: 209 天

    连续签到: 2 天

    [LV.7]常住居民III

    7959

    主题

    864

    回帖

    3万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    29925
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    38778

    灌水之王

    发表于 3 天前 | 显示全部楼层 |阅读模式
    Introduction
    Add 2 new screen stetch modes. They can be toggled with F3.
    Original(contain) strech: the game screen stretches to fit inside the window while keeping its aspect ratio.



    Full stretch: the game screen stetches to fit both width and height.



    Cover strech: the game screen stretches to cover the entire window, while keeping its aspect ratio. The contents outside the window will be clipped.



    No stretch: turn off stretch mode.




    Terms
    You can use it in any project, credit is not required.

    How to Use
    Save the code as a js file and put it in plugins directory. There are no parameters for this plugin, just turn it on in the editor.

                    JavaScript:       
    1. //=============================================================================
    2. // ScreenStretch.js
    3. //=============================================================================
    4. /*:
    5. * @plugindesc Add new stetch modes.
    6. * @author utunnels
    7. *
    8. * @help Add 2 new screen stetch modes. They can be toggled with F3.
    9. Original(contain) strech: the game screen stretches to fit inside the window
    10. while keeping its aspect ratio.
    11. Full stretch: the game screen stetches to fit both width and height.
    12. Cover strech: the game screen stretches to cover the entire window, while
    13. keeping its aspect ratio. The contents outside the window will be clipped.
    14. No stretch: turn off stretch mode.
    15. */
    16. Graphics._defaultStretchMode = function() {
    17.     return (Utils.isNwjs() || Utils.isMobileDevice())?2:0;
    18. };
    19. Graphics._switchStretchMode = function() {
    20.     this._stretchEnabled++;
    21.     if(this._stretchEnabled>3) this._stretchEnabled = 0;
    22.     this._updateAllElements();
    23. };
    24. Graphics._updateRealScale = function() {
    25.     if (this._stretchEnabled) {
    26.         const h = this._stretchWidth() / this._width;
    27.         const v = this._stretchHeight() / this._height;
    28.         this._realScale = (this._stretchEnabled==3?Math.max:Math.min)(h, v);
    29.         this._realScaleX = h;
    30.         this._realScaleY = v;
    31.         window.scrollTo(0, 0);
    32.     } else {
    33.         this._realScale = this._scale;
    34.         this._realScaleX = this._scale;
    35.         this._realScaleY = this._scale;
    36.     }
    37. };
    38. Graphics._stretchWidth = Graphics._stretchWidth||function() {
    39.     if (Utils.isMobileDevice()) {
    40.         return document.documentElement.clientWidth;
    41.     } else {
    42.         return window.innerWidth;
    43.     }
    44. };
    45. Graphics._stretchHeight = Graphics._stretchHeight||function() {
    46.     if (Utils.isMobileDevice()) {
    47.         return document.documentElement.clientHeight;
    48.     } else {
    49.         return window.innerHeight;
    50.     }
    51. };
    52. Graphics._centerElement = function(element) {
    53.     var width = element.width * (this._stretchEnabled!=2?this._realScale:this._realScaleX);
    54.     var height = element.height * (this._stretchEnabled!=2?this._realScale:this._realScaleY);
    55.     element.style.position = 'absolute';
    56.     element.style.margin = 0;
    57.     element.style.left = (window.innerWidth-width)/2 + 'px';
    58.     element.style.top = (window.innerHeight-height)/2 + 'px';
    59.     element.style.width = width + 'px';
    60.     element.style.height = height + 'px';
    61.     document.body.style.overflow = 'hidden';
    62. };
    63. Graphics.pageToCanvasX = function(x) {
    64.     if (this._canvas) {
    65.         var left = this._canvas.offsetLeft;
    66.         var scalex = this._canvas.clientWidth/this._canvas.width;
    67.         return Math.round((x - left) / scalex);
    68.     } else {
    69.         return 0;
    70.     }
    71. };
    72. Graphics.pageToCanvasY = function(y) {
    73.     if (this._canvas) {
    74.         var top = this._canvas.offsetTop;
    75.         var scaley = this._canvas.clientHeight/this._canvas.height;
    76.         return Math.round((y - top) / scaley);
    77.     } else {
    78.         return 0;
    79.     }
    80. };
    复制代码




    本贴来自国际rpgmaker官方论坛作者:utunnels处,因国际论坛即将永久关站,为了存档多年珍贵资料,署名转载到本论坛存档,由于官方帖子为英文原帖,需要中文翻译请点击论坛顶部切换语言为中文就可以将帖子翻译成中文浏览,方便大家随时查看,原文地址:https://forums.rpgmakerweb.com/threads/more-screen-stretch-modes-plugin.170575/

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    x
    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

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

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

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

    立即查看

    聊天机器人
    Loading...

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

    GMT+8, 2026-8-1 02:33 , Processed in 0.130438 second(s), 57 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

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