Project1

标题: Scene代码卡死 [打印本页]

作者: Mono_kyrin    时间: 2018-11-18 12:18
标题: Scene代码卡死
本帖最后由 Mono_kyrin 于 2018-11-19 03:50 编辑

想做一个樱花飘飘落下的天气效果,又不想用动画做(毕竟整个素材300多帧……),于是想直接用脚本更新精灵实例解决。
问题解决了,那就作为一个实例分享吧,调用方法在五楼
帧动画图片存放在Graphics/sakura下,命名为emm_3990-0.png 到 emm_3990-306.png
RUBY 代码复制
  1. class Scene_Sakura
  2.  
  3.   def initialize()
  4.     @count = 0
  5.     @sprite = nil
  6.     @viewport = Viewport.new(0,0,640,480)
  7.     @sprite = Sprite.new(@viewport)
  8.     @viewport.z = 1000
  9.     @sprite.x = 0
  10.     @sprite.y = 0
  11.     @sprite.zoom_x = 1.5
  12.     @sprite.zoom_y = 1.5
  13.     @sprite.blend_type = 1
  14.     @sprite.visible = true
  15.     @sprite.mirror = true
  16.     @bitmaps = []
  17.     for i in 0..306
  18.       @bitmaps.push(Bitmap.new("Graphics/sakura/emm_3990-#{i}.png"))
  19.     end
  20.     @sprite.bitmap = @bitmaps[@count]
  21.   end
  22.  
  23.   def update
  24.     @count += 0.5
  25.     @sprite.bitmap = @bitmaps[@count.round]
  26.     if @count == 306
  27.       @count = 0
  28.     end
  29.   end
  30.  
  31. end

作者: 真·可乐    时间: 2018-11-18 12:51
def main下面加一句 Graphics.transition 试试
  1. def main
  2. Graphics.transition
  3. ......
复制代码

作者: Mono_kyrin    时间: 2018-11-18 13:17
真·可乐 发表于 2018-11-18 12:51
def main下面加一句 Graphics.transition 试试

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

我还想在战斗中调用呢
作者: 灯笼菜刀王    时间: 2018-11-18 13:41
本帖最后由 灯笼菜刀王 于 2018-11-18 13:48 编辑
Mono_kyrin 发表于 2018-11-18 13:17
优化了一下代码,跑是能跑了,但是背景是黑的啊

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


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

做法: 去掉第一段def main,  然后在战斗场景(或者地图场景或者道具场景什么什么的地方)用个变量赋予该实例, update它就好啦
作者: Mono_kyrin    时间: 2018-11-18 14:07
灯笼菜刀王 发表于 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
复制代码

作者: guoxiaomi    时间: 2018-11-18 14:22
在update方法里每帧调用 Graphics.update
不过想在战斗、地图画面中添加这些东西,正确的写法应该参照RGSS里面的Spriteset_Map和Spriteset_Battle。
作者: Mono_kyrin    时间: 2018-11-18 14:42
本帖最后由 Mono_kyrin 于 2018-11-18 14:49 编辑
guoxiaomi 发表于 2018-11-18 14:22
在update方法里每帧调用 Graphics.update
不过想在战斗、地图画面中添加这些东西,正确的写法应该参照RGSS ...


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

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

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




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