查看: 2374|回复: 8

[已经解决] Scene代码卡死

[复制链接]
梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
回帖
261
发表于 2018-11-18 12:18:14 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 Mono_kyrin 于 2018-11-19 03:50 编辑

想做一个樱花飘飘落下的天气效果,又不想用动画做(毕竟整个素材300多帧……),于是想直接用脚本更新精灵实例解决。
问题解决了,那就作为一个实例分享吧,调用方法在五楼
帧动画图片存放在Graphics/sakura下,命名为emm_3990-0.png 到 emm_3990-306.png
[pre lang="ruby"]class Scene_Sakura

  def initialize()
    @count = 0
    @sprite = nil
    @viewport = Viewport.new(0,0,640,480)
    @sprite = Sprite.new(@viewport)
    @viewport.z = 1000
    @sprite.x = 0
    @sprite.y = 0
    @sprite.zoom_x = 1.5
    @sprite.zoom_y = 1.5
    @sprite.blend_type = 1
    @sprite.visible = true
    @sprite.mirror = true
    @bitmaps = []
    for i in 0..306
      @bitmaps.push(Bitmap.new("Graphics/sakura/emm_3990-#{i}.png"))
    end
    @sprite.bitmap = @bitmaps[@count]
  end

  def update
    @count += 0.5
    @sprite.bitmap = @bitmaps[@count.round]
    if @count == 306
      @count = 0
    end
  end
  
end
[/pre]
梦石
2
星屑
13779
在线时间
2319 小时
注册时间
2011-6-4
回帖
586
发表于 2018-11-18 12:51:31 | 显示全部楼层
def main下面加一句 Graphics.transition 试试
  1. def main
  2. Graphics.transition
  3. ......
复制代码
BUG反馈请加QQ 529283039
水友群 917854767

回复

使用道具 举报

梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
回帖
261
 楼主| 发表于 2018-11-18 13:17:59 | 显示全部楼层
真·可乐 发表于 2018-11-18 12:51
def main下面加一句 Graphics.transition 试试

优化了一下代码,跑是能跑了,但是背景是黑的啊

我还想在战斗中调用呢
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2018-11-18 13:41:31 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2018-11-18 13:48 编辑
Mono_kyrin 发表于 2018-11-18 13:17
优化了一下代码,跑是能跑了,但是背景是黑的啊

我还想在战斗中调用呢 ...


你占用了$scene 当然其他的场景就没了, 要想套在别的场景里, 就不要自己mian, 让它在别的场景里刷新就好了

做法: 去掉第一段def main,  然后在战斗场景(或者地图场景或者道具场景什么什么的地方)用个变量赋予该实例, update它就好啦
回复

使用道具 举报

梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
回帖
261
 楼主| 发表于 2018-11-18 14:07:18 | 显示全部楼层
灯笼菜刀王 发表于 2018-11-18 13:41
你占用了$scene 当然其他的场景就没了, 要想套在别的场景里, 就不要自己mian, 让它在别的场景里刷新就好 ...

好像没有用啊这回是完全不加载了
  1. #===========================================================
  2. # ■ Scene_Map
  3. #===============================================================
  4. class Scene_Map
  5.   alias my_main main
  6.   def main
  7.     @sakura = Scene_Sakura.new
  8.     my_main
  9.   end
  10.   
  11.   alias my_update update
  12.   def update
  13.     @sakura.update
  14.     my_update
  15.   end
  16. end
复制代码
回复

使用道具 举报

梦石
1
星屑
24088
在线时间
3339 小时
注册时间
2011-7-8
回帖
3862

开拓者

发表于 2018-11-18 14:22:50 | 显示全部楼层
在update方法里每帧调用 Graphics.update
不过想在战斗、地图画面中添加这些东西,正确的写法应该参照RGSS里面的Spriteset_Map和Spriteset_Battle。

评分

参与人数 1星屑 +50 收起 理由
RyanBern + 50 认可答案

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复

使用道具 举报

梦石
0
星屑
3670
在线时间
357 小时
注册时间
2018-9-4
回帖
261
 楼主| 发表于 2018-11-18 14:42:02 | 显示全部楼层
本帖最后由 Mono_kyrin 于 2018-11-18 14:49 编辑
guoxiaomi 发表于 2018-11-18 14:22
在update方法里每帧调用 Graphics.update
不过想在战斗、地图画面中添加这些东西,正确的写法应该参照RGSS ...


现在好了,我把视口的z设在1000就好了,但是不设定的话应该不会和weather冲突的吧…………

就是动画忽然变得非常快,感觉可以用隔帧更新的方式解决

不过有什么更好的实现方法吗

点评

成功了,蟹蟹大佬  发表于 2018-11-19 03:47
你的25行改成 [@count / 2] 就好了嘛  发表于 2018-11-18 18:02
回复

使用道具 举报

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

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部