Project1

标题: 不使用Graphics.update的移动 [打印本页]

作者: 恐惧剑刃    时间: 2013-12-16 20:01
标题: 不使用Graphics.update的移动
可能标题没描述清楚,就是一般窗口移动比如 [*1..10].each{|time| @select.x += 10 ; Graphics.update}
如果不使用Graphics.update就看不到移动效果,但如果使用Graphics.update画面会暂时卡一下,如何解决?

话说这个问题困扰我好久了。。。。。
谢谢。
作者: yagami    时间: 2013-12-16 22:43
本帖最后由 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次刷新 移动一次了
作者: 无脑之人    时间: 2013-12-16 22:49
本帖最后由 无脑之人 于 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就好
作者: SuperMario    时间: 2013-12-17 01:34
楼主是想要同时更新地图的效果吧。
看看地图场景就懂了。
作者: 晴兰    时间: 2013-12-18 20:40
提示: 作者被禁止或删除 内容自动屏蔽




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