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

Project1

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

[已经解决] 如何用脚本刷图做动画?(Graphics.update问题)

[复制链接]

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

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

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

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

x
本帖最后由 myownroc 于 2013-9-18 20:41 编辑

如题?
一个简单的刷图脚本 第5行
  1. [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new
  2. for i in 1..200
  3.   #省略数行定义
  4.   @sprite.bitmap = RPG::Cache.gameover("路径です" + @i.to_s)
  5.   Graphics.update
  6.   #省略数行关于后期完善
  7. end
复制代码
可是如果用这个脚本做成方法就必须拿它替换原来的Graphics.update,不然就会刷出第一张图然后不动。
求有什么好的方法,比如系统本身的[动画]是怎么播放的。  

  -fk: -azogi:

Lv2.观梦者

梦石
0
星屑
555
在线时间
1286 小时
注册时间
2011-6-14
帖子
4086
2
发表于 2013-9-18 18:01:42 | 只看该作者
用Graphics.update是极其偷懒的做法,正确的方法是用帧数控制+自带脚本的Graphics.update。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

3
 楼主| 发表于 2013-9-18 18:04:09 | 只看该作者
satgo1546 发表于 2013-9-18 18:01
用Graphics.update是极其偷懒的做法,正确的方法是用帧数控制+自带脚本的Graphics.update。 ...

教!!
话说沙发君你真手快诶..

点评

Sprite+@frame_count+bitmap←(new)bitmap也许这样会更清楚  发表于 2013-9-18 18:23

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

4
 楼主| 发表于 2013-9-18 18:32:03 | 只看该作者
@satgo1546 还是不会!!!!!

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
5
发表于 2013-9-18 19:08:51 | 只看该作者
你确定@sprite都不需要update的么?
另外刷新怎么能没有循环?
总而言之在下的看法是把update插进原来的循环中
我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

6
 楼主| 发表于 2013-9-18 20:38:33 | 只看该作者
无脑之人 发表于 2013-9-18 19:08
你确定@sprite都不需要update的么?
另外刷新怎么能没有循环?
总而言之在下的看法是把update插进原来的循 ...

loop do
  1. #省略前段Spirit实例化和初始化@i
  2. loop do
  3.   @sprite.bitmap = BALABALABALA...
  4.   @i += 1
  5.   Graphics.update
  6.   @sprite.update
  7.   #继续省略后段完善
  8. end
复制代码
那么这样做仍然是一样的

  -fk: -azogi:
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
7
发表于 2013-9-18 21:10:57 | 只看该作者
0.循环那句我收回……最近有点眼花了……
1.请说清楚您在哪里调用并出现了什么样的状况
2.如果是直接在顶部调用的话……请检查BALABALA……
3.在下的示例:
  1. @sprite=Sprite.new
  2. for i in 0...200
  3.   @sprite.bitmap = Cache.back("Cm#{i%5+1}") #当做正常的Bitmap即可
  4.   Graphics.update
  5.   @sprite.update
  6. end
复制代码
最终非常完美的在换图

评分

参与人数 1星屑 +90 收起 理由
︶ㄣ牛排ぶ + 90 认可答案

查看全部评分

我要填坑!我要背单词!我要学日语!我要每天锻炼!
好吧呵呵= =
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
76
在线时间
1379 小时
注册时间
2012-7-5
帖子
1698

开拓者

8
 楼主| 发表于 2013-9-18 21:30:45 | 只看该作者
本帖最后由 kuerlulu 于 2013-9-18 21:33 编辑

@无脑之人 我把原来的脚本删掉然后用你那段成功了,看来是BALABALABALA的问题,嘛不过可以用真是太好了。
  1. def WDT(top="badapple20/", first=10, last=2610)
  2.   @sprite=Sprite.new
  3.   for i in first..last
  4.     @sprite.bitmap = RPG::Cache.gameover(top + i.to_s)
  5.     Graphics.update
  6.     @sprite.update
  7.   end
  8. end
复制代码
以上是阉割版本,运行时其它活动块会暂停= =b(不过这方面内容还是放后面考虑吧),这个方法看起来非常有用
配合Graphics.frame_rate的话基本上能调出同步率了
感谢无脑大神】这啥。。多次见了

点评

我不是大神啊……另外这个会暂停其他一切活动,所以我说要把update的过程插进原有的循环中,也就是各个Scene的update或者直接插进Graphics.update  发表于 2013-9-18 22:05

  -fk: -azogi:
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-9-30 00:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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