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

Project1

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

[已经解决] 第一次打开窗口无法显示图片

[复制链接]

Lv1.梦旅人

梦石
0
星屑
75
在线时间
76 小时
注册时间
2012-2-6
帖子
26
跳转到指定楼层
1
发表于 2017-6-21 20:38:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
之前自己写了一个插件给游戏新增窗口,然后窗口里用到了drawActorFace和drawIcon,但第一次运行游戏打开这个窗口之后角色的头像并没有显示,必须让窗口刷新一次才能正常显示头像(另外图标的显示没有问题)。我翻自带代码的时候发现了ImageManager.reserveFace这个函数,把它扔进那个窗口的initialize里就能避免此问题,但我个人并不明白其中的原理。

而我在写一个二级菜单类型的插件时又第二次遇到了这个问题,菜单附带的窗口里用到了contents.blt,绘制的是数据库中的敌人图像(有缩放),第一次打开菜单并不显示图片,第二次打开菜单才显示,关键问题在于:这回我再使用ImageManager.reserveEnemy就不管用了,即使我是像自带代码里的那样用forEach循环遍历将要用到的所有敌人图像。

我一直在通过类比RMMV自带的js代码与RMXP自带脚本的区别来学习js,但我在用RMXP写窗口时从来没有遇到过这种情况,所以个人实在是毫无头绪,不知道如何解决。

注:上文提到的所有“第一次”与“第二次”均是相对于运行游戏之后而言的,只要不关游戏,读档和返回标题画面开始新游戏皆无法重置这个“第一次”。

Lv1.梦旅人

梦石
0
星屑
50
在线时间
370 小时
注册时间
2016-1-7
帖子
81
2
发表于 2017-6-22 21:11:27 | 只看该作者
原因目前只能相信是图片从外部读入未完成的时候,窗口同时进行了加载。
按ESC打开默认菜单的时候,如果在Bitmap.load里面输出console.log(bitmap),
可以看到这个bitmap出现了2次。至于个中因由、个人是没深究了,
你有想法的话,可以F8选Sources搜索bitmap._image.src = url 下断,自己单步去跟。
如果是自己创建的窗口加载图片,会看到上述的bitmap只输出了1次。
与此同时,在blt的function里面关于图片的宽高获取是失败的,
所以那个if 条件不会成立,blt 也就失败了。
至于打开过1次任意窗口之后,再打开就能显示,那是因为第2次打开时,图片已读入完毕了。
你可以F8依次点开: Resources - Frames - (index.html) - Images 会看到加载图片已在里面;
图片在你窗口创建之前,就早已在这个Images里面的话,你blt是没问题的。
一般来说,MV的窗口都是在scene里完成加载的,每个scene 都附有 create 和 start ,
你在create 读入图片,在start 处理窗口加载就是了。

评分

参与人数 1梦石 +1 收起 理由
余烬之中 + 1 非常感谢解答,我找到问题所在了.

查看全部评分

回复 支持 1 反对 0

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
76 小时
注册时间
2012-2-6
帖子
26
3
 楼主| 发表于 2017-6-23 16:25:32 | 只看该作者
在野月光 发表于 2017-6-22 21:11
原因目前只能相信是图片从外部读入未完成的时候,窗口同时进行了加载。
按ESC打开默认菜单的时候,如果在Bi ...

非常感谢解答,我找到问题所在了,看来RMMV还是比较复杂的
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-7 16:36

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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