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

Project1

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

[已经解决] 寻关于对话窗口中文字颜色的脚本

 关闭 [复制链接]

Lv4.逐梦者

梦石
0
星屑
6865
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

跳转到指定楼层
1
发表于 2009-12-4 16:16:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
3星屑
接近2年前才来6R的时候找到过一个关于对话框文字颜色的脚本
当时还不会脚本,因为发生冲突就删掉了,现在想找回来又没时间
希望有的童鞋发一下
影响中那个脚本是一个人发问一个人来回答
回答的人好像是柳柳.记不大清楚了
关于那个脚本的效果大概就是这种风格的

希望有的朋友能发一个感激不尽!!!

最佳答案

查看完整内容

再帮你调整了一下,不但效率更高了,而且貌似更好看了。 这个渐变效果很不错呢,我得申请专利。哇哈哈哈哈。











你知道得太多了

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
2
发表于 2009-12-4 16:16:19 | 只看该作者
本帖最后由 奶油Da蛋糕 于 2009-12-5 11:24 编辑
  1.         for i in 10 .. 32
  2.         a = 32 - i
  3.         self.contents.font.color = Color.new(255-a*8, 255-a*4, 255)
  4.         self.contents.draw_text(4 + x, 32 * y, 40, a, c)
  5.         end
复制代码
再帮你调整了一下,不但效率更高了,而且貌似更好看了。
这个渐变效果很不错呢,我得申请专利。哇哈哈哈哈。

后知后觉我爱你.JPG (30.4 KB, 下载次数: 32)

后知后觉我爱你.JPG

后知后觉love.jpg (20.23 KB, 下载次数: 29)

后知后觉love.jpg
我爱66RPG,但我讨厌66.
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
215
在线时间
10 小时
注册时间
2009-7-25
帖子
656
3
发表于 2009-12-5 08:28:23 | 只看该作者
本帖最后由 Goldencolor 于 2009-12-5 11:35 编辑

应该可以吧~满足LZ
  1. #==============================================================================
  2. # ■ Textview
  3. #------------------------------------------------------------------------------
  4. #  文字表示クラス
  5. #    注:本脚本根据教学改造。教学原址:RGSS研究所
  6. # 使用方法:
  7. #  t = Textview.new(320,240,0, "Goldencolor!",4,50,Color.new(255,255,0,255))
  8. #t = Textview.new(320,240,0, "t = Textview.new(320,240,0, "Goldencolor3色描绘",4)
  9. #color1 = Color.new(255,0,0)
  10. #color2 = Color.new(0,255,0)
  11. #color3 = Color.new(0,0,255)
  12. #t.gradation3(color1,color2,color3)


  13. ",4)
  14. #color1 = Color.new(255,0,0)
  15. #color2 = Color.new(0,255,0)
  16. #color3 = Color.new(0,0,255)
  17. #t.gradation3(color1,color2,color3)
  18. #==============================================================================

  19. class Textview
  20.   #--------------------------------------------------------------------------
  21.   # ● 公開インスタンス変数
  22.   #--------------------------------------------------------------------------
  23.   attr_accessor :autdispose       #on_changeがfalseなら自動でdisposeするフラグ
  24.   attr_accessor :autemphasis      #文字列が変更したら自動で強調表示するフラグ
  25.   
  26.   attr_reader :x                  #x座標
  27.   attr_reader :y                  #y座標
  28.   attr_reader :z                  #z座標
  29.   attr_reader :zoom_x             #拡大率x
  30.   attr_reader :zoom_y             #拡大率y
  31.   attr_reader :color              #ブレンド色
  32.   attr_reader :opacity            #透明度
  33.   attr_reader :on_change          #↓の何れかがtrueならtrueを返す
  34.   attr_reader :on_change_place    #座標移動中ならtrueを返す
  35.   attr_reader :on_change_color    #色変更中ならtrueを返す
  36.   attr_reader :on_change_zoom     #拡大縮小中ならtrueを返す
  37.   attr_reader :on_change_opacity  #透明度変更中ならtrueを返す
  38.   attr_reader :on_flash           #フラッシュ進行中ならtrueを返す
  39.   
  40.   #--------------------------------------------------------------------------
  41.   # ● オブジェクト初期化
  42.   #--------------------------------------------------------------------------
  43.   def initialize(x,y,z, value, pos = 0, size = 22, color = nil)
  44.     @x = x                                  #x座標
  45.     @y = y                                  #y座標
  46.     @z = z                                  #z座標
  47.     @value = value                          #文字列
  48.     @prevalue = value                       #文字列の変更を監視するための変数
  49.     @pos = pos                              #原点位置
  50.     @size = size                            #フォントサイズ
  51.     color = Color.new(0,0,0,0) if color.nil?
  52.     @color = color                          #スプライトのブレンド色
  53.     @opacity = 255                          #透明度
  54.     @zoom_x = 1.0                           #拡大率x
  55.     @zoom_y = 1.0                           #拡大率y
  56.     @defcolor = color                       #デフォルト色
  57.     @defzoom_x = 1.0                        #デフォルト拡大率x
  58.     @defzoom_y = 1.0                        #デフォルト拡大率y
  59.    
  60.     @emphasis_count = 20                        #強調表示フレーム数
  61.     @emphasis_color = Color.new(255, 0, 0)      #強調時の色
  62.     @emphasis_zoom = 2                          #強調時の拡大率
  63.    
  64.     @strs = Array.new   #文字列スプライト
  65.     make_sprite()       #スプライト作成
  66.     memory_all()        #スプライトの各種状態を記憶
  67.   end
  68.   
  69.   #--------------------------------------------------------------------------
  70.   # ● 更新
  71.   #--------------------------------------------------------------------------
  72.   def move(value = @prevalue)
  73.     return true if value.nil?
  74.     @value = value
  75.     #文字列が変更されたら
  76.     if value != @prevalue
  77.       @prevalue = @value
  78.       make_sprite()
  79.       #強調表示
  80.       emphasis() if @autemphasis
  81.     end
  82.    
  83.     @on_change = false
  84.     #移動
  85.     change_place() if @on_change_place
  86.     #色変更
  87.     change_color() if @on_change_color
  88.     #拡大率変更
  89.     change_zoom() if @on_change_zoom
  90.     #透明度変更
  91.     change_opacity() if @on_change_opacity
  92.     #フラッシュ進行
  93.     change_flash() if @on_flash
  94.    
  95.     #自動消滅
  96.     if @autdispose && @on_change == false
  97.       dispose()
  98.       return true
  99.     else
  100.       return false
  101.     end
  102.   end
  103.   
  104.   #--------------------------------------------------------------------------
  105.   # ● スプライト作成
  106.   #--------------------------------------------------------------------------
  107.   def make_sprite
  108.     array = @value.split(//)
  109.     for i in 0...array.size
  110.       if @strs[i].nil?
  111.         @strs[i] = Sprite_textview.new()
  112.         @strs[i].color = @defcolor
  113.         @strs[i].mx = @x
  114.         @strs[i].my = @y
  115.         @strs[i].mz = @z
  116.         @strs[i].mzoom_x = @defzoom_x
  117.         @strs[i].mzoom_y = @defzoom_y
  118.         @strs[i].mcolor = @defcolor
  119.         @strs[i].mopacity = @opacity
  120.       end
  121.       @strs[i].bitmap = CacheString::string(array[i],@size)
  122.     end
  123.     if @strs.size > array.size
  124.       for i in [email][email protected][/email]
  125.         @strs[i].bitmap = CacheString::string(" ")
  126.       end
  127.     end
  128.     set_pos()
  129.     refresh()
  130.   end
  131.   
  132.   #--------------------------------------------------------------------------
  133.   # ● 初期状態に戻す
  134.   #--------------------------------------------------------------------------
  135.   def refresh
  136.     @strs.each{|i|
  137.       i.fx = @x * 1.0
  138.       i.fy = @y * 1.0
  139.       i.x = @x
  140.       i.y = @y
  141.       i.z = @z
  142.       i.zoom_x = zoom_x
  143.       i.zoom_y = zoom_y
  144.       i.color = color
  145.       i.opacity = opacity
  146.     }
  147.     gradation(@gcolor1,@gcolor2) if @g2_flag
  148.     gradation3(@gcolor1,@gcolor2,@gcolor3) if @g3_flag
  149.     gradation_o(@gopacity1,@gopacity2) if @g2o_flag
  150.     gradation3_o(@gopacity1,@gopacity2,@gopacity3) if @g3o_flag
  151.   end
  152.   
  153.   #--------------------------------------------------------------------------
  154.   # ● 位置調整
  155.   #--------------------------------------------------------------------------
  156.   def set_pos
  157.     dx, dy = 0, 0
  158.     #縦書き
  159.     if @vertical
  160.       #原点x操作
  161.       @strs[0].oy = 0
  162.       for i in [email][email protected][/email]
  163.         @strs[i].oy = @strs[i-1].oy - @strs[i-1].bitmap.height
  164.       end
  165.       case @pos % 3
  166.       when 1
  167.         dy = (@strs[-1].oy - @strs[0].bitmap.height - @strs[0].oy) / 2
  168.       when 2
  169.         dy = (@strs[-1].oy - @strs[0].bitmap.height - @strs[0].oy)
  170.       end
  171.       @strs.each{|i|i.oy -= dy}
  172.       #原点y操作
  173.       case @pos / 3
  174.       when 1
  175.         dx = @size / 2
  176.       when 2
  177.         dx = @size
  178.       end
  179.       xline = @strs[0].bitmap.width
  180.       for i in [email][email protected][/email]
  181.         @strs[i].ox = dx - (xline - @strs[i].bitmap.width) / 2
  182.       end
  183.     #横書き
  184.     else
  185.       #原点x操作
  186.       @strs[0].ox = 0
  187.       for i in [email][email protected][/email]
  188.         @strs[i].ox = @strs[i-1].ox - @strs[i-1].bitmap.width
  189.       end
  190.       case @pos % 3
  191.       when 1
  192.         dx = (@strs[-1].ox - @strs[0].bitmap.width - @strs[0].ox) / 2
  193.       when 2
  194.         dx = (@strs[-1].ox - @strs[0].bitmap.width - @strs[0].ox)
  195.       end
  196.       @strs.each{|i|i.ox -= dx}
  197.       #原点y操作
  198.       case @pos / 3
  199.       when 1
  200.         dy = @size / 2
  201.       when 2
  202.         dy = @size
  203.       end
  204.       @strs.each{|i|i.oy = dy}
  205.     end
  206.   end
  207.   
  208.   #--------------------------------------------------------------------------
  209.   # ● 強調表示
  210.   #--------------------------------------------------------------------------
  211.   def emphasis(zoom = nil,color = nil,count = nil)
  212.     @emphasis_zoom = zoom unless zoom.nil?
  213.     @emphasis_color = color.clone unless color.nil?
  214.     @emphasis_count = count unless count.nil?
  215.     set_color(@emphasis_color.clone)
  216.     set_zoom(@emphasis_zoom,@emphasis_zoom)
  217.     set_color(nil, @emphasis_count)
  218.     set_zoom(nil,nil, @emphasis_count)
  219.   end
  220.   
  221.   #--------------------------------------------------------------------------
  222.   # ● 縦書き設定
  223.   #--------------------------------------------------------------------------
  224.   def vertical_writing(flag = true)
  225.     @vertical = flag
  226.     set_pos()
  227.   end
  228.   
  229.   #--------------------------------------------------------------------------
  230.   # ● 2色カラーグラデーション
  231.   #--------------------------------------------------------------------------
  232.   def gradation(c1,c2)
  233.     @g2_flag = true
  234.     @g3_flag = false
  235.     @gcolor1 = c1
  236.     @gcolor2 = c2
  237.     size = @strs.size - 1
  238.     return if size == 0
  239.     if size == 1
  240.       @strs[0].color = c1
  241.     end
  242.     for i in 0..size
  243.       red = c1.red * (size - i) / size + c2.red * i / size
  244.       green = c1.green * (size - i) / size + c2.green * i / size
  245.       blue = c1.blue * (size - i) / size + c2.blue * i / size
  246.       alpha = c1.alpha * (size - i) / size + c2.alpha * i / size
  247.       @strs[i].color = Color.new(red,green,blue,alpha)
  248.     end
  249.   end
  250.   
  251.   #--------------------------------------------------------------------------
  252.   # ● 3色カラーグラデーション
  253.   #--------------------------------------------------------------------------
  254.   def gradation3(c1,c2,c3)
  255.     @g2_flag = false
  256.     @g3_flag = true
  257.     @gcolor1 = c1
  258.     @gcolor2 = c2
  259.     @gcolor3 = c3
  260.     size = @strs.size - 1
  261.     return if size == 0
  262.     if size == 1
  263.       @strs[0].color = c2
  264.     elsif size == 2
  265.       @strs[0].color = c1
  266.       @strs[1].color = c3
  267.     end
  268.     half = size / 2
  269.     for i in 0..half
  270.       red = c1.red * (half - i) / half + c2.red * i / half
  271.       green = c1.green * (half - i) / half + c2.green * i / half
  272.       blue = c1.blue * (half - i) / half + c2.blue * i / half
  273.       alpha = c1.alpha * (half - i) / half + c2.alpha * i / half
  274.       @strs[i].color = Color.new(red,green,blue,alpha)
  275.     end
  276.     ahalf = size - half
  277.     for i in half..size
  278.       red = c2.red * (size - i) / ahalf + c3.red * (i - half) / ahalf
  279.       green = c2.green * (size - i) / ahalf + c3.green * (i - half) / ahalf
  280.       blue = c2.blue * (size - i) / ahalf + c3.blue * (i - half) / ahalf
  281.       alpha = c2.alpha * (size - i) / ahalf + c3.alpha * (i - half) / ahalf
  282.       @strs[i].color = Color.new(red,green,blue,alpha)
  283.     end
  284.   end
  285.   
  286.   #--------------------------------------------------------------------------
  287.   # ● 2点透明度グラデーション
  288.   #--------------------------------------------------------------------------
  289.   def gradation_o(opacity1,opacity2)
  290.     @g2o_flag = true
  291.     @g3o_flag = false
  292.     @gopacity1 = opacity1
  293.     @gopacity2 = opacity2
  294.     size = @strs.size - 1
  295.     return if size == 0
  296.     if size == 1
  297.       @strs[0].opacity = opacity1
  298.     end
  299.     for i in 0..size
  300.       @strs[i].opacity = opacity1 * (size - i) / size + opacity2 * i / size
  301.     end
  302.   end
  303.   
  304.   #--------------------------------------------------------------------------
  305.   # ● 3点透明度グラデーション
  306.   #--------------------------------------------------------------------------
  307.   def gradation3_o(opacity1,opacity2,opacity3)
  308.     @g2o_flag = false
  309.     @g3o_flag = true
  310.     @gopacity1 = opacity1
  311.     @gopacity2 = opacity2
  312.     @gopacity3 = opacity3
  313.     size = @strs.size - 1
  314.     return if size == 0
  315.     if size == 1
  316.       @strs[0].opacity = opacity2
  317.     elsif size == 2
  318.       @strs[0].opacity = opacity1
  319.       @strs[1].opacity = opacity3
  320.     end
  321.     half = size / 2
  322.     for i in 0..half
  323.       @strs[i].opacity = opacity1 * (half - i) / half + opacity2 * i / half
  324.     end
  325.     ahalf = size - half
  326.     for i in half..size
  327.       @strs[i].opacity = opacity2*(size - i)/ahalf + opacity3*(i - half)/ahalf
  328.     end
  329.   end
  330.   
  331.   #--------------------------------------------------------------------------
  332.   # ● グラデーション解除
  333.   #--------------------------------------------------------------------------
  334.   def cancel_gradation
  335.     @g2_flag = false
  336.     @g3_flag = false
  337.     @g2o_flag = false
  338.     @g3o_flag = false
  339.     refresh()
  340.   end

  341.   #--------------------------------------------------------------------------
  342.   # ● 移動設定
  343.   #--------------------------------------------------------------------------
  344.   def set_place(x = nil, y = nil, z = nil, count = 0, interval = 0)
  345.     if count == 0
  346.       @strs.each{|i|
  347.         i.x = x.nil? ? i.mx : x
  348.         i.y = y.nil? ? i.my : y
  349.         i.z = z.nil? ? i.mz : z
  350.         i.fx = i.x
  351.         i.fy = i.y
  352.       }
  353.       @on_change_place = false
  354.     else
  355.       @strs.each{|i|
  356.         i.tx = x.nil? ? i.mx : x
  357.         i.ty = y.nil? ? i.my : y
  358.         i.tz = z.nil? ? i.mz : z
  359.         i.spx = (i.tx - i.x) / (count * 1.0)
  360.         i.spy = (i.ty - i.y) / (count * 1.0)
  361.         i.spz = (i.tz - i.z) / (count * 1.0)
  362.       }
  363.       @pcount = 0
  364.       @pinterval = interval
  365.       @on_change_place = true
  366.     end
  367.   end
  368.   
  369.   #--------------------------------------------------------------------------
  370.   # ● 相対移動設定
  371.   #--------------------------------------------------------------------------
  372.   def set_rplace(x, y, z, count = 0, interval = 0)
  373.     if count == 0
  374.       @on_change_place = false
  375.       return
  376.     else
  377.       @strs.each{|i|
  378.         i.tx = i.x + x * count
  379.         i.ty = i.y + y * count
  380.         i.tz = i.z + z * count
  381.         i.spx = x
  382.         i.spy = y
  383.         i.spz = z
  384.       }
  385.       @pcount = 0
  386.       @pinterval = interval
  387.       @on_change_place = true
  388.     end
  389.   end
  390.   
  391.   #--------------------------------------------------------------------------
  392.   # ● 拡大率変更設定
  393.   #---------------------------------------------------------------------------
  394.   def set_zoom(zoom_x = nil, zoom_y = nil, count = 0, interval = 0)
  395.     if count == 0
  396.       @strs.each{|i|
  397.         i.zoom_x = zoom_x.nil? ? i.mzoom_x : zoom_x
  398.         i.zoom_y = zoom_y.nil? ? i.mzoom_y : zoom_y
  399.       }
  400.       @on_change_zoom = false
  401.     else
  402.       @strs.each{|i|
  403.         i.tzoom_x = zoom_x.nil? ? i.mzoom_x : zoom_x
  404.         i.tzoom_y = zoom_y.nil? ? i.mzoom_x : zoom_y
  405.         i.spzoom_x = (i.tzoom_x - i.zoom_x) / (count * 1.0)
  406.         i.spzoom_y = (i.tzoom_y - i.zoom_y) / (count * 1.0)
  407.       }
  408.       @zcount = 0
  409.       @zinterval = interval
  410.       @on_change_zoom = true
  411.     end
  412.   end
  413.   
  414.   #--------------------------------------------------------------------------
  415.   # ● 色変更設定
  416.   #--------------------------------------------------------------------------
  417.   def set_color(color = nil, count = 0, interval = 0)
  418.     if count == 0
  419.       @strs.each{|i|i.color = color.nil? ? i.mcolor : color}
  420.       @on_change_color = false
  421.     else
  422.       @strs.each{|i|
  423.         i.tcolor = color.nil? ? i.mcolor : color
  424.         i.spred = (i.tcolor.red - i.color.red) / (count * 1.0)
  425.         i.spgreen = (i.tcolor.green - i.color.green) / (count * 1.0)
  426.         i.spblue = (i.tcolor.blue - i.color.blue) / (count * 1.0)
  427.         i.spalpha = (i.tcolor.alpha - i.color.alpha) / (count * 1.0)
  428.       }
  429.       @ccount = 0
  430.       @cinterval = interval
  431.       @on_change_color = true
  432.     end
  433.   end
  434.   
  435.   #--------------------------------------------------------------------------
  436.   # ● 透明度変更設定
  437.   #--------------------------------------------------------------------------
  438.   def set_opacity(opacity = nil, count = 0, interval = 0)
  439.     if count == 0
  440.       @strs.each{|i|i.opacity = opacity.nil? ? i.mopacity : opacity}
  441.       @on_change_opacity = false
  442.     else
  443.       @strs.each{|i|
  444.         i.topacity = opacity.nil? ? i.mopacity : opacity
  445.         i.spopacity = (i.topacity - i.opacity) / (count * 1.0)
  446.       }
  447.       @ocount = 0
  448.       @ointerval = interval
  449.       @on_change_opacity = true
  450.     end
  451.   end
  452.   
  453.   #--------------------------------------------------------------------------
  454.   # ● フラッシュ設定
  455.   #--------------------------------------------------------------------------
  456.   def set_flash(color, duration, interval = 0)
  457.     if duration == 0
  458.       @strs.each{|i|i.flash(color, duration)}
  459.       @on_flash = false
  460.     else
  461.       @fcolor = color
  462.       @fcount = 0
  463.       @duration = duration
  464.       @finterval = interval
  465.       @on_flash = true
  466.     end
  467.   end
  468.   
  469.   #--------------------------------------------------------------------------
  470.   # ● 移動
  471.   #--------------------------------------------------------------------------
  472.   def change_place
  473.     @pcount += 1
  474.     for i in [email][email protected][/email]
  475.       if (@pinterval * i) / @pcount == 0
  476.         if @strs[i].tx != @strs[i].x
  477.           @strs[i].fx += @strs[i].spx
  478.           @strs[i].x = @strs[i].fx
  479.           @strs[i].x = @strs[i].tx if
  480.             (@strs[i].tx - @strs[i].x).abs<@strs[i].spx.abs
  481.         end
  482.         if @strs[i].ty != @strs[i].y
  483.           @strs[i].fy += @strs[i].spy
  484.           @strs[i].y = @strs[i].fy
  485.           @strs[i].y = @strs[i].ty if
  486.             (@strs[i].ty - @strs[i].y).abs<@strs[i].spy.abs
  487.         end
  488.         if @strs[i].tz != @strs[i].z
  489.           @strs[i].z += @strs[i].spz
  490.           @strs[i].z = @strs[i].tz if
  491.             (@strs[i].tz - @strs[i].z).abs<@strs[i].spz.abs
  492.         end
  493.       end
  494.     end
  495.     @x = @strs[0].x
  496.     @y = @strs[0].y
  497.     @z = @strs[0].z

  498.     if @strs[-1].x == @strs[-1].tx && @strs[-1].y == @strs[-1].ty &&
  499.         @strs[-1].z == @strs[-1].tz
  500.       @pcount = 0
  501.       @on_change_place = false
  502.     else
  503.       @on_change = true
  504.     end
  505.   end
  506.   
  507.   #--------------------------------------------------------------------------
  508.   # ● 拡大率変更
  509.   #--------------------------------------------------------------------------
  510.   def change_zoom
  511.     @zcount += 1
  512.     for i in [email][email protected][/email]
  513.       if (@zinterval * i) / @zcount == 0
  514.         if @strs[i].tzoom_x != @strs[i].zoom_x
  515.           @strs[i].zoom_x += @strs[i].spzoom_x
  516.           @strs[i].zoom_x = @strs[i].tzoom_x if
  517.           (@strs[i].tzoom_x-@strs[i].zoom_x).abs<@strs[i].spzoom_x.abs
  518.         end
  519.         if @strs[i].tzoom_y != @strs[i].zoom_y
  520.           @strs[i].zoom_y += @strs[i].spzoom_y
  521.           @strs[i].zoom_y = @strs[i].tzoom_y if
  522.           (@strs[i].tzoom_y-@strs[i].zoom_y).abs<@strs[i].spzoom_y.abs
  523.         end
  524.       end
  525.     end
  526.     @zoom_x = @strs[0].zoom_x
  527.     @zoom_y = @strs[0].zoom_y

  528.     if @strs[-1].zoom_x == @strs[-1].tzoom_x &&
  529.         @strs[-1].zoom_y == @strs[-1].tzoom_y
  530.       @zcount = 0
  531.       @on_change_zoom = false
  532.     else
  533.       @on_change = true
  534.     end
  535.   end
  536.   
  537.   #--------------------------------------------------------------------------
  538.   # ● 色変更
  539.   #--------------------------------------------------------------------------
  540.   def change_color
  541.     @ccount += 1
  542.     for i in [email][email protected][/email]
  543.       if (@cinterval * i) / @ccount == 0
  544.         if @strs[i].tcolor.red != @strs[i].color.red
  545.           @strs[i].color.red += @strs[i].spred
  546.           @strs[i].color.red = @strs[i].tcolor.red if
  547.           (@strs[i].tcolor.red-@strs[i].color.red).abs<@strs[i].spred.abs
  548.         end
  549.         if @strs[i].tcolor.green != @strs[i].color.green
  550.           @strs[i].color.green += @strs[i].spgreen
  551.           @strs[i].color.green = @strs[i].tcolor.green if
  552.           (@strs[i].tcolor.green-@strs[i].color.green).abs<@strs[i].spgreen.abs
  553.         end
  554.         if @strs[i].tcolor.blue != @strs[i].color.blue
  555.           @strs[i].color.blue += @strs[i].spblue
  556.           @strs[i].color.blue = @strs[i].tcolor.blue if
  557.           (@strs[i].tcolor.blue-@strs[i].color.blue).abs<@strs[i].spblue.abs
  558.         end
  559.         if @strs[i].tcolor.alpha != @strs[i].color.alpha
  560.           @strs[i].color.alpha += @strs[i].spalpha
  561.           @strs[i].color.alpha = @strs[i].tcolor.alpha if
  562.           (@strs[i].tcolor.alpha-@strs[i].color.alpha).abs<@strs[i].spalpha.abs
  563.         end
  564.       end
  565.     end
  566.     @color = @strs[0].color

  567.     if @strs[-1].color == @strs[-1].tcolor
  568.       @ccount = 0
  569.       @on_change_color = false
  570.     else
  571.       @on_change = true
  572.     end
  573.   end
  574.   
  575.   #--------------------------------------------------------------------------
  576.   # ● 透明度変更
  577.   #--------------------------------------------------------------------------
  578.   def change_opacity
  579.     @ocount += 1
  580.     for i in [email][email protected][/email]
  581.       if (@ointerval * i) / @ocount == 0
  582.         if @strs[i].topacity != @strs[i].opacity
  583.           @strs[i].opacity += @strs[i].spopacity
  584.           @strs[i].opacity = @strs[i].topacity if
  585.           (@strs[i].topacity-@strs[i].opacity).abs<@strs[i].spopacity.abs
  586.         end
  587.       end
  588.     end
  589.     @opacity = @strs[0].opacity

  590.     if @strs[-1].opacity == @strs[-1].topacity
  591.       @ocount = 0
  592.       @on_change_opacity = false
  593.     else
  594.       @on_change = true
  595.     end
  596.   end
  597.   
  598.   #--------------------------------------------------------------------------
  599.   # ● フラッシュ進行
  600.   #--------------------------------------------------------------------------
  601.   def change_flash
  602.     for i in [email][email protected][/email]
  603.       if (@finterval * i) == @fcount
  604.         @strs[i].flash(@fcolor, @duration)
  605.       end
  606.       @strs[i].update()
  607.     end

  608.     if (@strs.size - 1) * @finterval + @duration == @fcount
  609.       @fcount = 0
  610.       @on_flash = false
  611.     else
  612.       @on_change = true
  613.     end
  614.     @fcount += 1
  615.   end
  616.   
  617.   #--------------------------------------------------------------------------
  618.   # ● 位置記憶
  619.   #--------------------------------------------------------------------------
  620.   def memory_place
  621.     @strs.each{|i|
  622.       i.mx = i.x
  623.       i.my = i.y
  624.       i.mz = i.z
  625.       i.fx = i.x
  626.       i.fy = i.y
  627.     }
  628.   end
  629.   
  630.   #--------------------------------------------------------------------------
  631.   # ● 拡大率記憶
  632.   #--------------------------------------------------------------------------
  633.   def memory_zoom
  634.     @strs.each{|i|
  635.       i.mzoom_x = i.zoom_x
  636.       i.mzoom_y = i.zoom_y
  637.     }
  638.   end
  639.   
  640.   #--------------------------------------------------------------------------
  641.   # ● 色記憶
  642.   #--------------------------------------------------------------------------
  643.   def memory_color
  644.     @strs.each{|i|i.mcolor = i.color.clone}
  645.   end
  646.   
  647.   #--------------------------------------------------------------------------
  648.   # ● 透明度記憶
  649.   #--------------------------------------------------------------------------
  650.   def memory_opacity
  651.     @strs.each{|i|i.mopacity = i.opacity}
  652.   end
  653.   
  654.   #--------------------------------------------------------------------------
  655.   # ● 全部記憶
  656.   #--------------------------------------------------------------------------
  657.   def memory_all
  658.     @strs.each{|i|
  659.       i.mx = i.x
  660.       i.my = i.y
  661.       i.mz = i.z
  662.       i.fx = i.x
  663.       i.fy = i.y
  664.       i.mzoom_x = i.zoom_x
  665.       i.mzoom_y = i.zoom_y
  666.       i.mcolor = i.color.clone
  667.       i.mopacity = i.opacity
  668.     }
  669.   end
  670.   
  671.   #--------------------------------------------------------------------------
  672.   # ● 破棄
  673.   #--------------------------------------------------------------------------
  674.   def dispose
  675.     @strs.each{|i|i.dispose}
  676.     @strs.clear
  677.     @value = nil
  678.   end
  679. end

  680. #==============================================================================
  681. # ■ Scoreview
  682. #------------------------------------------------------------------------------
  683. #  数字表示クラス(1桁の数字画像を取り替えることによる書き換え)
  684. #==============================================================================

  685. class Scoreview < Textview
  686.   #--------------------------------------------------------------------------
  687.   # ● オブジェクト初期化
  688.   #--------------------------------------------------------------------------
  689.   def initialize(x,y,z, value, pos = 0, size = 22, color = nil)
  690.     @numbers = CacheString::number(size) #数字用ビットマップセット
  691.     super
  692.   end
  693.   
  694.   #--------------------------------------------------------------------------
  695.   # ● 数値画像作成
  696.   #--------------------------------------------------------------------------
  697.   def make_sprite
  698.     tvalue = @value
  699.     digit = 0
  700.     check = false
  701.     while tvalue >= 0
  702.       digit1st = tvalue % 10
  703.       if @strs[digit] == nil        
  704.         @strs[digit] = Sprite_textview.new()
  705.         @strs[digit].color = @color
  706.         @strs[digit].mx = @x
  707.         @strs[digit].my = @y
  708.         @strs[digit].mz = @z
  709.         @strs[digit].mzoom_x = @zoom_x
  710.         @strs[digit].mzoom_y = @zoom_y
  711.         @strs[digit].mcolor = @color
  712.         @strs[digit].mopacity = @opacity
  713.         check = true
  714.       end
  715.       @strs[digit].bitmap = @numbers[digit1st]
  716.       tvalue /= 10
  717.       digit += 1
  718.       if tvalue == 0
  719.         while @strs[digit] != nil
  720.           @strs[digit].bitmap = @numbers[10]
  721.           digit += 1
  722.         end
  723.         break
  724.       end
  725.     end
  726.     if check
  727.       set_pos()
  728.       refresh()
  729.     end
  730.   end
  731.   
  732.   #--------------------------------------------------------------------------
  733.   # ● 位置調整
  734.   #--------------------------------------------------------------------------
  735.   def set_pos
  736.     dx, dy = 0, 0
  737.     #縦書き
  738.     if @vertical
  739.       #原点x操作
  740.       case @pos % 3
  741.       when 1
  742.         dy = @strs.size * @size / 2
  743.       when 2
  744.         dy = @strs.size * @size
  745.       end
  746.       for i in [email][email protected][/email]
  747.         @strs[i].oy = -(@strs.size - 1 - i) * @size + dy
  748.       end
  749.       #原点y操作
  750.       case @pos / 3
  751.       when 1
  752.         dx = @size / 2
  753.       when 2
  754.         dx = @size
  755.       end
  756.       @strs.each{|i|i.ox = dx}
  757.     #横書き
  758.     else
  759.       #原点x操作
  760.       case @pos % 3
  761.       when 1
  762.         dx = @strs.size * @size / 4
  763.       when 2
  764.         dx = @strs.size * @size / 2
  765.       end
  766.       for i in [email][email protected][/email]
  767.         @strs[i].ox = -(@strs.size - 1 - i) * @size / 2 + dx
  768.       end
  769.       #原点y操作
  770.       case @pos / 3
  771.       when 1
  772.         dy = @size / 2
  773.       when 2
  774.         dy = @size
  775.       end
  776.       @strs.each{|i|i.oy = dy}
  777.     end
  778.   end
  779. end

  780. #==============================================================================
  781. # ■ Sprite_textview
  782. #------------------------------------------------------------------------------
  783. #  Textview用のSpriteクラス
  784. #==============================================================================
  785. class Sprite_textview < Sprite
  786.   attr_accessor :fx
  787.   attr_accessor :fy
  788.   attr_accessor :mx
  789.   attr_accessor :my
  790.   attr_accessor :mz
  791.   attr_accessor :mzoom_x
  792.   attr_accessor :mzoom_y
  793.   attr_accessor :mcolor
  794.   attr_accessor :mopacity
  795.   attr_accessor :tx
  796.   attr_accessor :ty
  797.   attr_accessor :tz
  798.   attr_accessor :tzoom_x
  799.   attr_accessor :tzoom_y
  800.   attr_accessor :tcolor
  801.   attr_accessor :topacity
  802.   attr_accessor :spx
  803.   attr_accessor :spy
  804.   attr_accessor :spz
  805.   attr_accessor :spzoom_x
  806.   attr_accessor :spzoom_y
  807.   attr_accessor :spred
  808.   attr_accessor :spgreen
  809.   attr_accessor :spblue
  810.   attr_accessor :spalpha
  811.   attr_accessor :spopacity
  812. end

  813. #==============================================================================
  814. # ■ CacheString
  815. #------------------------------------------------------------------------------
  816. #  文字列画像をキャッシュするモジュール
  817. #==============================================================================
  818. module CacheString
  819.   @cache = Hash.new                   #各サイズBitmapを保存するためのハッシュ
  820.   
  821.   #--------------------------------------------------------------------------
  822.   # ● 個別数字画像の配列のキャッシュ
  823.   #--------------------------------------------------------------------------
  824.   def self.number(size = 22)
  825.     unless @cache.include?(size*1000)        #ハッシュ内にキーが存在しなければ
  826.       array = Array.new(10){|i|  #10個の配列を作成
  827.         tmp = Bitmap.new(size/2, size)       #数字1桁分のビットマップを作成
  828.         tmp.font.size = size                 #フォントサイズ指定
  829.         tmp.draw_text(0, 0, size/2, size, "#{i}")#1桁の数字描画
  830.         tmp                                  #配列に返す
  831.       }
  832.       array.push Bitmap.new(size/2, size)
  833.       @cache[size*1000] = array
  834.     end
  835.     @cache[size*1000]                        #ビットマップ配列を返す
  836.   end
  837.   
  838.   @onedot = Bitmap.new(1, 1)
  839.   #--------------------------------------------------------------------------
  840.   # ● 個別画像の配列のキャッシュ
  841.   #--------------------------------------------------------------------------
  842.   def self.string(chr, size = 22)
  843.     key = chr + "#{size}"              #文字列とサイズでキーを作成
  844.     unless @cache.include?(key)        #ハッシュ内にキーが存在しなければ
  845.       tmp = @onedot                    #1ドットビットマップ
  846.       tmp.font.size = size             #フォントサイズ設定
  847.       text_size = tmp.text_size(chr)   #テクストサイズ取得
  848.       width = text_size.width          #幅
  849.       height = text_size.height        #高さ
  850.       tmp = Bitmap.new(width, height)  #取得したサイズのビットマップ生成
  851.       tmp.font.size = size             #フォントサイズ再設定
  852.       tmp.draw_text(0, 0, width, height, chr)#描画
  853.       @cache[key] = tmp                #キャッシュへ
  854.     end
  855.     @cache[key]                        #ビットマップを返す
  856.   end
  857. end
复制代码

text1.gif (2.63 KB, 下载次数: 28)

text1.gif

text2.gif (2.76 KB, 下载次数: 25)

text2.gif

text4.gif (2.23 KB, 下载次数: 26)

text4.gif

卡农.jpg (6.83 KB, 下载次数: 28)

卡农.jpg
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
75
在线时间
12 小时
注册时间
2008-8-1
帖子
122
4
发表于 2009-12-5 09:36:18 | 只看该作者
你也要告诉人家怎么用啊
踏浪
回复

使用道具 举报

Lv1.梦旅人

℃ake

梦石
0
星屑
50
在线时间
8 小时
注册时间
2009-6-6
帖子
787
5
发表于 2009-12-5 11:09:51 | 只看该作者
本帖最后由 奶油Da蛋糕 于 2009-12-5 11:11 编辑

楼主要的应该是文字的渐变效果吧?而不是你这样。
是这个吗?

我只把window_message
的144行改成了这样。
  1.         # 描绘文字
  2.         for i in 0 .. 32
  3.         a = 32 - i
  4.         self.contents.font.color = Color.new(12+a*6, 128+a*3, 255)
  5.         self.contents.draw_text(4 + x, 32 * y, 40, a, c)
  6.         end
复制代码
具体的颜色都可以你自己调整。
不过效率不高。
我爱66RPG,但我讨厌66.
回复

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
6865
在线时间
1666 小时
注册时间
2008-10-29
帖子
6710

贵宾

6
 楼主| 发表于 2009-12-5 11:52:09 | 只看该作者
本帖最后由 后知后觉 于 2009-12-5 13:29 编辑

就是要颜色的渐变.
我自己想的方法描点.但是效率极其低下
然后就想看看当年那个脚本
现在看来蛋糕的方法更高明
谢谢了!
也谢谢 Goldencolor  ,谢谢你们的帮助



看看这样的感觉是诡异还是悬浮感....











你知道得太多了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

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

GMT+8, 2024-12-26 22:50

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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