Project1

标题: [图标式战斗选单] 图标位置问题 [打印本页]

作者: dbshy    时间: 2008-8-7 01:13
def icon_update
    for i in [email protected]
      @sprite.active = (self.index == i)
      @sprite.x = self.x
      @sprite.y = self.y + i*26
      @sprite.z = (self.index == i) ? self.z + 2 : self.z + 1
      @sprite.visible = self.visible
      @sprite.update
    end
  end

改这里,自己调坐标
作者: zhong    时间: 2008-8-7 01:18
原脚本的这里就是修改的地方
def icon_update
    for i in [email protected]
      @sprite.active = (self.index == i)
      @sprite.x = self.x + i * 24
      @sprite.y = self.y + 0
     
      @sprite.z = (self.index == i) ? self.z + 2 : self.z + 1
      @sprite.visible = self.visible
      @sprite.update
    end
  end

那两句红色的语句就是图标排布的x,y位置公式。。。他是根据变量i的值来排布的,self.x和self.y是命令窗口在战斗中的位置,这个不用理,只要对那两句做适当的调整就可以排出你喜欢的位置。。。。。如原语句中,@sprite.y = self.y + 0,就是说无论图标是哪一个,他们的y值都是共同的,也就是在同一行,而]@sprite.x = self.x + i * 24就是图标根据命令所在的次序依次相隔24像素的排。。。。。
作者: lindu    时间: 2008-8-7 19:11
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-8-7 20:29
以下引用lindu于2008-8-7 11:11:54的发言:

间距可以改了,但是还是一行的
我想做成像仙剑那样的    ***
                    ***    ***
                       ***
就这种上下左右的,怎么改,帮我改下好不


for i in [email protected]
      @sprite.active = (self.index == i)
      
      @sprite[0].x = 400
      @sprite[0].y = 150
      
      @sprite[1].x = 425
      @sprite[1].y = 180
      
      @sprite[2].x = 400
      @sprite[2].y = 210
      
      @sprite[3].x = 425
      @sprite[3].y = 240
      
      @sprite[4].x = 400
      @sprite[4].y = 270
      
      @sprite.z = 9999
      @sprite.visible = self.visible
      @sprite.update
    end

向上面一样自己写坐标
作者: lindu    时间: 2008-8-8 00:32
提示: 作者被禁止或删除 内容自动屏蔽
作者: dbshy    时间: 2008-8-8 01:41
以下引用lindu于2008-8-7 16:32:02的发言:

用了以后是这个
怎么搞

脚本‘图标战斗’的199行发生了NoMethodError.undefined method `x=` for nil:NilClass

怎么搞


拜托,不能照抄,只是给你个示范
如果你只有4个图标,那就只能到@sprite[3]


[LINE]1,#dddddd[/LINE]系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
作者: lindu    时间: 2008-8-8 01:53
提示: 作者被禁止或删除 内容自动屏蔽
作者: lindu    时间: 2008-8-8 02:03
提示: 作者被禁止或删除 内容自动屏蔽
作者: lindu    时间: 2008-8-8 16:43
提示: 作者被禁止或删除 内容自动屏蔽
作者: darkten    时间: 2008-8-8 19:03
把脚本这几句去掉,
@sprite.active = (self.index == i)
      @sprite.x = self.x + i * 24
      @sprite.y = self.y + i * 24
      @sprite.z = (self.index == i) ? self.z + 2 : self.z + 1
      @sprite.visible = self.visible
      @sprite.update
然后把这几句放进去...
@sprite.active = (self.index == i)
      
     @sprite[0].x = 400
     @sprite[0].y = 150
      
     @sprite[1].x = 425
     @sprite[1].y = 180
      
     @sprite[2].x = 400
     @sprite[2].y = 210
      
     @sprite[3].x = 425
     @sprite[3].y = 240
        
     @sprite.z = 9999
     @sprite.visible = self.visible
     @sprite.update
   end
至于那些x、y值就要自己弄了...(试到满意为止...)
如果问题解决,请认可dbshy...
毕竟解决方法是他出的,我只是加以说明而已...

[LINE]1,#dddddd[/LINE]
另外补充一下...
如果要图标显示在角色的身边(就是说跟着角色的位置显示图标)
只要把x、y值写成
@sprite[1].x = self.x + 24
之类的就可以了...
作者: lindu    时间: 2008-8-8 23:16
提示: 作者被禁止或删除 内容自动屏蔽
作者: lindu    时间: 2009-6-12 08:00
提示: 作者被禁止或删除 内容自动屏蔽
作者: lovejjhao    时间: 2009-10-6 16:26
def icon_update
      @sprite.size
      @sprite[0].active = (self.index == 0)
      @sprite[0].x = self.x
      @sprite[0].y = self.y + 0*24
      @sprite[0].z = (self.index == 0) ? self.z + 2 : self.z + 1
      @sprite[0].visible = self.visible
      @sprite[0].update
      @sprite[1].active = (self.index == 2)
      @sprite[1].x = self.x+24
      @sprite[1].y = self.y + 1*24
      @sprite[1].z = (self.index == 1) ? self.z + 2 : self.z + 1
      @sprite[1].visible = self.visible
      @sprite[1].update
      @sprite[2].active = (self.index == 2)
      @sprite[2].x = self.x
      @sprite[2].y = self.y + 2*24
      @sprite[2].z = (self.index == 2) ? self.z + 2 : self.z + 1
      @sprite[2].visible = self.visible
      @sprite[2].update
      @sprite[3].active = (self.index == 3)
      @sprite[3].x = self.x-24
      @sprite[3].y = self.y + 1*24
      @sprite[3].z = (self.index == 3) ? self.z + 2 : self.z + 1
      @sprite[3].visible = self.visible
      @sprite[3].update
  end




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