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

Project1

 找回密码
 注册会员
搜索

bitmap.draw_text 不知何故绘制出来的文字会显示多个

查看数: 1630 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2015-2-14 20:27

正文摘要:

本帖最后由 gaofei677 于 2015-2-14 20:29 编辑 在每张bitmap上draw_text绘制文字,按照我的想法应该是每张图片只显示自己应该显示的文字,但是实际写出来以后,发现每张图片不仅显示了自己的文字,还显示了其他 ...

回复

tseyik 发表于 2015-2-14 20:58:02
本帖最后由 tseyik 于 2015-2-14 20:59 编辑

我建議你用CACAO的<拡張> ピクチャの操作脚本
http://cacaosoft.web.fc2.com/tkool/script/rgss3/picex.html
功能
圖片群組化:可指定多張圖片成為一個群組
文字設定:可設定多種不同字形並同時使用
顯示窗口
設置窗口
窗口的內容滾動
顯示圖像畫面
顯示文字圖片仍
控制字符
照片的位置變化
畫面的縮放
圖像的反轉
圖像的角度變化
圖像的透明度改變
圖像的移動

点评

所以,和楼主的问题无关啊= =  发表于 2015-2-14 21:05
這脚本就是Bitmap的使用方法拡張,更便利的處理圖片和文字  发表于 2015-2-14 21:02
这无关吧?  发表于 2015-2-14 20:58
gaofei677 发表于 2015-2-14 20:34:14
喵呜喵5 发表于 2015-2-14 20:32
好歹告诉别人这两个方法是什么类的方法在何时会调用吧…………

完整的是这样的
  1. class Game_Picture
  2.   def name=(str)
  3.     @name = str
  4.   end
  5. end

  6. class Sprite_Picture < Sprite
  7.   #--------------------------------------------------------------------------
  8.   # ● 更新画面
  9.   #--------------------------------------------------------------------------
  10.   alias old_update update
  11.   def update
  12.     old_update
  13.     picture_event_working
  14.     updata_info
  15.   end
  16.   #--------------------------------------------------------------------------
  17.   # ● 显示图片信息(行程安排用)
  18.   #--------------------------------------------------------------------------
  19.   def updata_info#(id="")#, game_time="", save_time=@save_time, chaptter_name="")
  20.     return if (@picture.name[/行程底板/].nil?) or (@updata_info_switch == true)
  21.     self.bitmap.font.name = ["黑体"]
  22.     self.bitmap.font.outline = false
  23.     self.bitmap.font.size = 16
  24.     self.bitmap.font.color.set(129,81,28)
  25.     rect = Rect.new(60, -45, 130, 130)
  26.     self.bitmap.draw_text(rect, get_schedule_info)
  27.     x = @picture.x
  28.     y = @picture.y
  29.     viewport = self.viewport
  30.     @sprite_picture_icon = Sprite_Picture_icon.new(viewport, x, y, get_schedule_info)
  31.     @updata_info_switch = true
  32.   end
  33.   #--------------------------------------------------------------------------
  34.   # ● 获取行程图标信息
  35.   #--------------------------------------------------------------------------
  36.   def get_schedule_info
  37.     num = $schedule.size
  38.     for i in 0..(num-1)
  39.       if self.y == (200+i*40)
  40.         return $schedule[i]
  41.       end
  42.     end
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● 判定光标是否在图片内
  46.   #--------------------------------------------------------------------------
  47.   def mouse_in_pic?(sprite)
  48.     return if @name_string_sprite != nil
  49.     lx = self.x - self.ox
  50.     ty = self.y - self.oy
  51.     return if @picture.name == "" or @picture.name[/pe/].nil?
  52.     return unless sprite.bitmap.get_pixel(Mouse.x-lx,Mouse.y-ty).alpha != 0
  53.     return unless (Mouse.x >= sprite.x) and (Mouse.x <= (sprite.x+sprite.width))
  54.     return unless (Mouse.y >= sprite.y) and (Mouse.y <= (sprite.y+sprite.height))
  55.     return true
  56.   end
  57.   #--------------------------------------------------------------------------
  58.   # ● 图片事件开始运作
  59.   #--------------------------------------------------------------------------
  60.   def picture_event_working
  61.     return if @name_string_sprite != nil
  62.     @original_picture_name = @picture.name.clone
  63.     if mouse_in_pic?(self)
  64.       @picture.name = (@original_picture_name + "_2") if @changed_pic != true
  65.       @changed_pic = true
  66.       kick_command_event
  67.     else
  68.       return unless @picture.name.include?('_2')
  69.       @picture.name[-2,2]="" if @changed_pic == true
  70.       @changed_pic = false
  71.     end
  72.   end
  73.   #--------------------------------------------------------------------------
  74.   # ● 点击触发公共事件
  75.   #--------------------------------------------------------------------------
  76.   def kick_command_event
  77.     return if @name_string_sprite != nil
  78.     if Input.trigger?(:C)
  79.       @picture.name.gsub(/^pe(\d{1,3})/i){ $game_temp.reserve_common_event($1.to_i) }
  80.     end
  81.   end
  82. end
复制代码

点评

你还别说,我还真没注意他是继承的class Sprite,我以为他是自己写的window,然后自己拼界面的……  发表于 2015-2-15 00:14
clear连图片也会清理掉的,精灵类也没有refresh…………归根结底还是脚本本身太怪异了反而无从下手……  发表于 2015-2-15 00:10
在显示图片信息里,先clear,再绘制,然后加个refresh,试试  发表于 2015-2-15 00:01
4.在图片上显示相关文字  发表于 2015-2-14 23:32
不是呀,这是修改了默认的图片显示功能 ,1.鼠标放图片上,图片会变 2.点击图片可以触发公共事件 3.在某些特殊的图片上显示第二个图片  发表于 2015-2-14 23:32
喵呜喵5 发表于 2015-2-14 20:32:21
好歹告诉别人这两个方法是什么类的方法在何时会调用吧…………
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-11-5 16:33

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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