Project1

标题: 学习中有Window_Skill的一段脚本不明,请指教 [打印本页]

作者: 小空弟    时间: 2008-12-27 00:22
标题: 学习中有Window_Skill的一段脚本不明,请指教
在Window_Skill里24行

# ● 获取技能
  #--------------------------------------------------------------------------
  def skill
    return @data[self.index]
  end


这段脚本里面,@data数组里面究竟是什么样的变量啊?


感觉是跟语法有关,但是试了一下午也不对。(学习中见笑了)
如果直接对@data赋值,比如说1号和2号技能。应该怎么写呢?
查了好多地方貌似也没有讲这个获取技能的。

[LINE]1,#dddddd[/LINE]版务信息:本贴由楼主自主结贴~
作者: IamI    时间: 2008-12-27 00:46
因为不能将data开放给其他代码任意赋值,但又要在内部获得其内容,因此定义该方法
data是关于Data_Skill的变量
data不能外部赋值,要赋值,使用方法是
      skill = $data_skill[ID号]
      if skill != nil
        @data[位置] = (skill)
      end
(因为skill当中有空号所以要检查nil) [LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: 小空弟    时间: 2008-12-27 01:08
原来如此,那如果要赋值的话

def refresh的这段脚本:
def refresh
    @data = []
    for skill in @actor.skills
      @data.push(skill)
      if skill.id == @actor.last_skill_id
        self.index = @data.size - 1
      end
    end
    @item_max = @data.size
    create_contents
    for i in 0...@item_max
      draw_item(i)
    end
  end

偶还是对“@data.push(skill)”这个搞不大明白,因为按照2楼所述,直接在这里用for~end对skill变量直接赋值 =$data_skill就可以了。但是实际上不行。不知道哪里又错了。

作者: 小空弟    时间: 2008-12-27 04:25
我经过一段时间摸索。终于找到了解决的方法,其实很简单
只要在
def refresh
   @data = []
   for skill in @actor.skills
     @data.push(skill)
     
这个地方改成$data_skills[1..5]
就能直接调用1~5号技能

2楼的方法貌似不对,但是有启发,所以给你加分啦
作者: 雪流星    时间: 2008-12-27 05:00
http://rpg.blue/viewthread.php?tid=69312
作者: 小空弟    时间: 2008-12-29 18:04
话说ls那个数组的说明搞的偶好糊涂。本来还有点明白的~~
@@等雪流星再发个教程吧~~




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