设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1393|回复: 5
打印 上一主题 下一主题

[有事请教] 装备名字太长之后 显示的文字被挤压变瘦

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2075
在线时间
211 小时
注册时间
2018-4-23
帖子
119
跳转到指定楼层
1
发表于 2022-9-8 06:14:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
20星屑
装备名字太长之后 显示的文字被挤压变瘦 请问修改哪里可以拓宽显示 让装备的名字字体可以正常显示 而不是被挤压变成了瘦瘦的字体

最佳答案

查看完整内容

Bitmap.prototype.drawText = function(text, x, y, maxWidth, lineHeight, align) { // [Note] Different browser makes different rendering with // textBaseline == 'top'. So we use 'alphabetic' here. const context = this.context; const alpha = context.globalAlpha; maxWidth = maxWidth || 0xffffffff; let tx = x; let ty = Math.round(y + lineHeight / 2 + this.fontSize * 0.35); ...

Lv4.逐梦者

梦石
0
星屑
7247
在线时间
474 小时
注册时间
2021-12-4
帖子
513
2
发表于 2022-9-8 06:14:58 | 只看该作者
Bitmap.prototype.drawText = function(text, x, y, maxWidth, lineHeight, align) {
    // [Note] Different browser makes different rendering with
    //   textBaseline == 'top'. So we use 'alphabetic' here.
    const context = this.context;
    const alpha = context.globalAlpha;
    maxWidth = maxWidth || 0xffffffff;
    let tx = x;
    let ty = Math.round(y + lineHeight / 2 + this.fontSize * 0.35);
    if (align === "center") {
        tx += maxWidth / 2;
    }
    if (align === "right") {
        tx += maxWidth;
    }
    context.save();
    context.font = this._makeFontNameText();
    context.textAlign = align;
    context.textBaseline = "alphabetic";
    context.globalAlpha = 1;

    if (this.measureTextWidth(text) > maxWidth) { // 新增内容开始
        const size =  this.fontSize;
        this.fontSize = Math.floor(size * maxWidth / this.measureTextWidth(text));
        context.font = this._makeFontNameText();
        this.fontSize = size;
    } // 新增内容结束

    this._drawTextOutline(text, tx, ty, maxWidth);
    context.globalAlpha = alpha;
    this._drawTextBody(text, tx, ty, maxWidth);
    context.restore();
    this._baseTexture.update();
};

这个函数大概位于rmmz_core.js的第1650到第1700行之间,可以搜索"drawText ="(等号前面有个空格)来找到。
效果图:
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7247
在线时间
474 小时
注册时间
2021-12-4
帖子
513
3
发表于 2022-9-8 13:35:03 | 只看该作者
https://developer.mozilla.org/zh ... gContext2D/fillText
这是浏览器原生方法fillText自己的特性,指定最大宽度的情况下会横向压缩。
一种妥协的办法是先使用measureText方法测量出默认字号所需要的宽度,然后除以最大宽度得到压缩比,
最后直接根据该压缩比将字号设置为更小的值,再进行绘制时就会横竖两个方向都压缩了(字会变小但依然是正方形)。
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2075
在线时间
211 小时
注册时间
2018-4-23
帖子
119
4
 楼主| 发表于 2022-9-9 04:55:09 | 只看该作者
小秋橙 发表于 2022-9-8 13:35
https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/fillText
这是浏览器原生方 ...

这是mv的吗? 看不懂 可否直接给出 修改mv的那个位置 修改哪一句?
我以前用VA就改成功过 但是记不清改的是哪了
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
7247
在线时间
474 小时
注册时间
2021-12-4
帖子
513
5
发表于 2022-9-9 11:03:18 | 只看该作者
还有一种办法是,新建一个空插件,就写一行:
Window_ItemList.prototype.maxCols = function() { return 1; };
丢进js/plugins文件夹,在编辑器中启用,这样游戏里的物品栏就会变成一列而不是两列,相当于宽度扩大了一倍。
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2075
在线时间
211 小时
注册时间
2018-4-23
帖子
119
6
 楼主| 发表于 2022-9-11 19:16:23 | 只看该作者
谢谢哥!~~~~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-18 01:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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