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

Project1

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

[已经解决] 不使用Graphics.update的移动

[复制链接]

Lv1.梦旅人

薄凉看客

梦石
0
星屑
50
在线时间
1269 小时
注册时间
2010-6-20
帖子
1316
跳转到指定楼层
1
发表于 2013-12-16 20:01:29 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
可能标题没描述清楚,就是一般窗口移动比如 [*1..10].each{|time| @select.x += 10 ; Graphics.update}
如果不使用Graphics.update就看不到移动效果,但如果使用Graphics.update画面会暂时卡一下,如何解决?

话说这个问题困扰我好久了。。。。。
谢谢。

评分

参与人数 1星屑 +35 收起 理由
︶ㄣ牛排ぶ + 35 手动认可奖励

查看全部评分

头像被屏蔽

Lv2.观梦者 (禁止发言)

梦石
0
星屑
653
在线时间
3774 小时
注册时间
2011-2-26
帖子
1839

开拓者

5
发表于 2013-12-18 20:40:59 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
466 小时
注册时间
2013-2-8
帖子
424
4
发表于 2013-12-17 01:34:19 手机端发表。 | 只看该作者
楼主是想要同时更新地图的效果吧。
看看地图场景就懂了。

点评

的确是因为不能刷新其他对象。。。。  发表于 2013-12-17 12:30
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
117
在线时间
552 小时
注册时间
2012-8-18
帖子
1429
3
发表于 2013-12-16 22:49:14 | 只看该作者
本帖最后由 无脑之人 于 2013-12-16 23:12 编辑

不使用Graphics.update就不会更新图形啊- -你需要做的是在Graphics.update的同时update其他的所需要的,譬如Input.update,Mouse.update不过一般来说需要包括的应该是当前Scene的update吧……
所以建议把这个update过程添加到Scene的update过程里面



def global_update()
  Graphics.update
  Input.update
  Mouse.update
  Kboard.update
  #......
  $ObjUpdate ||= []
  $ObjUpdate.each {|item| item.update}
end

class SpriteMiao < Sprite
  #......
  def update
    #......
  end
end
无论是is_a还是has_a都可以,只要有update就好

点评

↓好了,开个玩笑。无论如何,祝你们早日完成你们的共同理想吧,加油!  发表于 2013-12-16 23:26
突然觉得你好像误解了什么,不过不管啦> <话说我们这样版聊大丈夫么  发表于 2013-12-16 23:21
你是触手我懂的别卖萌-。-  发表于 2013-12-16 23:19
哈哈,小弱在这里献上膝盖了  发表于 2013-12-16 23:16
不,共同理想2333【虽然我有方法实现它】  发表于 2013-12-16 23:13

评分

参与人数 2星屑 +100 收起 理由
︶ㄣ牛排ぶ + 80 认可答案
恐惧剑刃 + 20 非常感谢问题解决了

查看全部评分

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

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3583
在线时间
3065 小时
注册时间
2011-11-17
帖子
980
2
发表于 2013-12-16 22:43:51 | 只看该作者
本帖最后由 yagami 于 2013-12-16 22:50 编辑

其实并不是卡 只是没有inputupdate  你在写Graphics.update 的时候 把input也带上 这input不需要任何功能 好比 如果有鼠标系统的话 如果单纯只Graphics 那鼠标就卡住了 有了input 鼠标就能移动了 如果不写功能的话 也只能单纯的移动而已

还有就是 图片移动
def update
loop do
@aaa.x+=1
Graphics.update
break if .....
end
........

end

你如果写出这样肯定会卡住 在你当前的update里做Graphics update 这样写法是不对的

def update
@time+=1
@time%=20
@aaa.x+=1 if @time==0
........
end
我一般都是这么写的 这样就是20次刷新 移动一次了

点评

Ruby貌似不支持多线程……?【单线程模拟也算的话当我没说,我不懂这个】多线程的话应该原理类似,不过要考虑的或许多一点0 0  发表于 2013-12-16 23:15
我说的是多线程并行  发表于 2013-12-16 23:13
在这个核心的update方法里面,放一个全局变量存一个数组,每次update时将数组的每个成员调用他们的update方法,这样就可以并行了嘛  发表于 2013-12-16 23:07
写不依赖于场景的图片效果的话,可以通过封装各种update的方式啊……  发表于 2013-12-16 23:06
我觉得LZ的代码看上去就是写在某个 update里 又或是 某个update调用的某函数里 反正这样都会卡住的 并行我实验过 貌似可以的 但姿势不对 一直跳错  发表于 2013-12-16 23:00

评分

参与人数 2星屑 +100 收起 理由
︶ㄣ牛排ぶ + 80 认可答案
恐惧剑刃 + 20 非常感谢问题解决了

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-22 09:12

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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