设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 961|回复: 0
打印 上一主题 下一主题

[已经过期] 如图12个人物后下一页,下一页向右推送

[复制链接]

Lv4.逐梦者

梦石
0
星屑
6291
在线时间
1103 小时
注册时间
2015-8-15
帖子
658
跳转到指定楼层
1
发表于 2023-4-12 15:13:23 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 金芒芒 于 2023-4-12 15:40 编辑

每一页面的定量是12个人物,下一页向有推
下一页面是新的12个人物
页面数最大值>=10或无限
RUBY 代码复制
  1. #==============================================================================
  2. # ■ Window_Item
  3. #------------------------------------------------------------------------------
  4. #  显示可以装备的回路。
  5. #==============================================================================
  6. class Window_Troops_List< Window_Base
  7.   def blue_color
  8.     return Color.new(141,157,180)
  9.   end
  10.   #--------------------------------------------------------------------------
  11.   # ● 定义实例变量
  12.   #--------------------------------------------------------------------------
  13.   attr_reader   :index                    # 光标位置
  14.   attr_reader   :help_window              # 帮助窗口
  15.   attr_reader   :type                     # 种类
  16.   attr_reader   :able                     # 暗色
  17.     #  for i in 0...$party_items[type].size
  18.     #  next if $party_items[type][i].nil?
  19.     #  x = i%4*66 + 25
  20.     #  y = i/2*80 + 102
  21.     #  case $party_items[type][i].type
  22.   def type=(type)#类型
  23.     @type = type
  24.   end
  25.   def type
  26.     return @type
  27.   end
  28.   #--------------------------------------------------------------------------
  29.   # ● 设置光标的位置
  30.   #     index : 新的光标位置
  31.   #--------------------------------------------------------------------------
  32.   def index=(index)#定义索引=(索引)
  33.     @index = index#@索引=(索引)
  34.     # 刷新帮助文本 (update_help 定义了继承目标)
  35.     #如果是自己。活动和@help窗口!=无
  36.     if self.active and @help_window != nil
  37.       update_help#更新帮助
  38.     end
  39.     # 刷新光标矩形
  40.     update_cursor_rect#更新游标矩形
  41.   end
  42. #--------------------------------------------------------------------------
  43.   # ● 获取行数
  44.   #--------------------------------------------------------------------------
  45.   def column_max #定义行最大值
  46.     # 由项目数和列数计算出行数
  47.     return @item_max #返回@项目最大值
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● 获取开头行
  51.   #--------------------------------------------------------------------------
  52.   def top_column
  53.     # 将窗口内容的传送源 Y 坐标、1 行的高 32 等分
  54.     return self.ox / 32
  55.   end
  56.   #--------------------------------------------------------------------------
  57.   # ● 设置开头行
  58.   #     row : 显示开头的行
  59.   #--------------------------------------------------------------------------
  60.   def top_column=(column)#定义首行=(行)
  61.     # row 未满 0 的场合更正为 0
  62.     if column < 0
  63.       column = 0
  64.     end
  65.     # row 超过 row_max - 1 的情况下更正为 row_max - 1
  66.     if column > column_max - 1
  67.       column = column_max - 1
  68.     end
  69.     # row 1 行高的 32 倍、窗口内容的传送源 Y 坐标
  70.     self.ox = column * 32
  71.   end
  72.   #--------------------------------------------------------------------------
  73.   # ● 获取 1 页可以显示的行数
  74.   #--------------------------------------------------------------------------
  75.  
  76.   def page_column_max  #@column_max = 2
  77.     # 窗口的高度,设置画面的高度减去 32 ,除以 1 行的高度 32
  78.     return 16  #头像行数
  79.   end  
  80.   #--------------------------------------------------------------------------
  81.   # ● 初始化对像
  82.   #     actor : 角色
  83.   #--------------------------------------------------------------------------
  84.   def initialize(type = 0,player_or_enermy = 0)
  85.    @all_fighters = Figter_data::ALL_SOLDIER   #所有人物英雄
  86.   #----------------------------------------------------------------------------
  87.   #                 所有人物英雄添加处
  88.   #----------------------------------------------------------------------------
  89.   # @all_fighters = [5]
  90.   #   if $game_switches[20] == true#(开关 关 )
  91.    #   @all_fighters.push(4)  # => true
  92.   #   end
  93.    #  if $game_switches[21] == true#(开关 关 )
  94.    #  @all_fighters.push(2)   # => true
  95.   #   end
  96.   #-----------------------------------------------------------------------------
  97.  
  98.     #右侧滚动条
  99.     @right_back = Bar_Right.new("right_back", origin_x+172, origin_y+12, 20*14)
  100.     @right_back.visible = false
  101.     @right = Bar_Right.new("right", origin_x+170, origin_y+12, 0)
  102.     @right.visible = false
  103.  
  104.  
  105.     #变量更新
  106.     @type = 0
  107.     @index = 0
  108.     #背景
  109.     @back = Sprite.new
  110.     @back.bitmap = RPG::Cache.menu("troopList-base") #总部队背景图
  111.   #  @back.x = origin_x
  112.    # @back.y = origin_y
  113.     @help_window = Window_Troop_Info.new
  114.  
  115.  
  116.     @item_icon = []
  117.     @item_icon[0] = Sprite.new
  118.     #初始化
  119.    # super(origin_x,origin_y,128/2*4+32,87*4+32)
  120.     #超级的(原始_x,原始_y,287/2+32,14*20+32)
  121.     super(origin_x,origin_y,1200,600)
  122.     #自己窗花= RPG::Cache.menu("Blue")
  123.     self.windowskin  = RPG::Cache.menu("Blue")#光标窗口颜色
  124. #    self.windowskin.z=1100
  125.     self.opacity = 0
  126.     self.active = false
  127.     #刷新
  128.     refresh(type)
  129.     refresh(type)
  130.     update_help
  131.   end
  132.   #--------------------------------------------------------------------------
  133.   # ● 活动窗口用原始x y坐标
  134.   #--------------------------------------------------------------------------  
  135.   def origin_x
  136.     return 16 #光标和头像,名字的原始x标
  137.   end
  138.   def origin_y
  139.     return 93#光标和头像,名字的原始y标
  140.   end
  141.   #--------------------------------------------------------------------------
  142.   # ● 定义用选择状态决定窗口颜色
  143.   #--------------------------------------------------------------------------  
  144.   def able=(able)
  145.     @able=able
  146.     @right_back.able = able
  147.     @right.able = able
  148.     if active
  149.       @back.color = Color.new(255,255,255,0)
  150.     else
  151.       @back.color = Color.new(0,0,0,128)
  152.     end
  153.     refresh
  154.   end
  155.   #--------------------------------------------------------------------------
  156.   # ● 一些方法的重载
  157.   #--------------------------------------------------------------------------  
  158.   def active=(active)
  159.     if active
  160.       if @item_max <=  0
  161.         self.index = -1
  162.       else
  163.         self.index = 0
  164.       end
  165.     else
  166.       self.index = -1
  167.     end
  168.     @ajsdgfshfajklshfa = nil
  169.     @help_window.set_text( nil ) if @help_window != nil
  170.     super(active)
  171.   end
  172.   def dispose
  173.     @back.dispose
  174.     @right_back.dispose
  175.     @right.dispose
  176.     for i in 0...@item_icon.size
  177.       @item_icon[i].dispose
  178.     end
  179.     @help_window.dispose
  180.     super
  181.   end
  182.   def x=(x)
  183.     @back.x = x-origin_x #+ 15
  184.     @right_back.x = x+172 #+30
  185.     @right.x = x+170 #+30
  186.     for i in 0...@item_icon.size
  187.       @item_icon[i].x = 25+ i%4 * (54 + 32)#  +60        #14
  188.     end
  189.     super(x-16)
  190.   end
  191.   def x
  192.     return super+16
  193.   end
  194.   def y=(y)
  195.     @back.y = y-origin_y# + 60
  196.     @right_back.y = y+12 #+ origin_y
  197.     @right.y = y+12 #+ origin_y
  198.     for i in 0...@item_icon.size
  199.       @item_icon[i].y=115+i/ 4 * 122  # + origin_y #+ 25   #14
  200.     end
  201.     super(y)
  202.   end
  203.   def z=(z)
  204.     @back.z=300
  205.     @right_back.z=z+3
  206.     @right.z=z+4
  207.     for i in 0...@item_icon.size
  208.       @item_icon[i].z=z+2
  209.     end
  210.     super(z)
  211.   end
  212.   def visible=(visible)
  213.     @back.visible=visible
  214.     @right_back.visible=visible
  215.     @right.visible=visible
  216.   #  @help_window.visible=visible
  217.     super(visible)
  218.   end
  219.   def contents_opacity=(opacity)
  220.     @back.opacity=opacity
  221.     @right_back.opacity=0#opacity
  222.     @right.opacity=0 #opacity
  223.    # @help_window.opacity=opacity
  224.     super(opacity)
  225.   end
  226.   def oy=(oy)
  227.     #缩放图标时只显示当前页的项目
  228.     for i in 0...@item_icon.size
  229.       @item_icon[i].y = 16+18*i+self.y-oy
  230.       if @item_icon[i].y < self.x or @item_icon[i].y > self.x+20*self.page_row_max
  231.         @item_icon[i].visible = false
  232.       else
  233.         @item_icon[i].visible = true
  234.       end
  235.     end
  236.     super(oy)
  237.   end
  238.   #--------------------------------------------------------------------------
  239.   # ● 获取物品
  240.   #--------------------------------------------------------------------------  
  241.   def item
  242.     return @all_fighters[self.index]
  243.   end
  244.   #--------------------------------------------------------------------------
  245.   # ● 刷新
  246.   #--------------------------------------------------------------------------  
  247.   def refresh(type=@type)#all,1,2,3,4,5,6,7 RPPG::ARMOR_BEGIN
  248.     if self.contents != nil
  249.       self.contents.dispose
  250.       self.contents = nil
  251.     end
  252.  
  253.     for i in 0...@item_icon.size
  254.       @item_icon[i].dispose
  255.     end
  256.     @item_icon = []
  257.     @item_icon[0] = Sprite.new
  258.  
  259.  
  260.  
  261.     for i in 0...@all_fighters.size
  262.      @item_icon[i] = Sprite.new
  263.  
  264.      name = Figter_data::CHARACTER_NAME[@all_fighters[i]]
  265.      @item_icon[i].bitmap = RPG::Cache.icon(name) if name != nil
  266.  
  267.     end
  268.  
  269.     @item_max = @all_fighters.size
  270.     #下标超过范围的时候往回退一格
  271.     if self.top_column > @item_max-self.page_column_max
  272.        self.top_column = @item_max-self.page_column_max
  273.     end
  274. #  if self.index >= @item_column
  275. #     self.index = @item_column-1
  276.   #  end
  277.  
  278.     #右侧滚动条显示
  279.   #  if @item_max > self.page_column_max
  280.    #   @right_back.visible = true
  281.   #    @right.visible = true
  282.   #  else
  283.    #   @right_back.visible = false
  284.    #   @right.visible = false
  285.   #  end
  286.     #滚动条的更新
  287. #   if @right.visible
  288.   #    @right.height = (14*66)*(14*66)/(@item_max.to_f*66)-24.0 > 0 ? (14*66)*(14*66)/(@item_max.to_f*66)-24.0 : 0
  289.   #  end
  290. #---------------------------------------------- 1   
  291.     # 如果项目数不是 0 就生成位图、描绘全部项目
  292.   #  if @item_max > 0
  293.   #    self.contents = Bitmap.new(width - 32, @item_max*20)
  294.   #    for i in 0...@item_max
  295.   #      draw_item(i, 12, i*66)
  296.   #    end
  297.    # else
  298.   #    self.contents = Bitmap.new(width - 32, 20)
  299.   #  end
  300.     #缩放图标时只显示当前页的项目
  301.     for i in 0...@item_icon.size
  302.          # x =16 +@index% 4 * (66 + 5)
  303.          # y = @index/ 4 * 88
  304.          @item_icon[i].x = 25 +i%4 * (54 + 32)
  305.          @item_icon[i].y = i/ 4 * 123
  306.          #@item_icon[i].x = 66*i+self.x-ox+16 #14+16*i
  307.  
  308. #     if @item_icon[i].x < self.x or @item_icon[i].x > self.x+80*self.page_column_max
  309. #       @item_icon[i].visible = false
  310. #     else
  311. #       @item_icon[i].visible = true
  312.   #    end
  313.     end
  314.    #update_help
  315.   end
  316.   #--------------------------------------------------------------------------
  317.   # ● 描绘物品
  318.   #--------------------------------------------------------------------------  
  319.   def draw_item(index, x, y)
  320.  
  321.     item = @all_fighters[index]
  322.  
  323.  
  324.  
  325.  
  326.     self.contents.font.size =12 #自己目录字体。尺寸=12
  327.  
  328.  
  329.     #图标缩放显示专用
  330.     icon_size = 100#84#18#图片缩放大小
  331.  
  332.     @item_icon[index].x = self.x+x - self.index%4 * (66 + 5)#self%4*18 + 25         #
  333.     @item_icon[index].y = self.y+y+16 - self.index/ 4 * 88#/2*18 + 102
  334.  
  335.     @item_icon[index].zoom_x = icon_size.to_f/@item_icon[index].bitmap.width
  336.     @item_icon[index].zoom_y = icon_size.to_f/@item_icon[index].bitmap.height
  337.   #  @item_icon[index].z = 200#self.z+2
  338.     @item_icon[index].color = self.contents.font.color==normal_color ? Color.new(255,255,255,0):Color.new(0,0,0,128)
  339.     #self.contents.font.color = Color.new(128,193,125,0)
  340.     name = Figter_data::THE_NAME[item]
  341.     self.contents.draw_text(x%4 * (66 + 5) + icon_size.to_f, y/ 4 * 88, 184, self.contents.font.size, name)
  342.    # self.contents.draw_text(x + icon_size.to_f, y + 4, 184, self.contents.font.size, name)
  343.  
  344.  
  345.   end
  346.   #--------------------------------------------------------------------------
  347.   # ● 帮助窗口的设置
  348.   #     help_window : 新的帮助窗口
  349.   #--------------------------------------------------------------------------
  350.   def help_window=(help_window)
  351.     @help_window = help_window
  352.     # 刷新帮助文本 (update_help 定义了继承目标)
  353.     if self.active and @help_window != nil
  354.       update_help
  355.     end
  356.   end
  357.  
  358.  
  359.   #--------------------------------------------------------------------------
  360.   # ● 更新光标矩形
  361.   #--------------------------------------------------------------------------
  362.   def update_cursor_rect
  363.     #@back.bitmap = RPG::Cache.menu("item_command"+type.to_s)
  364.     # 光标位置不满 0 的情况下
  365.     if @index < 0
  366.       self.cursor_rect.empty
  367.       return
  368.     end
  369.  
  370.     # 获取当前的行
  371.     column = @index
  372.     # 当前行被显示开头行前面的情况下
  373.     if column < self.top_column
  374.       # 从当前行向开头行滚动
  375.       self.top_column = column
  376.     end
  377.     # 当前行被显示末尾行之后的情况下
  378.     if column > self.top_column + (self.page_column_max - 1)
  379.       # 从当前行向末尾滚动
  380.       self.top_column = column - (self.page_column_max - 1)
  381.     end
  382.  
  383.     @right.x = self.x+72+self.top_column.to_f*66.0*(4*66)/(@item_max.to_f*66)
  384.  
  385.     # 计算光标的宽度
  386.     cursor_width = 1200
  387.     # 计算光标坐标
  388. #   x = 4 + index % 2 * (288 + 32)
  389.   #  y = index / 2 * 32
  390.   #x =32+ @index*66 - self.ox-1# 8 #
  391.      x =10 +@index% 4 * (84 + 1)
  392.      y =5+ @index/ 4 * 120
  393.      z = 1999
  394.     #y = 14 #@index*20 - self.oy-1
  395.     # 更新光标矩形
  396.     self.cursor_rect.set(x, y, 84 ,120)
  397.   end
  398. #--------------------------------------------------------------------------
  399.   # ● 刷新画面
  400.   #--------------------------------------------------------------------------
  401.   def update
  402.     super
  403.  
  404.     # 可以移动光标的情况下
  405.     if self.active and @item_max >= 0 and @index >= 0
  406.       # 方向键下被按下的情况下
  407.       if Input.repeat?(Input::RIGHT)
  408.         # 光标向左移动
  409.         $game_system.se_play($data_system.cursor_se)
  410.         @index = (@index+1+@item_max) % @item_max if @item_max != 0
  411.         update_help
  412.       end
  413.       # 方向键上被按下的情况下
  414.       if Input.repeat?(Input::LEFT)
  415.         # 光标向右移动
  416.         $game_system.se_play($data_system.cursor_se)
  417.         @index = (@index-1+@item_max) % @item_max if @item_max != 0
  418.         update_help
  419.       end
  420.  
  421.  
  422.     end
  423.  
  424.     # 刷新帮助文本 (update_help 定义了继承目标)
  425.     if @help_window != nil and @ajsdgfshfajklshfa == nil
  426.       update_help
  427.       update_help
  428.       @ajsdgfshfajklshfa = true
  429.     end
  430.  
  431.     # 刷新光标矩形
  432.     update_cursor_rect
  433.   end
  434.  
  435.  
  436.  
  437.   def now_selected_troop
  438.     return @all_fighters[@index]
  439.   end
  440.  
  441.   #--------------------------------------------------------------------------
  442.   # ● 刷新帮助文本
  443.   #--------------------------------------------------------------------------
  444.   def update_help
  445.     #鲜辣煎鱼
  446.     @help_window.set_text( @index>-1 ? self.item : nil )
  447.  
  448.   end
  449. end

1下一页.png (648.68 KB, 下载次数: 4)

1下一页.png

下一页标.png (240.27 KB, 下载次数: 2)

下一页标.png
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-4-29 02:07

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表