Project1

标题: 如何在脚本里面写“等待60帧”和“等待移动结束” [打印本页]

作者: gaofei677    时间: 2013-3-18 14:00
标题: 如何在脚本里面写“等待60帧”和“等待移动结束”
如题,我想要在脚本里面写“等待60帧”和“等待移动结束(移动图片时的命令)”,翻了很久也不知道这两个命令应该怎么写,求大神指点一二
作者: 怪蜀黍    时间: 2013-3-18 14:11
通常是不能写的。
你还不理解脚本的运行机制。
以前P叔也想过怎么在脚本里写等待,其实很多地方都是不能写的。
你最好把问题具体化,有利于大家帮你解决,而不是局限于怎么在脚本里写等待。
作者: 精灵使者    时间: 2013-3-18 14:15
利用Graphics.update来实行等待
作者: gaofei677    时间: 2013-3-18 16:17
本帖最后由 gaofei677 于 2013-3-18 16:19 编辑

具体就是我想用下面这个命令来移动图片
$game_map.screen.pictures[1].move(0, 0, 0, 100, 100, 255, 0, 60)
达到下面这个事件移动图片相同的效果


但是在事件页面左下角那个“等待到移动结束”选项,$game_map.screen.pictures[1].move(0, 0, 0, 100, 100, 255, 0, 60)里面并没有参数涉及,所以如果我想使用“等待到移动结束”,不知道应该怎么办。我想在脚本里面写“等待60帧”,就是因为如果实在没有办法在脚本里面实现“等待到移动结束”,用“等待60帧”,应该也是一样的


作者: gaofei677    时间: 2013-3-18 16:39
本帖最后由 gaofei677 于 2013-3-18 16:45 编辑
gaofei677 发表于 2013-3-18 16:17
具体就是我想用下面这个命令来移动图片
$game_map.screen.pictures[1].move(0, 0, 0, 100, 100, 255, 0, 60 ...


在脚本编辑器里面
具体可以参见下面这张图的红线部分,我想要等待图片9,10,11移动结束以后再执行后面的语句,我曾经试过在红线下面加上一句调用公共事件1,公共事件1是“等待60帧”,但是这样还是不行,因为公共事件1开始执的同时,下面清楚图片的语句也同时执行了,结果就是,下面的图片清楚后,才开始执行公共事件1

作者: 彭格列第XI代    时间: 2013-3-18 16:50
@wait_count = 180(这是时间3秒)
貌似只能在地图的事件里面写?[这货没测试]
作者: Password    时间: 2013-3-18 20:04
等待:
@wait_count = 帧数

移动图片…
$game_map.screen.pictures[图片ID].move (持续帧数, 左上origin中心center, 原点x, 原点y, 水平缩放, 垂直缩放, 透明度, 合成方式, 是否等待)

试试?
作者: 芯☆淡茹水    时间: 2013-3-19 10:37
   LZ 可以这样,比如有规律的移动图片,像下面只移动 X 轴
  1. x = 0
  2. for i in 1..10
  3.   x += 10
  4.   $game_screen.pictures[1].show("图片名", 0, x, 0, 100, 100, 255, 0)
  5.   Graphics.update
  6. end
  7. $game_screen.pictures[1].show("图片名", 0, 100, 0, 100, 100, 255, 0)
复制代码
用 Graphics.update 来让 X 轴递增 10,然后再显示图片,看起来和移动图片一样,最后再在移动的最终目的地显示图片。
作者: 119143201    时间: 2013-3-19 16:16
搞那么复杂,直接弄个事件不就完了。
作者: 芯☆淡茹水    时间: 2013-3-20 01:37
这个就不甚清楚了,
我也经常用:
for i in 1..n
  xx_window.x/y += a
  Graphics.update
end
来实现窗口的滑动过渡,还没发现什么问题。

作者: gaofei677    时间: 2013-3-21 15:07
这个问题先留在这里,反正也不是什么核心问题,为了美观而已,等过一段时间再来解决
作者: 黄亦天    时间: 2013-3-22 12:05
其实我比较爱干的事情是弄一个公共事件 在里面等待60帧 然后再在公共事件结尾加上接下来要执行的内容 然后在脚本需要等待的地方执行这个公共事件就OK了233
作者: yangjunyin2002    时间: 2013-3-22 12:51
很赞同6楼来着的...

我就用事件做出来了...行程什么的又不是不能做,可以用变量的说- -
作者: gaofei677    时间: 2013-3-22 15:31
本帖最后由 gaofei677 于 2013-3-25 10:34 编辑
yangjunyin2002 发表于 2013-3-22 12:51
我就用事件做出来了...行程什么的又不是不能做,可以用变量的说- -


单从学习脚本方向触发,如果能够搞清楚RM里每一项默认命令是如何执行的,那我们从这个学习的过程中能学习到不少RGSS知识,所以我才问了这个帖子的问题。
而且有些脚本问题是公共事件不能解决的,举个例子:

公共事件1:等待60帧

在脚本编辑器内执行下列命令:

RUBY 代码复制
  1. Class ABC
  2.   def aaa
  3.  
  4.   for i in 1..100
  5.     $game_map.screen.pictures[1].show("aaa",0,i,0,100,100,255,0)
  6. $game_temp.common_event_id = 1
  7.   end
  8.  
  9.   end
  10. end


如果我们执行下面这段脚本时
RUBY 代码复制
  1. a = ABC.new
  2. a.aaa


图片"aaa"的运行方式就不是
显示于(1,0)
等待60帧
显示于(2,0)
等待60帧
显示于(3,0)
.
.
.
.
等待60帧
显示于(100,0)

而是
显示于(100,0)
等待60帧

关于这是为什么,我猜大概是 公共事件 调用时,已经跳出了for循环,所以for循环不等待公共事件的执行就开始下一次循环了吧


补充一句:公共事件调用过多运行程序时会变得很卡
再补充一句:这个行程安排我本来就已经用公共事件做出来了,但是因为公共事件调用机制问题,所以才开始学习脚本,然后用脚本了




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