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

Project1

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

无聊的教程贴--图片显示

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
跳转到指定楼层
1
发表于 2007-4-23 01:18:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
这几天论坛上热衷于发教程,我也来凑几句,说说精灵.
以前一直不太明白:"为什么把显示图片写成显示精灵."其实,精灵说的就是象素点,图片是由点组成的,也就是通常说的描点.

一,如何在地图上显示文字
   地图上显示文字的方法,一般分为3步:"写窗口"----"生成窗口到scene_map"---"写刷新条件".

比如:我要在地图上显示自己的名字,先写一个窗口

class Window_sizz < Window_Base
def initialize
  super(0, 0, 160, 96)
  self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
self.contents.draw_text(4, 0, 120, 32, "sizz")
end
end
在scene_map的50行loop do下面写后生成窗口@sizz_window=Window_sizz.new
“在释放活动块”下面写@sizz_window. dispose
好!进入游戏,我们就可以看到一个地方,出现了“sizz”这个字符串。
但是“sizz”这个字符旁边有个讨厌的筐子,所以请将背景颜色变成0


二,控制字符串的出现条件
一个字符始终出现在屏幕上,是不是有点不太对劲呢?所以,我们要做控制,还是2个步骤:设置窗口的可见→刷新画面
将窗口设置为不可见
self.visible = false
说明窗口可见的条件
If xxxxx
self.visible =true
end
完整就是
class Window_sizz < Window_Base
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false#设置窗口看不见
self.back_opacity = 0#背景颜色为0
if $game_variables[1]==1 #这个写法是我个人的习惯
    refresh
end
    def refresh
    self.contents.clear
self.contents.draw_text(4, 0, 120, 32, "sizz")
end
end
在地图上设置一个让变数1=1的事件,运行游戏
什么,什么也没有发生?
这是因为没有进行刷新,其实我也搞明白如何刷新,但是有个很另类的方式-----写个空的场景,条件满足后,把那个空的场景执行一次。
class Scene_gd
def main
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
end
def update
$scene = Scene_Map.new
end
end
地图事件上的条件"变数1=1"后写$scene=Scene_gd.new
意思就是当条件满足的时候,执行一次空的场景,然后自动切换过来
就可以解决在地图上显示文字了,至于你如何获得这个字符,就不是我今天想表达的。

二,图片的显示
   
请删除程序编辑器中的所有东西,我们只针对图片显示来讲解。
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
loop do
  Graphics.update
end

执行以上程序,你就会发现有个小恶魔显示在屏幕的左上角。对,这就是帮助文件中图片显示的讲解。然后修改脚本,变成这个样子
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
rect=Rect.new(0,0,100,120)
color=Color.new(255,255,0,255)
devil.bitmap.fill_rect(rect,color)
loop do
Graphics.update
End
可以看到,黄色的布把恶魔给遮蔽了,这其实并不是遮蔽而是修改---把某些精灵的颜色给修改了。如果把以上程序中,颜色参数的最后一个修改成0,会有很好玩的事情发生。

再看看以下的程序

devil1 = Sprite.new
devil1.bitmap = Bitmap.new(640,480)
rect1=Rect.new(40,40,32,40)
color1=Color.new(255,255,0,255)
devil1.bitmap.fill_rect(rect1,color1)
   
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
p devil.z
loop do
  Graphics.update
End
是不是小恶魔下面有个黄色的块?这就是真正的遮蔽了,因为我用了两个Sprite
首先执行了一个显示黄色图块的程序,然后执行了显示小恶魔的程序,所以就是看到的样子。请注意 :两个以上的Sprite,如不特别说明层次,层次按显示顺序决定(或说按书写顺序)要想修改这个顺序,可以特别说明图片层次,也就是Sprite的z属性,比如
以上程序中,加上devil1.z=1,黄色就在恶魔上面了。
出个题目
综合以上程序,编写一个程序,达到以下的效果


值得注意的是,以上的程序看起来可以显示图片,但是在游戏中就不行了,因为很卡。至于如何不卡,以及控制图片的出现,那就是最开始说的显示文字的方法了。

有个范例如下
http://rpg.blue/upload_program/files/地图上显示文字.zip
(右边的角色执行的是个错误脚本,而且范例不是显示文字,而是格子)
-------------------------------------------------
总觉得这教程写得完全不够格


头像被屏蔽

Lv1.梦旅人 (禁止发言)

苹果梨

梦石
0
星屑
43
在线时间
6 小时
注册时间
2007-2-14
帖子
720
5
发表于 2007-4-24 07:15:46 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
4
 楼主| 发表于 2007-4-24 02:52:35 | 只看该作者
用窗口,是为了配合scene_map的。一般是用alias把两个类结合起来,这个在很多地图显示的脚本中都有。
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-2-12
帖子
43
3
发表于 2007-4-23 06:25:25 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
20 小时
注册时间
2005-10-24
帖子
1571
2
 楼主| 发表于 2007-4-23 01:18:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
这几天论坛上热衷于发教程,我也来凑几句,说说精灵.
以前一直不太明白:"为什么把显示图片写成显示精灵."其实,精灵说的就是象素点,图片是由点组成的,也就是通常说的描点.

一,如何在地图上显示文字
   地图上显示文字的方法,一般分为3步:"写窗口"----"生成窗口到scene_map"---"写刷新条件".

比如:我要在地图上显示自己的名字,先写一个窗口

class Window_sizz < Window_Base
def initialize
  super(0, 0, 160, 96)
  self.contents = Bitmap.new(width - 32, height - 32)
    refresh
  end
  def refresh
    self.contents.clear
self.contents.draw_text(4, 0, 120, 32, "sizz")
end
end
在scene_map的50行loop do下面写后生成窗口@sizz_window=Window_sizz.new
“在释放活动块”下面写@sizz_window. dispose
好!进入游戏,我们就可以看到一个地方,出现了“sizz”这个字符串。
但是“sizz”这个字符旁边有个讨厌的筐子,所以请将背景颜色变成0


二,控制字符串的出现条件
一个字符始终出现在屏幕上,是不是有点不太对劲呢?所以,我们要做控制,还是2个步骤:设置窗口的可见→刷新画面
将窗口设置为不可见
self.visible = false
说明窗口可见的条件
If xxxxx
self.visible =true
end
完整就是
class Window_sizz < Window_Base
def initialize
super(0, 0, 160, 96)
self.contents = Bitmap.new(width - 32, height - 32)
self.visible = false#设置窗口看不见
self.back_opacity = 0#背景颜色为0
if $game_variables[1]==1 #这个写法是我个人的习惯
    refresh
end
    def refresh
    self.contents.clear
self.contents.draw_text(4, 0, 120, 32, "sizz")
end
end
在地图上设置一个让变数1=1的事件,运行游戏
什么,什么也没有发生?
这是因为没有进行刷新,其实我也搞明白如何刷新,但是有个很另类的方式-----写个空的场景,条件满足后,把那个空的场景执行一次。
class Scene_gd
def main
loop do
Graphics.update
Input.update
update
if $scene != self
break
end
end
Graphics.freeze
end
def update
$scene = Scene_Map.new
end
end
地图事件上的条件"变数1=1"后写$scene=Scene_gd.new
意思就是当条件满足的时候,执行一次空的场景,然后自动切换过来
就可以解决在地图上显示文字了,至于你如何获得这个字符,就不是我今天想表达的。

二,图片的显示
   
请删除程序编辑器中的所有东西,我们只针对图片显示来讲解。
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
loop do
  Graphics.update
end

执行以上程序,你就会发现有个小恶魔显示在屏幕的左上角。对,这就是帮助文件中图片显示的讲解。然后修改脚本,变成这个样子
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
rect=Rect.new(0,0,100,120)
color=Color.new(255,255,0,255)
devil.bitmap.fill_rect(rect,color)
loop do
Graphics.update
End
可以看到,黄色的布把恶魔给遮蔽了,这其实并不是遮蔽而是修改---把某些精灵的颜色给修改了。如果把以上程序中,颜色参数的最后一个修改成0,会有很好玩的事情发生。

再看看以下的程序

devil1 = Sprite.new
devil1.bitmap = Bitmap.new(640,480)
rect1=Rect.new(40,40,32,40)
color1=Color.new(255,255,0,255)
devil1.bitmap.fill_rect(rect1,color1)
   
devil = Sprite.new
devil.bitmap = Bitmap.new("Graphics/Battlers/075-Devil01")
p devil.z
loop do
  Graphics.update
End
是不是小恶魔下面有个黄色的块?这就是真正的遮蔽了,因为我用了两个Sprite
首先执行了一个显示黄色图块的程序,然后执行了显示小恶魔的程序,所以就是看到的样子。请注意 :两个以上的Sprite,如不特别说明层次,层次按显示顺序决定(或说按书写顺序)要想修改这个顺序,可以特别说明图片层次,也就是Sprite的z属性,比如
以上程序中,加上devil1.z=1,黄色就在恶魔上面了。
出个题目
综合以上程序,编写一个程序,达到以下的效果


值得注意的是,以上的程序看起来可以显示图片,但是在游戏中就不行了,因为很卡。至于如何不卡,以及控制图片的出现,那就是最开始说的显示文字的方法了。

有个范例如下
http://rpg.blue/upload_program/files/地图上显示文字.zip
(右边的角色执行的是个错误脚本,而且范例不是显示文字,而是格子)
-------------------------------------------------
总觉得这教程写得完全不够格


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

本版积分规则

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

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

GMT+8, 2024-11-24 00:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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