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

Project1

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

[已经过期] bitmap.draw_text 不知何故绘制出来的文字会显示多个

[复制链接]

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
跳转到指定楼层
1
发表于 2015-2-14 20:27:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 gaofei677 于 2015-2-14 20:29 编辑

在每张bitmap上draw_text绘制文字,按照我的想法应该是每张图片只显示自己应该显示的文字,但是实际写出来以后,发现每张图片不仅显示了自己的文字,还显示了其他图片的文字,求大家帮帮忙,看看我哪儿写错了

  1.   #--------------------------------------------------------------------------
  2.   # ● 显示图片信息(行程安排用)
  3.   #--------------------------------------------------------------------------
  4.   def updata_info
  5.     return if (@picture.name[/行程底板/].nil?) or (@updata_info_switch == true)
  6.     self.bitmap.font.name = ["黑体"]
  7.     self.bitmap.font.outline = false
  8.     self.bitmap.font.size = 16
  9.     self.bitmap.font.color.set(129,81,28)
  10.     rect = Rect.new(60, -45, 130, 130)
  11.     self.bitmap.draw_text(rect, get_schedule_info)
  12.     x = @picture.x
  13.     y = @picture.y
  14.     viewport = self.viewport
  15.     @sprite_picture_icon = Sprite_Picture_icon.new(viewport, x, y, get_schedule_info)
  16.     @updata_info_switch = true
  17.   end
  18.   #--------------------------------------------------------------------------
  19.   # ● 获取行程图标信息
  20.   #--------------------------------------------------------------------------
  21.   def get_schedule_info
  22.     num = $schedule.size
  23.     for i in 0..(num-1)
  24.       if self.y == (200+i*40)
  25.         return $schedule[i]
  26.       end
  27.     end
  28.   end
复制代码
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html

Lv5.捕梦者 (暗夜天使)

只有笨蛋才会看到

梦石
1
星屑
21589
在线时间
9407 小时
注册时间
2012-6-19
帖子
7117

开拓者短篇九导演组冠军

2
发表于 2015-2-14 20:32:21 | 只看该作者
好歹告诉别人这两个方法是什么类的方法在何时会调用吧…………
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
136
在线时间
1050 小时
注册时间
2006-5-3
帖子
774
3
 楼主| 发表于 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
漏夏同人
《咱的夏天》
下载地址:http://tieba.baidu.com/p/2681607456
人员招募:http://rpg.blue/thread-339747-1-1.html
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
22893
在线时间
8635 小时
注册时间
2011-12-31
帖子
3367
4
发表于 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
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

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

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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