幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1130|回复: 0

RMXP请问如何实现图片窗口背景啊 就象VX一样 我这有个脚本

[复制链接]

9

主题

26

帖子

237

积分

③业余

积分
237
发表于 2009-2-26 14:49:35 | 显示全部楼层 |阅读模式
怎么让XP实现 以下 图片窗口背景




Copy code#=============================================================================
#图片窗口背景
#作者:kissye
#
#注意事项
#使用这个脚本后,Window类里不能再用@skin变量
#
#使用方法
#自己写窗口的时候,令
#self.skin = Cache.文件夹名字("图片名字")
#或者在外部更改,令
#变量 = 窗口.new
#变量.skin = Cache.文件夹名字("图片名字")
#
#更新
#更改Skin为Sprite_Base子类,于是所有Sprite_Base类属性方法包括动画都可以直接调用
#不过真的有需要咩......
#
#Sprite属性举例,如更改图片透明度设置,令
#self.skin.opacity = 透明度
#此外可以设置图片大小,默认与窗口同样大小.
#self.skin.size(x方向变化, y方向变化)
#此数字可以为负.例如
#self.skin.size(-5, -5)
#那么图片大小比窗口上下左右都小了5像素
#注意调用方式和我上次写的不一样
#应该不会再增加什么功能了,反正我自己够用了已经
#=============================================================================
  1. class Skin < Sprite_Base
  2.   def initialize(bitmap, window)
  3.     super(window.viewport)
  4.     @sx = 0
  5.     @sy = 0
  6.     @rectbitmap = Rect.new(0, 0, bitmap.width, bitmap.height)
  7.     @rectself = Rect.new(0, 0, window.width, window.height)
  8.     @origwidth = window.width
  9.     @origheight = window.height
  10.     self.x = window.x
  11.     self.yy = window.y
  12.     self.z = window.z - 10
  13.     self.visible = window.visible
  14.     self.openness = window.openness
  15.     @bitmap = bitmap
  16.     drawback
  17.   end
  18.   #---------------------------------------------------------------------------
  19.   def drawback
  20.     unless @rectself.width == 0 or @rectself.height == 0
  21.       if self.bitmap != nil
  22.         self.bitmap.dispose
  23.       end
  24.       self.bitmap = Bitmap.new(@rectself.width, @rectself.height)
  25.       self.bitmap.stretch_blt(@rectself, @bitmap, @rectbitmap)
  26.     end
  27.   end
  28.   #------------------------------------------------------------------------
  29.   def x=(value)
  30.     @origx = value
  31.     value -= @sx
  32.     super(value)
  33.   end
  34.   #------------------------------------------------------------------------
  35.   def yy=(value)
  36.     @origy = value
  37.     value -= @sy
  38.     self.y = value
  39.   end
  40.   #-------------------------------------------------------------------------
  41.   def width=(value)
  42.     @rectself.width = value + @sx * 2
  43.     @origwidth = value
  44.     drawback
  45.   end
  46.   #-------------------------------------------------------------------------
  47.   def height=(value)
  48.     @rectself.height = value + @sy * 2
  49.     @origheight = value
  50.     drawback
  51.   end
  52.   #-------------------------------------------------------------------------
  53.   def dispose
  54.     self.bitmap.dispose
  55.     super
  56.   end
  57.   #---------------------------------------------------------------------------
  58.   def z=(value)
  59.     value -= 10
  60.     super(value)
  61.   end
  62.   #--------------------------------------------------------------------------
  63.   def openness=(value)
  64.     self.zoom_y = value / 255.0
  65.     self.y = (1.0 - self.zoom_y) * @rectself.height / 2 + @origy - @sy
  66.   end
  67.   #--------------------------------------------------------------------------
  68.   def size(x = 0, y = 0)
  69.     @sx = x
  70.     @sy = y
  71.     self.x = @origx
  72.     self.y = @origy - y
  73.     @rectself.width = @origwidth + x * 2
  74.     @rectself.height = @origheight + y * 2
  75.     drawback
  76.   end
  77. end
  78. #=========================================================================
  79. class Window_Base < Window
  80.   #-------------------------------------------------------------
  81.   def dispose
  82.     super
  83.     if @skin != nil
  84.       @skin.dispose
  85.     end
  86.   end
  87.   #------------------------------------------------------------
  88.   def x=(value)
  89.     super
  90.     if @skin != nil
  91.       @skin.x = value
  92.     end
  93.   end
  94.   #-----------------------------------------------------------
  95.   def y=(value)
  96.     super
  97.     if @skin != nil
  98.       @skin.yy = value
  99.     end
  100.   end
  101.   #-----------------------------------------------------------
  102.   def z=(value)
  103.     super
  104.     if @skin != nil
  105.       @skin.z = value
  106.     end
  107.   end
  108.   #----------------------------------------------------------
  109.   def width=(value)
  110.     if @skin != nil
  111.       @skin.width = value
  112.     end
  113.     super
  114.   end
  115.   #----------------------------------------------------------
  116.   def height=(value)
  117.     if @skin != nil
  118.       @skin.height = value
  119.     end
  120.     super
  121.   end
  122.   #--------------------------------------------------------------
  123.   def visible=(value)
  124.     super
  125.     if @skin != nil
  126.       @skin.visible = value
  127.     end
  128.   end
  129.   #------------------------------------------------------------
  130.   def skin=(value)
  131.     self.opacity = 0
  132.     self.back_opacity = 0
  133.     if @skin != nil
  134.       @skin.dispose
  135.     end
  136.     @skin = Skin.new(value, self)
  137.   end
  138.   #------------------------------------------------------------------
  139.   def openness=(value)
  140.     super
  141.     if @skin != nil
  142.       @skin.openness = self.openness
  143.     end
  144.   end
  145.   #-------------------------------------------------------------------
  146.   def viewport=(value)
  147.     super
  148.     if @skin != nil
  149.       @skin.viewport = value
  150.     end
  151.   end
  152.   #---------------------------------------------------------------------
  153.   def skin
  154.     if @skin != nil
  155.       return @skin
  156.     end
  157.   end
  158. end
复制代码
您正在看的文章来自幻想森林论坛 http://www.rpgchina.net,原文地址:http://www.rpgchina.net/read.php?tid=34662
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2025-6-19 15:30 , Processed in 0.010026 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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