Project1

标题: 小白改写脚本遇到问题,关于物品图片加载 [打印本页]

作者: 是猪别乱叫    时间: 2018-3-23 10:49
标题: 小白改写脚本遇到问题,关于物品图片加载
小白改写脚本遇到问题

将下面的脚本

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;
};

加载不出图片,有什么好的解决方法吗?图片第一次加载没有渲染
作者: doranikofu    时间: 2018-3-23 13:57
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));
作者: Mehmet    时间: 2018-3-23 23:58
我的方案
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. }

作者: 是猪别乱叫    时间: 2018-3-24 10:55
doranikofu 发表于 2018-3-23 13:57
this.contents.blt(bitmap, sx, sy, pw, ph, dx, dy, dw, dh);

改成这个 图片需要预读

图片分辨率自动放大了N倍,求问这要怎么做?
作者: 是猪别乱叫    时间: 2018-3-24 12:31
是猪别乱叫 发表于 2018-3-24 10:55
图片分辨率自动放大了N倍,求问这要怎么做?

兄弟已帮我解决
作者: 无光之火    时间: 2018-8-24 03:38
感谢!!!!




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1