Project1

标题: 关于代码的优化 [打印本页]

作者: 退屈£无聊    时间: 2010-8-29 20:13
标题: 关于代码的优化
求简化,或者给个并行等待的代码 - - 就是说如果这个脚本中等待,但动画剧情什么的还是继续走 - -
  1. @pic1.visible = true

  2.         2.times{ Graphics.update }

  3.         @pic1.visible =false

  4.         @pic2.visible = true

  5.         2.times{ Graphics.update }

  6.         @pic2.visible = false

  7.         @pic3.visible = true

  8.         2.times{ Graphics.update }

  9.         @pic3.visible =false

  10.         @pic4.visible = true

  11.         2.times{ Graphics.update }

  12.         @pic4.visible =false

  13.         @pic5.visible = true

  14.         2.times{ Graphics.update }

  15.         @pic5.visible =false

  16.         @pic6.visible = true

  17.         2.times{ Graphics.update }

  18.         @pic6.visible =false

  19.         @pic7.visible = true

  20.         2.times{ Graphics.update }

  21.         @pic7.visible =false

  22.         @pic8.visible = true

  23.         2.times{ Graphics.update }

  24.         @pic8.visible =false

  25.         @pic9.visible = true

  26.         2.times{ Graphics.update }

  27.         @pic9.visible = false
复制代码

作者: 菜鸟飞呀飞    时间: 2010-8-29 20:44
提示: 作者被禁止或删除 内容自动屏蔽
作者: 后知后觉    时间: 2010-8-29 22:45
这个是像你那样更改不同的 sprite?window? 的 visible

  1. class Abc
  2.   def initialize
  3.     @sprites = []
  4.     for i in 0..9
  5.       sprite = Sprite.new
  6.       sprite.visible = false
  7.       sprite.z = 6000
  8.       sprite.y = 448
  9.       sprite.bitmap = Bitmap.new(640, 32)
  10.       sprite.bitmap.fill_rect(0,0,640,32,Color.new(i*30+15,255,0,(5-i).abs*50+5))
  11.       @sprites.push(sprite)
  12.     end
  13.     @wait_count = 3
  14.     @src_index = 0
  15.     @sprites[@src_index].visible = true
  16.   end
  17.   def update
  18.     @sprites[@src_index].update
  19.     if @wait_count > 0
  20.       @wait_count -= 1
  21.       return
  22.     end
  23.     @sprites[@src_index].visible = false
  24.     @wait_count = 3
  25.     @src_index += 1
  26.     @src_index %= @sprites.size
  27.     @sprites[@src_index].visible = true
  28.     return
  29.   end
  30.   def dispose
  31.     for sprite in @sprites
  32.       sprite.bitmap.dispose
  33.       sprite.dispose
  34.     end
  35.   end
  36. end
  37. class Scene_Map
  38.   alias old_main main
  39.   def main
  40.     @abc = Abc.new
  41.     old_main
  42.     @abc.dispose
  43.   end
  44.   alias old_update update
  45.   def update
  46.     @abc.update
  47.     old_update
  48.   end
  49. end
复制代码
.
.这个是 只使用一个 sprite 不停的改变他的 bitmap

  1. $__logo_jump__.call if $__logo_jump__
  2. class Sprite_Logo < Sprite
  3.   def initialize
  4.     super
  5.     self.x = 512
  6.     self.z = 10000
  7.     self.visible = true
  8.     @bitmaps = Array.new
  9.     for i in 0..9
  10.       r = (5 - i).abs * 50 + 5
  11.       g = 255
  12.       b = 255 - (5 - i).abs * 50 + 5
  13.       a = (5 - i).abs * 50 + 5
  14.       clr = Color.new(r, g, b, a)
  15.       bmp = Bitmap.new(128, 32)
  16.       bmp.font.color = clr
  17.       bmp.font.bold = true
  18.       bmp.draw_text(0, 0, 128, 32, "66RPG", 1)
  19.       @bitmaps.push(bmp)
  20.     end
  21.     @src_index = 0
  22.     self.bitmap = @bitmaps[@src_index]
  23.     @wait_count = 3
  24.   end
  25.   def update
  26.     super
  27.     if @wait_count > 0
  28.       @wait_count -= 1
  29.       return
  30.     end
  31.     @wait_count = 3
  32.     @src_index += 1
  33.     @src_index %= @bitmaps.size
  34.     self.bitmap = @bitmaps[@src_index]
  35.     return
  36.   end
  37.   def dispose
  38.     for bitmap in @bitmaps
  39.       bitmap.dispose
  40.     end
  41.     super
  42.   end
  43. end
  44. module Kernel
  45.   alias old_exit exit
  46.   def exit(*args)
  47.     $logo.dispose
  48.     old_exit(*args)
  49.   end
  50. end
  51. class << Graphics
  52.   alias old_update update
  53.   def update
  54.     old_update
  55.     $logo.update
  56.   end
  57. end
  58. $logo = Sprite_Logo.new
  59. callcc{|$__logo_jump__|}
复制代码
当然啦,这2个脚本其实是一个原理.
我做的是无限的循环.不知道你是不是要的这种动画的效果.
这2个脚本可以同时运行.放到新工程里看看吧.

作者: fux2    时间: 2010-8-30 07:42
回复 退屈£无聊 的帖子

啊,我脚本里写等待也完全失效……   
作者: IamI    时间: 2010-8-30 07:45
  1. for i in 0..9
  2.   g = eval("@pic#{i}")
  3.   g.visible = true
  4.   Graphics.update
  5.   Graphics.update
  6.   g.visible = false
  7. end
复制代码
方法有危险,使用需谨慎= =b
作者: 退屈£无聊    时间: 2010-8-30 09:13
我用用看吧




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