Project1

标题: 【求助帖】窗口选项什么的渣问题一个 [打印本页]

作者: px.凤翔九天    时间: 2010-12-28 23:04
标题: 【求助帖】窗口选项什么的渣问题一个
本帖最后由 px.凤翔九天 于 2010-12-30 20:47 编辑

貌似比较渣的问题,但是我还是没能搞定。
就是在我改动了scene_item window_item window_help等脚本时,发现了以下问题:
也就是一个窗口的小小的排版问题
正常显示时,是图标+物品名+数量
我给改成了图标+物品名(渣操作)
就是这样:

然后希望改成有几个就显示几行,不是后面直接加个数字表示数量
然后我就想去向@item_max下手,无效....
这是问题一。

第二:假如54上面问题,还有另一个问题:那就是现在的窗口大仙可以显示10行,所以当超过十个物品时,会往下拉动,我希望的是只能选10个,大于是个设置左右换页。
其实第二个问题的解决思路我自己很清楚,但是如何设置第二页是问题:不是怎么切换到第二页,是怎么描绘第二页.....假如单纯使用@item_max判断页数,先写好在换页的话,会出现一些问题(试验过)难道要使用一次物品就重新排布所有页?看到有了什么父类中page_row_max这类的东东了,但是不知道怎么用啊...
貌似思路懂了,自己可以搞定,就不再追问了。细节我搞定吧。

脚本觉得不需要发,毕竟没改多少,照着原脚本看就好,我大致改了一下坐标,大小什么的而已。
作者: enghao_lim    时间: 2010-12-28 23:31
如果只是要窗口,我可以帮你,可是这样scene_item很多功能会冲突到乱……那个你得自己来……怎样?
作者: 七夕小雨    时间: 2010-12-28 23:32
本帖最后由 七夕小雨 于 2010-12-28 23:42 编辑

分类了嘛?貌似没有看到分类嘛~

好吧~我没有明白第一个问题是什么意思~54吧~

翻页是这样的~

Scene_item
update部分加入

if Input.repeat?(Input::RIGHT)
end
这里先不用写什么~
然后在window_item中
def refresh加两个参数
def refresh(s,p)

再看到 @item_max = @data.size
上面一行插入

@datax = @data
@data = []
if @datax.size>10
  for i in 0...(p-s)
    @data=@datax[s+i]
  end
else
  @data = @datax
end

然后再看
if Input.repeat?(Input::RIGHT)
end
中间填上
@page +1
@window.refresh(@page*10,@page*10+10)

期间还需要一些判定,比如什么时候RIGHT不能按

还有初始化场景需要@page = 0物品的初始化设置等等

我想你都没有问题了吧


七夕小雨于2010-12-28 23:38补充以下内容:
最好再窗口类起先申明一个可操作的对象变量~带入的是@datasize = @data.size为的判定页数

那样
scene_Item的updat中先计算一下总页数
@max = @window.datasize
@bit = @max/10
if Input.repeat?(Input::RIGHT)
@page +1

  if @page != @bit
          @window.refresh(@page*10,@page*10+10)

  else
     @window.refresh(@page*10,@max)

  end
end



七夕小雨于2010-12-28 23:40补充以下内容:
声明总变量是 在window_Item<window_Selectable下面加上
attr_accessor :datasize
def initialize下面加上
@datasize = 0

作者: 七夕小雨    时间: 2010-12-29 00:07
宿舍息灯了……明天吧……如果我记得的话--By Highfan!3.0
作者: 结缘猫    时间: 2010-12-29 00:51
怎么看小羽的头像让人感觉你都是腐女。。。。。。。
也许是我比较YY吧= =。。。。
作者: 禾西    时间: 2010-12-29 10:11
难道要使用一次物品就重新排布所有页

是的。
作者: 七夕小雨    时间: 2010-12-29 12:55
先说第一个问题吧~
在Window_Item 裡面第52行左右
      @data.push(item)
改成
      $game_party.item_number(item).times{@data.push(item)}
然後77行
      self.contents.draw_text(rect, sprintf(":%2d", number), 2)
前面加上 # 号


至于为什么不好使,我估计是你@datasize变量没有好对地方

首先window类起头申明垮类可操作~
然后在@datax = @data
@data = []
下面写上
@datasize = @datax.size
承认这里昨天晚上大意写错了- -

然后scene_Item里面

main部分~
@window = window_Item.new
@window.refresh(0,0)
#这里这么干时为了让他执行一遍最新的refresh从而获得@datasize的值
if @window.datasize >10
@window.refresh(0,10)
else
@window.refresh(0,@window.datasize)
end

其余的地方还真没有发现再有什么问题,就是少个LEFT,这个我相信你会的
作者: px.凤翔九天    时间: 2010-12-29 21:28
本帖最后由 px.凤翔九天 于 2010-12-29 22:52 编辑

回复 七夕小雨 的帖子

问题一终于解决
过程:根本没找到你说的原话...找到了差不多的,直接替换掉无效,然后我看你的区块写的诡异,再查看了$game_party.item_number的参数问题,发现参数是物品id,所以更改了一下写法:
        $game_party.item_number(i).times{@data.push($data_items)}
然后完美解决
问题二:试验结束。依旧无法解决......
    貌似我们用的版本不一样啊....从各种语句的写法可以看出数据库的结构貌似不同。你用的vx?我问的是xp问题啊....(我用的xp1.02)
但是不管怎么说,问题已解决了,倒还是不错的。
效果图:

问题二我自己再试试。




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