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

Project1

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

[已经解决] 关于refresh的用法…

[复制链接]

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21626
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

跳转到指定楼层
1
发表于 2013-9-23 22:12:17 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 喵呜喵5 于 2013-9-25 09:28 编辑

看到脚本教程中说refresh要调用大量资源所以原则上是需要时才refresh,那么这个refresh方法和其他方法相比有特殊的地方吗?我用其他方法而不用refresh会有区别吗?
另外,哪些命令应该由refresh处理呢?还是直接无脑的把只需执行一次的命令全扔refresh里就好了?

Lv3.寻梦者

梦石
0
星屑
1175
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

11
发表于 2013-10-1 13:35:43 | 只看该作者
怪我当时没写清楚。refresh一般涉及到图像重绘,图像重绘会占用较多资源。请这样想:假设我们绘制一个血条需要耗费20毫秒,如果每帧都要重绘的话,不但擦除、绘制又浪费20毫秒,而且绘制出来的效果也更原来一样。因此很多时候实用update进行逻辑层面上的判断更新(数据是否有变动),如果发现数据有变动,比如血量减少了update就会调用refresh方法来进行重绘。这样比较节省系统资源和时间。

另外,update方法是被写死了的(父类模板方法中指明了每帧都会调用窗口的update方法)。refresh则一般是建立时调用。

就功能上来说,名字并不对方法产生影响。但是由于上层抽象中就是使用的refresh这个名字,你如果要修改的话就得修改很多地方。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
帖子
154
10
发表于 2013-9-25 15:50:19 | 只看该作者
a774741359 发表于 2013-9-25 13:38
VA的Scene_Base里是这么定义的
场景Update时,调用该场景内的所有窗口的Update函数。
由此可见,一般Upda ...

嗯,不过自定义的类非要改也可以改,但用约定好的名字风格比较统一,也更容易理解。
因为RGSS内建类(Sprite,Window等)也有定义update这样的方法,所以自定义的类也跟它统一比较好吧。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
80
在线时间
40 小时
注册时间
2012-7-3
帖子
98
9
发表于 2013-9-25 13:38:13 | 只看该作者
fangyc 发表于 2013-9-24 09:44
refresh等于把窗口内的所有内容都重新绘制一把,所以每帧都调用肯定会增加负荷
一般情况下也并不需要每帧都 ...

VA的Scene_Base里是这么定义的
场景Update时,调用该场景内的所有窗口的Update函数。
由此可见,一般Update是不应该更换其他名字的。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
65 小时
注册时间
2012-10-18
帖子
22
8
发表于 2013-9-24 23:54:51 | 只看该作者
喵呜喵5 发表于 2013-9-23 23:50
就是说refresh只是个普通的独立的方法名,不像update那样在scene_base中有专门的一句负责把scene中所有窗 ...

尾随喵呜而来,涨了不少姿势{:2_259:}
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
275
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

7
发表于 2013-9-24 18:15:12 | 只看该作者
[ 本帖最后由 亿万星辰 于 2013-9-24 18:17 编辑 ]\n\n[ 本帖最后由 亿万星辰 于 2013-9-24 18:17 编辑 ]\n\n一般情况下是这样,update里的算法决定是否来refresh

另外update对于有选择项的窗口还会有更新选择项光标移动的作用
比如一个窗口里面有3个选项,分别为选项1、选项2、选项3,当你用方向键移动光标时,需要用update来更新光标,但当你要把“选项3”改为“选项4”时,就需要refresh

另外,还是说金钱窗口,比如@gold_window是金钱窗口的一个实例,你可以一直执行@gold_window.update,但在update方法里,你可以写出诸如判断是否有必要进行刷新这样的操作。
当然,这不是必须的要求,只是举例而已。
super
if $game_party.gold != @gold
  @gold= $game_party.gold
  refresh
end  

点评

感谢帮助,就是说Refresh完全是个可以用其他方法替换的方法对吧  发表于 2013-9-25 09:32

评分

参与人数 1星屑 +24 收起 理由
喵呜喵5 + 24 认可答案

查看全部评分

我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

八宝粥的基叔

梦石
0
星屑
4684
在线时间
5240 小时
注册时间
2009-4-29
帖子
14318

贵宾

6
发表于 2013-9-24 13:04:35 | 只看该作者
你执行商店场景,有个金钱窗口。当你购物之后,金钱会变化,但是如果不执行金钱窗口的refresh,金钱窗口的内容是不变的,纵使你的金钱已经变化了。这时你就是在需要重绘金钱窗口时执行了refresh。
当然,你在update里执行refresh也没错,这就会时时刻刻都重绘金钱,但是这样会很耗资源,不推荐这样做。
总之,我们只需要在窗口内容变化时执行refresh。

点评

感谢帮助,就是说Refresh完全是个可以用其他方法替换的方法对吧  发表于 2013-9-25 09:31

评分

参与人数 1星屑 +24 收起 理由
喵呜喵5 + 24 认可答案

查看全部评分

《逝去的回忆3:四叶草之梦》真情发布,欢迎点击图片下载试玩喵。

《逝去的回忆3》的讨论群:
一群:192885514
二群:200460747
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
79 小时
注册时间
2007-6-23
帖子
154
5
发表于 2013-9-24 09:44:26 | 只看该作者
refresh等于把窗口内的所有内容都重新绘制一把,所以每帧都调用肯定会增加负荷
一般情况下也并不需要每帧都去重绘

点评

对,refresh可以用其他方法替换,refresh也像update之类一样,只是一个约定好的名字,内部实现完全可以自己来写  发表于 2013-9-25 10:07
感谢帮助,就是说Refresh完全是个可以用其他方法替换的方法对吧  发表于 2013-9-25 09:30

评分

参与人数 1星屑 +24 收起 理由
喵呜喵5 + 24 认可答案

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

唯一的信徒

梦石
0
星屑
1665
在线时间
1357 小时
注册时间
2013-1-29
帖子
1637
4
发表于 2013-9-24 06:44:29 | 只看该作者
一般来讲refresh就是那种需要绘制图像绘制文字用的方法
放在update里面效率太伤
所以当需要绘制的文字或者图片有变化时才会重新调用

点评

感谢帮助,就是说Refresh完全是个可以用其他方法替换的方法对吧  发表于 2013-9-25 09:30

评分

参与人数 1星屑 +24 收起 理由
喵呜喵5 + 24 认可答案

查看全部评分

『我只是一个正在潜心修炼的渣乐师罢了』
Dear Time\(^o^)/~


假如上面的图片挂了的话麻烦各位去发个帖 @ 一下 orzFly 让他修复 deartime
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21626
在线时间
9413 小时
注册时间
2012-6-19
帖子
7118

开拓者短篇九导演组冠军

3
 楼主| 发表于 2013-9-23 23:50:29 | 只看该作者
a774741359 发表于 2013-9-23 23:12
refresh无非就是一个方法,你调用它或者不调用它,它都在那里。
教程中说的是一个需要调用大量资源的方法并 ...

就是说refresh只是个普通的独立的方法名,不像update那样在scene_base中有专门的一句负责把scene中所有窗口都update一遍的语句在调用对吧?
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-15 18:40

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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