Project1

标题: 一个简单的XP脚本转换成VA的 [打印本页]

作者: Forever火    时间: 2014-9-7 18:20
标题: 一个简单的XP脚本转换成VA的
XP的,以前自己写的一个脚本,VA脚本不会...窗口类的新特性无法理解
RUBY 代码复制下载
  1. class Scene_My
  2.   def main
  3.     #生成窗口
  4.     @my_window = Window_My.new
  5.     #执行过渡
  6.     Graphics.transition
  7.     # 在这里创建一个Sprite
  8.     @sp_enemy=Sprite.new #这里创建一个Sprite 用途是显示图形 enemy=敌人
  9.     @sp_enemy.x=95
  10.     @sp_enemy.y=5
  11.     #主循环
  12.     loop do
  13.       #刷新游戏画面
  14.       Graphics.update
  15.       #刷新输入信息
  16.       Input.update
  17.       #刷新画面
  18.       update
  19.       #如果画面切换就中断循环
  20.       if $scene != self
  21.         break
  22.       end
  23.     end
  24.     #准备过渡
  25.     Graphics.freeze
  26.     #释放窗口
  27.     @my_window.dispose
  28.     #释放精灵
  29.     @sp_enemy.dispose
  30.   end
  31.  
  32.   def update
  33.     #刷新窗口
  34.     @my_window.update
  35.     #按下B键(ESC)的情况下
  36.     if Input.trigger?(Input::B)
  37.       #演奏取消SE
  38.       $game_system.se_play($data_system.cancel_se)
  39.       #切换的地图画面
  40.       $scene = Scene_Map.new
  41.       return
  42.     end
  43.  
  44.     #按下C键(确定建)的情况
  45.     if Input.trigger?(Input::C)
  46.       #根据窗口光标位置分歧
  47.       case @my_window.index
  48.         when 0
  49.  
  50.          @sp_enemy.bitmap = Bitmap.new("Graphics/Fogs/BJ1")
  51.  
  52.         #end
  53.         when 1
  54.          @sp_enemy.bitmap= Bitmap.new("Graphics/Battlers/076-Devil02")
  55.  
  56.         #end
  57.         when 2
  58.          @sp_enemy.bitmap = Bitmap.new("Graphics/Battlers/077-Devil03")
  59.  
  60.  
  61.         #end
  62.       end
  63.       #end
  64.       return
  65.     end
  66.   end
  67. end


RUBY 代码复制下载
  1. class Window_My < Window_Selectable
  2.   def initialize
  3.     super(0,0,90,640) #(x,y,w,h)
  4.     self.contents = Bitmap.new(width - 32,height - 32)
  5.     @arr=["第1页","第2页","第3页"]
  6.     @item_max = @arr.size #item(项目)max(最大数)=项目总数
  7.     self.index = 0 #光标初始位置,如果为-1不显示
  8.     refresh
  9.   end
  10.  
  11.   def refresh
  12.     self.contents.clear
  13.     for index in [email]0...@arr.size[/email]
  14.       rect = Rect.new(0,32*index,self.contents.width-8,22)
  15.       self.contents.fill_rect(rect,Color.new(255,255,255,0))
  16.       self.contents.draw_text(0,32*index,128,32,"#{@arr[index]}") #(x,y,w,h,"")
  17.     end
  18.   end
  19. end

其实就是调用后可以现实一个窗口,这个窗口能分页现实图片啦
作者: taroxd    时间: 2014-9-7 18:29
本帖最后由 taroxd 于 2014-9-7 18:31 编辑

https://rpg.blue/thread-315743-1-1.html

我简单看了一下你的代码,XP和VA在场景和窗口还是有很多改进的。

首先,VA场景切换不是通过 $scene ,而是通过 SceneManager
然后,VA的 Window_Selectable 也不是用你的方式工作的。同时,也不需要你手动设定 contents —— 这在 Window_Base 已经为你实现

最后一个小问题,你的 bitmap 忘了释放




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