Project1

标题: 运行游戏后字体变形 [打印本页]

作者: 仙芋    时间: 2010-8-26 18:16
标题: 运行游戏后字体变形
本帖最后由 仙芋 于 2010-8-28 13:58 编辑

为什么运行游戏时
字体变得跟平时不一样?
作者: azdet54639    时间: 2010-8-26 18:49
截图
作者: 仙芋    时间: 2010-8-26 18:59
回复 azdet54639 的帖子
刚用了伤害美化,解决了变形
其实就是跟平时不一样
并不是太大的变形
作者: bbaugle    时间: 2010-8-26 19:00
是什么字?请截图
作者: 仙芋    时间: 2010-8-26 19:07
回复 bbaugle 的帖子


***不要理會顏色和陰影...重点在字型
作者: zhangbanxian    时间: 2010-8-27 07:48
回复


***不要理會顏色和陰影...重点在字型
仙芋 发表于 2010-8-26 19:07

你是指伤害显示的字喵,那是在RPG::Sprite这个内部类定义的,默认为"Arial Black"
,所以如果要改的话,可以找到f1里的定义,把它复制出来再改,另外加粗是肯定的,因为你看下它的定义就知道了。


作者: 仙芋    时间: 2010-8-27 12:38
本帖最后由 仙芋 于 2010-8-27 12:39 编辑

回复 zhangbanxian 的帖子
这是我重新定义,加了新脚本出现的问题
图中上方的文字不是Arial Black, 也不是我设定的字型 (Times New Roman)
65行我设定了 Times New Roman
而是稍为变形的我设定的字型 (Times New Roman) = =
  1. module RPG
  2.   class Sprite < ::Sprite
  3.     @@_animations = []
  4.     @@_reference_count = {}
  5.     def initialize(viewport = nil)
  6.       super(viewport)
  7.       @_whiten_duration = 0
  8.       @_appear_duration = 0
  9.       @_escape_duration = 0
  10.       @_collapse_duration = 0
  11.       @_damage_duration = 0
  12.       @_animation_duration = 0
  13.       @_blink = false
  14.     end
  15.     def dispose
  16.       dispose_damage
  17.       dispose_animation
  18.       dispose_loop_animation
  19.       super
  20.     end
  21.     def whiten
  22.       self.blend_type = 0
  23.       self.color.set(255, 255, 255, 128)
  24.       self.opacity = 255
  25.       @_whiten_duration = 16
  26.       @_appear_duration = 0
  27.       @_escape_duration = 0
  28.       @_collapse_duration = 0
  29.     end
  30.     def appear
  31.       self.blend_type = 0
  32.       self.color.set(0, 0, 0, 0)
  33.       self.opacity = 0
  34.       @_appear_duration = 16
  35.       @_whiten_duration = 0
  36.       @_escape_duration = 0
  37.       @_collapse_duration = 0
  38.     end
  39.     def escape
  40.       self.blend_type = 0
  41.       self.color.set(0, 0, 0, 0)
  42.       self.opacity = 255
  43.       @_escape_duration = 10
  44.       @_whiten_duration = 0
  45.       @_appear_duration = 0
  46.       @_collapse_duration = 0
  47.     end
  48.     def collapse
  49.       self.blend_type = 1
  50.       self.color.set(255, 64, 64, 255)
  51.       self.opacity = 255
  52.       @_collapse_duration = 48
  53.       @_whiten_duration = 0
  54.       @_appear_duration = 0
  55.       @_escape_duration = 0
  56.     end
  57.     def damage(value, critical)
  58.       dispose_damage
  59.       if value.is_a?(Numeric)
  60.         damage_string = value.abs.to_s
  61.       else
  62.         damage_string = value.to_s
  63.       end
  64.       bitmap = Bitmap.new(160, 40)
  65.       bitmap.font.name = "Times New Roman"
  66.       bitmap.font.size = 20
  67.       bitmap.font.color.set(255, 0, 0)

  68.       bitmap.draw_text(+1, 12-1, 160, 41, damage_string, 1)
  69.       if value.is_a?(Numeric) and value < 0
  70.         bitmap.font.color.set(176, 255, 144)
  71.       else
  72.         bitmap.font.color.set(255, 219, 189)
  73.       end
  74.       bitmap.draw_text(0, 12, 160, 36, damage_string, 1)
  75.       if critical
  76.         bitmap.font.size = 20
  77.         bitmap.font.color.set(0, 0, 0)
  78.         bitmap.draw_text(-1, -1, 160, 20, " ", 1)
  79.         bitmap.draw_text(+1, -1, 160, 20, " ", 1)
  80.         bitmap.draw_text(-1, +1, 160, 20, " ", 1)
  81.         bitmap.draw_text(+1, +1, 160, 20, " ", 1)
  82.         bitmap.font.color.set(255, 219, 189)
  83.         bitmap.draw_text(0, 0, 160, 20, " ", 1)
  84.       end
  85.       @_damage_sprite = ::Sprite.new(self.viewport)
  86.       @_damage_sprite.bitmap = bitmap
  87.       @_damage_sprite.ox = 80
  88.       @_damage_sprite.oy = 100
  89.       @_damage_sprite.x = self.x
  90.       @_damage_sprite.y = self.y - self.oy / 2
  91.       @_damage_sprite.z = 3000
  92.       @_damage_duration = 30
  93.     end
  94.     def animation(animation, hit)
  95.       dispose_animation
  96.       @_animation = animation
  97.       return if @_animation == nil
  98.       @_animation_hit = hit
  99.       @_animation_duration = @_animation.frame_max
  100.       animation_name = @_animation.animation_name
  101.       animation_hue = @_animation.animation_hue
  102.       bitmap = RPG::Cache.animation(animation_name, animation_hue)
  103.       if @@_reference_count.include?(bitmap)
  104.         @@_reference_count[bitmap] += 1
  105.       else
  106.         @@_reference_count[bitmap] = 1
  107.       end
  108.       @_animation_sprites = []
  109.       if @_animation.position != 3 or not @@_animations.include?(animation)
  110.         for i in 0..15
  111.           sprite = ::Sprite.new(self.viewport)
  112.           sprite.bitmap = bitmap
  113.           sprite.visible = false
  114.           @_animation_sprites.push(sprite)
  115.         end
  116.         unless @@_animations.include?(animation)
  117.           @@_animations.push(animation)
  118.         end
  119.       end
  120.       update_animation
  121.     end
  122.     def loop_animation(animation)
  123.       return if animation == @_loop_animation
  124.       dispose_loop_animation
  125.       @_loop_animation = animation
  126.       return if @_loop_animation == nil
  127.       @_loop_animation_index = 0
  128.       animation_name = @_loop_animation.animation_name
  129.       animation_hue = @_loop_animation.animation_hue
  130.       bitmap = RPG::Cache.animation(animation_name, animation_hue)
  131.       if @@_reference_count.include?(bitmap)
  132.         @@_reference_count[bitmap] += 1
  133.       else
  134.         @@_reference_count[bitmap] = 1
  135.       end
  136.       @_loop_animation_sprites = []
  137.       for i in 0..15
  138.         sprite = ::Sprite.new(self.viewport)
  139.         sprite.bitmap = bitmap
  140.         sprite.visible = false
  141.         @_loop_animation_sprites.push(sprite)
  142.       end
  143.       update_loop_animation
  144.     end
  145.     def dispose_damage
  146.       if @_damage_sprite != nil
  147.         @_damage_sprite.bitmap.dispose
  148.         @_damage_sprite.dispose
  149.         @_damage_sprite = nil
  150.         @_damage_duration = 0
  151.       end
  152.     end
  153.     def dispose_animation
  154.       if @_animation_sprites != nil
  155.         sprite = @_animation_sprites[0]
  156.         if sprite != nil
  157.           @@_reference_count[sprite.bitmap] -= 1
  158.           if @@_reference_count[sprite.bitmap] == 0
  159.             sprite.bitmap.dispose
  160.           end
  161.         end
  162.         for sprite in @_animation_sprites
  163.           sprite.dispose
  164.         end
  165.         @_animation_sprites = nil
  166.         @_animation = nil
  167.       end
  168.     end
  169.     def dispose_loop_animation
  170.       if @_loop_animation_sprites != nil
  171.         sprite = @_loop_animation_sprites[0]
  172.         if sprite != nil
  173.           @@_reference_count[sprite.bitmap] -= 1
  174.           if @@_reference_count[sprite.bitmap] == 0
  175.             sprite.bitmap.dispose
  176.           end
  177.         end
  178.         for sprite in @_loop_animation_sprites
  179.           sprite.dispose
  180.         end
  181.         @_loop_animation_sprites = nil
  182.         @_loop_animation = nil
  183.       end
  184.     end
  185.     def blink_on
  186.       unless @_blink
  187.         @_blink = true
  188.         @_blink_count = 0
  189.       end
  190.     end
  191.     def blink_off
  192.       if @_blink
  193.         @_blink = false
  194.         self.color.set(0, 0, 0, 0)
  195.       end
  196.     end
  197.     def blink?
  198.       @_blink
  199.     end
  200.     def effect?
  201.       @_whiten_duration > 0 or
  202.       @_appear_duration > 0 or
  203.       @_escape_duration > 0 or
  204.       @_collapse_duration > 0 or
  205.       @_damage_duration > 0 or
  206.       @_animation_duration > 0
  207.     end
  208.     def update
  209.       super
  210.       if @_whiten_duration > 0
  211.         @_whiten_duration -= 1
  212.         self.color.alpha = 128 - (16 - @_whiten_duration) * 10
  213.       end
  214.       if @_appear_duration > 0
  215.         @_appear_duration -= 1
  216.         self.opacity = (16 - @_appear_duration) * 16
  217.       end
  218.       if @_escape_duration > 0
  219.         @_escape_duration -= 1
  220.         self.opacity = 256 - (32 - @_escape_duration) * 10
  221.       end
  222.       if @_collapse_duration > 0
  223.         @_collapse_duration -= 1
  224.         self.opacity = 256 - (48 - @_collapse_duration) * 6
  225.       end
  226.       if @_damage_duration > 0
  227.         @_damage_duration -= 1
  228.         case @_damage_duration
  229.         when 42..47
  230.           @_damage_sprite.y -= 3
  231.         when 32..37
  232.           @_damage_sprite.y -= 2
  233.         when 22..27
  234.           @_damage_sprite.y -= 2
  235.         when 14..21
  236.           @_damage_sprite.y -= 1
  237.         when 10..13
  238.           @_damage_sprite.y -= 1
  239.         end
  240.         @_damage_sprite.opacity = 256 - (12 - @_damage_duration) * 32
  241.         if @_damage_duration == 0
  242.           dispose_damage
  243.         end
  244.       end
  245.       if @_animation != nil and (Graphics.frame_count % 2 == 0)
  246.         @_animation_duration -= 1
  247.         update_animation
  248.       end
  249.       if @_loop_animation != nil and (Graphics.frame_count % 2 == 0)
  250.         update_loop_animation
  251.         @_loop_animation_index += 1
  252.         @_loop_animation_index %= @_loop_animation.frame_max
  253.       end
  254.       if @_blink
  255.         @_blink_count = (@_blink_count + 1) % 32
  256.         if @_blink_count < 16
  257.           alpha = (16 - @_blink_count) * 6
  258.         else
  259.           alpha = (@_blink_count - 16) * 6
  260.         end
  261.         self.color.set(255, 255, 255, alpha)
  262.       end
  263.       @@_animations.clear
  264.     end
  265.     def update_animation
  266.       if @_animation_duration > 0
  267.         frame_index = @_animation.frame_max - @_animation_duration
  268.         cell_data = @_animation.frames[frame_index].cell_data
  269.         position = @_animation.position
  270.         animation_set_sprites(@_animation_sprites, cell_data, position)
  271.         for timing in @_animation.timings
  272.           if timing.frame == frame_index
  273.             animation_process_timing(timing, @_animation_hit)
  274.           end
  275.         end
  276.       else
  277.         dispose_animation
  278.       end
  279.     end
  280.     def update_loop_animation
  281.       frame_index = @_loop_animation_index
  282.       cell_data = @_loop_animation.frames[frame_index].cell_data
  283.       position = @_loop_animation.position
  284.       animation_set_sprites(@_loop_animation_sprites, cell_data, position)
  285.       for timing in @_loop_animation.timings
  286.         if timing.frame == frame_index
  287.           animation_process_timing(timing, true)
  288.         end
  289.       end
  290.     end
  291.     def animation_set_sprites(sprites, cell_data, position)
  292.       for i in 0..15
  293.         sprite = sprites[i]
  294.         pattern = cell_data[i, 0]
  295.         if sprite == nil or pattern == nil or pattern == -1
  296.           sprite.visible = false if sprite != nil
  297.           next
  298.         end
  299.         sprite.visible = true
  300.         sprite.src_rect.set(pattern % 5 * 192, pattern / 5 * 192, 192, 192)
  301.         if position == 3
  302.           if self.viewport != nil
  303.             sprite.x = self.viewport.rect.width / 2
  304.             sprite.y = self.viewport.rect.height - 160
  305.           else
  306.             sprite.x = 320
  307.             sprite.y = 240
  308.           end
  309.         else
  310.           sprite.x = self.x - self.ox + self.src_rect.width / 2
  311.           sprite.y = self.y - self.oy + self.src_rect.height / 2
  312.           sprite.y -= self.src_rect.height / 4 if position == 0
  313.           sprite.y += self.src_rect.height / 4 if position == 2
  314.         end
  315.         sprite.x += cell_data[i, 1]
  316.         sprite.y += cell_data[i, 2]
  317.         sprite.z = 2000
  318.         sprite.ox = 96
  319.         sprite.oy = 96
  320.         sprite.zoom_x = cell_data[i, 3] / 100.0
  321.         sprite.zoom_y = cell_data[i, 3] / 100.0
  322.         sprite.angle = cell_data[i, 4]
  323.         sprite.mirror = (cell_data[i, 5] == 1)
  324.         sprite.opacity = cell_data[i, 6] * self.opacity / 255.0
  325.         sprite.blend_type = cell_data[i, 7]
  326.       end
  327.     end
  328.     def animation_process_timing(timing, hit)
  329.       if (timing.condition == 0) or
  330.          (timing.condition == 1 and hit == true) or
  331.          (timing.condition == 2 and hit == false)
  332.         if timing.se.name != ""
  333.           se = timing.se
  334.           Audio.se_play("Audio/SE/" + se.name, se.volume, se.pitch)
  335.         end
  336.         case timing.flash_scope
  337.         when 1
  338.           self.flash(timing.flash_color, timing.flash_duration * 2)
  339.         when 2
  340.           if self.viewport != nil
  341.             self.viewport.flash(timing.flash_color, timing.flash_duration * 2)
  342.           end
  343.         when 3
  344.           self.flash(nil, timing.flash_duration * 2)
  345.         end
  346.       end
  347.     end
  348.     def x=(x)
  349.       sx = x - self.x
  350.       if sx != 0
  351.         if @_animation_sprites != nil
  352.           for i in 0..15
  353.             @_animation_sprites[i].x += sx
  354.           end
  355.         end
  356.         if @_loop_animation_sprites != nil
  357.           for i in 0..15
  358.             @_loop_animation_sprites[i].x += sx
  359.           end
  360.         end
  361.       end
  362.       super
  363.     end
  364.     def y=(y)
  365.       sy = y - self.y
  366.       if sy != 0
  367.         if @_animation_sprites != nil
  368.           for i in 0..15
  369.             @_animation_sprites[i].y += sy
  370.           end
  371.         end
  372.         if @_loop_animation_sprites != nil
  373.           for i in 0..15
  374.             @_loop_animation_sprites[i].y += sy
  375.           end
  376.         end
  377.       end
  378.       super
  379.     end
  380.   end
  381. end
复制代码





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