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

Project1

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

[有事请教] 请问如何调用ImageCache预加载图像进缓存?

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3053
在线时间
140 小时
注册时间
2018-1-22
帖子
137
跳转到指定楼层
1
发表于 2019-4-20 03:34:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50星屑
请问如何调用ImageCache的方法来把自己决定要用到的图片提前加载进缓存?这样当要用到这张图片时,系统会从缓存读取,而不是MV默认的那样从硬盘即用即


在rpg_core和rpg_manager中找到了关于ImageCache的相关方法,但是不清楚具体该怎么调用,还请大神指点!谢谢各位!

最佳答案

查看完整内容

稍微改一下也许就行了的,把要先预存的图片 路径 和 图片名 添加到 ReserveImages 里。
自分自身の神様になること

Lv5.捕梦者

梦石
0
星屑
32056
在线时间
5082 小时
注册时间
2012-11-19
帖子
4877

开拓者

2
发表于 2019-4-20 03:34:24 | 只看该作者
稍微改一下也许就行了的,把要先预存的图片  路径 和 图片名 添加到 ReserveImages 里。

  1. var ReserveImages = [
  2.     {folder:'img/faces/',       name:'Actor1'},
  3.     {folder:'img/animations/',  name:'Breath'}
  4. ];
  5. var LastSceneBootLoadSystemImagesForOther = Scene_Boot.loadSystemImages;
  6. Scene_Boot.loadSystemImages = function() {
  7.     LastSceneBootLoadSystemImagesForOther.call(this);
  8.     this.loadOtherImages();
  9. };
  10. Scene_Boot.loadOtherImages = function() {
  11.     ReserveImages.forEach(function(obj){
  12.         ImageManager.reserveBitmap(obj.folder, obj.name, 0, true);
  13.     });
  14. };
复制代码

点评

有需要时我也是用这个方法来预读,免去了操作图片时需要回调的麻烦  发表于 2019-4-20 20:47
谢谢指点了!我刚刚用很大一张图片测试了一下,发现第一次加载这张图片时还是跟没有预加载一样,掉帧很严重,实在不好意思,不知道问题在哪...  发表于 2019-4-20 12:52
其他插件再读时就是直接读取  发表于 2019-4-20 11:38
把你想要先预读的图片这儿就已经先读一遍了,其他插件无论读取什么图片,只要你在这里面添加了图片路径和名字,  发表于 2019-4-20 11:38
好的好的 非常感谢! 请问在其他插件里,能调用出来吗?  发表于 2019-4-20 11:28

评分

参与人数 1+1 收起 理由
526396987 + 1 塞糖

查看全部评分

xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32056
在线时间
5082 小时
注册时间
2012-11-19
帖子
4877

开拓者

3
发表于 2019-4-20 06:30:40 | 只看该作者
本帖最后由 芯☆淡茹水 于 2019-4-20 06:32 编辑

看看 Scene_Boot

点评

看了一下,只有reserveSystem的,请问应该怎样添加关于imageCache的语句呢?  发表于 2019-4-20 06:36
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32056
在线时间
5082 小时
注册时间
2012-11-19
帖子
4877

开拓者

4
发表于 2019-4-20 07:07:03 | 只看该作者
照着写啊,那个就是预读。
可以 reservePicture   reserveFace  ,,,,,,什么的,都可以

点评

如果是其他插件的图片保存在其他文件夹,可以照格式自写 reserve ,写对文件夹路径就行了  发表于 2019-4-20 07:44
嗯,谢谢你,不过似乎对其他要加载位图的插件不起作用,那些插件还是会先从硬盘里读取一次,然后再从缓存里拿  发表于 2019-4-20 07:23
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3053
在线时间
140 小时
注册时间
2018-1-22
帖子
137
5
 楼主| 发表于 2019-4-20 07:50:59 | 只看该作者
芯☆淡茹水 发表于 2019-4-20 07:07
照着写啊,那个就是预读。
可以 reservePicture   reserveFace  ,,,,,,什么的,都可以 ...

谢谢回复,如果我想把一张图片预加载进变量里,然后在其他的插件里调用这个变量,请问我这样写可以吗:
  1. this._iconImg = ImageManager.reserveBitmap('img/menus/main/', 'IconSet', 0, true);
复制代码

然后在其他插件里创建位图的时候:
  1. this._xxx = new Sprite(this._iconImg);
复制代码

不知道这样是否可行呢?
自分自身の神様になること
回复

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
32056
在线时间
5082 小时
注册时间
2012-11-19
帖子
4877

开拓者

6
发表于 2019-4-20 08:25:50 | 只看该作者
526396987 发表于 2019-4-20 07:50
谢谢回复,如果我想把一张图片预加载进变量里,然后在其他的插件里调用这个变量,请问我这样写可以吗:
...

可以是可以,但是觉得有些多余了。
MV 读取图片,比如 picture
第一次 ImageManager.loadPicture(图片A) 时, 内存没有对应图片数据,需要异步读取。
第二次 ImageManager.loadPicture(图片A) 时,  由于第一次已经读取,内存里面有该图片数据,就不需要再异步
读取图片,此时就是直接获取。
如果先 ImageManager.reservePicture(图片A) , 以后 ImageManager.loadPicture(图片A) 时都是直接获取,没有必要再存到另外的地方。
xp vx va mv  va mz 各类型脚本/插件定制
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
168 小时
注册时间
2012-12-1
帖子
46
7
发表于 2019-4-20 08:53:18 | 只看该作者
插件TDDP_PreloadManager.js

TDDP_PreloadManager.7z

5.06 KB, 下载次数: 21

售价: 1 星屑  [记录]

回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3053
在线时间
140 小时
注册时间
2018-1-22
帖子
137
8
 楼主| 发表于 2019-4-20 09:00:48 | 只看该作者
kinbak 发表于 2019-4-20 08:53
插件TDDP_PreloadManager.js

你好!我有用SRD的preloader插件,但有个问题就是,虽然预加载插件把资源加载到缓存中了,但是如果有其他需要用到图片、音频资源的插件,那么这些其他的插件还是会先从硬盘读取一次资源,之后的读取才是从缓存中拿。
简而言之就是perload插件不能把已加载进缓存的资源用变量储存以供其他插件调用,我目前就卡在这个问题上
自分自身の神様になること
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
853
在线时间
168 小时
注册时间
2012-12-1
帖子
46
9
发表于 2019-4-20 10:37:15 | 只看该作者
526396987 发表于 2019-4-20 09:00
你好!我有用SRD的preloader插件,但有个问题就是,虽然预加载插件把资源加载到缓存中了,但是如果有其他 ...

暂时想不到如何解决,看看其他大神怎么回复吧XP
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-13 20:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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