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

Project1

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

[有事请教] 小白改写脚本遇到问题,关于物品图片加载

[复制链接]

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
跳转到指定楼层
1
发表于 2018-3-23 10:49:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
小白改写脚本遇到问题

将下面的脚本

Window_ItemStatus.prototype.drawLargeIcon = function() {
    var iconIndex = this._item.iconIndex;
    var bitmap = ImageManager.loadSystem('IconSet');
    var pw = Window_Base._iconWidth;
    var ph = Window_Base._iconHeight;
    var sx = iconIndex % 16 * pw;
    var sy = Math.floor(iconIndex / 16) * ph;
    var dw = Yanfly.Param.ItemIconSize;
    var dh = Yanfly.Param.ItemIconSize;
    var dx = (Window_Base._faceWidth - dw) / 2;
    var dy = (Window_Base._faceHeight - dh) / 2;
    this.contents._context.imageSmoothingEnabled = false;
    this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);
    this.contents._context.imageSmoothingEnabled = true;
};

改为

ImageManager.loadSystemItemIcon = function(filename, hue) {
    return this.loadBitmap('img/system/ItemIcon/', filename, hue, false);
};


Window_ItemStatus.prototype.drawLargeIcon = function() {
    /*
        改为加载,img/system/ItemIcon/文件夹里的,1号道具文件名是A1.png,2号武器文件名是W1.png
        如:
        img/system/ItemIcon/ I1.png
        img/system/ItemIcon/ W1.png
        img/system/ItemIcon/ A1.png
        原文件地址:var bitmap = ImageManager.loadSystem('IconSet');
    */
    var iconIndex = this._item.id;
    var bitmap,url='img/system/ItemIcon/';
    iconIndex -= this._item.id > Yanfly.Param.ItemStartingId ? 3000 : 0;
    if (DataManager.isItem(this._item)) {
        bitmap = ImageManager.loadSystemItemIcon('I' + iconIndex);
    }
    if (DataManager.isWeapon(this._item)) {
        bitmap = ImageManager.loadSystemItemIcon('W' + iconIndex);
    }
    if (DataManager.isArmor(this._item)) {
        bitmap = ImageManager.loadSystemItemIcon('A' + iconIndex);
    }
    if (DataManager.isSkill(this._item)) {
        bitmap = ImageManager.loadSystemItemIcon('S' + iconIndex);
    }
    var pw = Window_Base._iconWidth;
    var ph = Window_Base._iconHeight;
    var sx = 0;//iconIndex % 16 * pw;
    var sy = 0;//Math.floor(iconIndex / 16) * ph;
    var dw = Yanfly.Param.ItemIconSize;
    var dh = Yanfly.Param.ItemIconSize;
    var dx = (Window_Base._faceWidth - dw) / 2;
    var dy = (Window_Base._faceHeight - dh) / 2;
    this.contents._context.imageSmoothingEnabled = false;
    this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);
    this.contents._context.imageSmoothingEnabled = true;
};

加载不出图片,有什么好的解决方法吗?图片第一次加载没有渲染

Lv2.观梦者

梦石
0
星屑
676
在线时间
224 小时
注册时间
2006-12-7
帖子
839
2
发表于 2018-3-23 13:57:08 | 只看该作者
this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);

改成这个 图片需要预读
        bitmap.addLoadListener(function() {
        this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);
          }.bind(this));

评分

参与人数 1+1 收起 理由
白嫩白嫩的 + 1 叩拜12龄大佬

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
4349
在线时间
552 小时
注册时间
2017-12-2
帖子
41
3
发表于 2018-3-23 23:58:16 | 只看该作者
我的方案
JAVASCRIPT 代码复制
  1. Window_ItemStatus.prototype.drawLargeIcon = function() {
  2.     /*
  3.         获取物品索引
  4.         加载IconSet.png
  5.         改为加载,如果需要新的道具也有新的图像,就把
  6.         代码index -= this._item.iconIndex > Yanfly.Param.ItemStartingId ?3000 : 0;去掉
  7.         img/system/ItemIcon/ I1.png
  8.         img/system/ItemIcon/ W1.png
  9.         img/system/ItemIcon/ A1.png
  10.         原文件地址:var bitmap = ImageManager.loadSystem('IconSet');
  11.     */
  12.     var bitmap;
  13.     var sx = 0;
  14.     var sy = 0;
  15.     var index = this._item.id;
  16.     var url = 'img/system/ItemIcon/';
  17.     var iconIndex = this._item.iconIndex;
  18.     var pw = Window_Base._iconWidth;
  19.     var ph = Window_Base._iconHeight;
  20.     var woaini = 1;
  21.     index -= this._item.id > Yanfly.Param.ItemStartingId ? Yanfly.Param.ItemStartingId : 0;
  22.     if (DataManager.isItem(this._item)) {
  23.         var img = new Image();
  24.         img.src= url + 'I' + index +'.png';
  25.         img.onload = function() {
  26.             bitmap = ImageManager.loadSystemItemIcon('I' + index);
  27.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  28.         }.bind(this);
  29.         img.onerror = function() {
  30.             sx = iconIndex % 16 * pw;
  31.             sy = Math.floor(iconIndex / 16) * ph;
  32.             bitmap = ImageManager.loadSystem('IconSet');
  33.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  34.         }.bind(this);
  35.     }
  36.     if (DataManager.isWeapon(this._item)) {
  37.         var img = new Image();  
  38.         img.src= url + 'W' + index +'.png';  
  39.         img.onload = function() {
  40.             bitmap = ImageManager.loadSystemItemIcon('W' + index);
  41.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  42.         }.bind(this);
  43.         img.onerror = function() {
  44.             bitmap = ImageManager.loadSystem('IconSet');
  45.             sx = iconIndex % 16 * pw;
  46.             sy = Math.floor(iconIndex / 16) * ph;
  47.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  48.         }.bind(this);
  49.     }
  50.     if (DataManager.isArmor(this._item)) {
  51.         var img = new Image();  
  52.         img.src= url + 'A' + index +'.png';
  53.         img.onload = function() {
  54.             bitmap = ImageManager.loadSystemItemIcon('A' + index);
  55.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  56.         }.bind(this);
  57.         img.onerror = function() {
  58.             bitmap = ImageManager.loadSystem('IconSet');
  59.             sx = iconIndex % 16 * pw;
  60.             sy = Math.floor(iconIndex / 16) * ph;
  61.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  62.         }.bind(this);
  63.     }
  64.     if (DataManager.isSkill(this._item)) {
  65.         var img = new Image();  
  66.         img.src= url + 'S' + index +'.png';
  67.         img.onload = function() {
  68.             bitmap = ImageManager.loadSystemItemIcon('S' + index);
  69.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  70.         }.bind(this);
  71.         img.onerror = function() {
  72.             bitmap = ImageManager.loadSystem('IconSet');
  73.             sx = iconIndex % 16 * pw;
  74.             sy = Math.floor(iconIndex / 16) * ph;
  75.             this.aliasDrawLargeIcon(bitmap, sx, sy, pw, ph);
  76.         }.bind(this);
  77.     }
  78. };
  79.  
  80. Window_ItemStatus.prototype.aliasDrawLargeIcon = function(bitmap, sx, sy, pw, ph) {
  81.     var dw = Yanfly.Param.ItemIconSize;
  82.     var dh = Yanfly.Param.ItemIconSize;
  83.     var dx = (Window_Base._faceWidth - dw) / 2;
  84.     var dy = (Window_Base._faceHeight - dh) / 2;
  85.     this.contents._context.imageSmoothingEnabled = false;
  86.     if (!bitmap.isReady()){
  87.         bitmap.addLoadListener(function() {
  88.             this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);
  89.         }.bind(this));
  90.      } else {
  91.         this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);
  92.     }
  93.     this.contents._context.imageSmoothingEnabled = true;
  94. }
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
4
 楼主| 发表于 2018-3-24 10:55:59 | 只看该作者
doranikofu 发表于 2018-3-23 13:57
this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);

改成这个 图片需要预读

图片分辨率自动放大了N倍,求问这要怎么做?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
582
在线时间
310 小时
注册时间
2016-2-29
帖子
210
5
 楼主| 发表于 2018-3-24 12:31:32 | 只看该作者
是猪别乱叫 发表于 2018-3-24 10:55
图片分辨率自动放大了N倍,求问这要怎么做?

兄弟已帮我解决
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
153
在线时间
26 小时
注册时间
2018-8-20
帖子
21
6
发表于 2018-8-24 03:38:17 | 只看该作者
感谢!!!!

点评

你这是在无限挖坟?  发表于 2018-8-24 03:58
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 02:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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