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

Project1

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

[已经解决] [已解决]为什么bitmap有的地方需要Sprite类来加载,有些地方...

[复制链接]

Lv4.逐梦者

梦石
0
星屑
14111
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

跳转到指定楼层
1
发表于 2019-4-24 22:30:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 miantouchi 于 2019-4-25 15:01 编辑

为什么bitmap有的地方需要Sprite类来加载,有些地方不用?
什么地方用
@sprite = Sprite.new
@sprite.bitmap = RPG::Cache.title($data_system.title_name)

有些时候就用
@bitmap = Bitmap.new("Graphics") 这个格式

F1里面说明:位图的类。所谓位图即表示图像其本身。

为了在画面中显示位图必需要使用精灵(Sprite)等。


那怎么 可以用不带Sprite.new这种格式,这个问题一直困惑着我?

1.png (80.71 KB, 下载次数: 12)

1.png

2.png (61.94 KB, 下载次数: 7)

2.png

3.png (77.17 KB, 下载次数: 3)

3.png

点评

3:Window_BattleResult是Window子类,Window对象用抽象的观点来看就是比较高级的Sprite(注意,仅为讨论方便),它的contents相当于Sprite的bitmap  发表于 2019-4-25 09:50
2:Sprite_Battler是Sprite的子类,自然继承了Sprite所有的方法(包括Sprite#bitmap=)。所以里面的self.bimap=就是Sprite#bitmap=  发表于 2019-4-25 09:48
我直接对你这里三个图回答吧。1:Scene_Title是最普通的将Bitmap托付给一个Sprite对象来显示  发表于 2019-4-25 09:47

Lv5.捕梦者

梦石
10
星屑
39440
在线时间
1914 小时
注册时间
2010-11-14
帖子
3315

R考场第七期纪念奖

2
发表于 2019-4-24 22:46:16 | 只看该作者
https://rpg.blue/thread-476294-1-1.html

摘录:
位图(Bitmap)就像胶卷相机拍照后留下来的胶卷,我们没办法直接看。
而精灵(Sprite)则是一个放映机,当你把胶卷交给它,它就把胶卷投射到屏幕上。
sprite.bitmap就是sprite这台放映机现在放映着的胶卷,它一开始是空的。
当我们把sprite的bitmap设置为goddess_bitmap后,sprite就把变化后实实在在的 “胶卷”投射到屏幕上了。

点评

现在回头来看这个帖子,解释的非常到位。  发表于 2021-4-6 08:52
差不多明白了,Sence_xxx 类里面是不是都必须写@sprite = Sprite.new Sprite_xxxx和Window_xxxx类里面就不用  发表于 2019-4-25 11:00
能详细说说吗?  发表于 2019-4-25 07:41
我的意思是,每一个Bitmap对象一定会绑在Sprite对象上。不需要用到Sprite.new的场合就说明Sprite已经事先生成了  发表于 2019-4-24 23:47
深刻记得bitmap是胶卷,离开了Sprite不可以  发表于 2019-4-24 23:13
用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23963
在线时间
3338 小时
注册时间
2011-7-8
帖子
3925

开拓者

3
发表于 2019-4-25 00:32:51 | 只看该作者
F1里提到,Window类的@contents属性是Bitmap对象,这个Bitmap对象无需被Sprite加载就可以直接显示出来。
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14111
在线时间
2142 小时
注册时间
2019-1-24
帖子
1121

R考场第七期纪念奖

4
 楼主| 发表于 2019-4-25 07:44:23 | 只看该作者
guoxiaomi 发表于 2019-4-25 00:32
F1里提到,Window类的@contents属性是Bitmap对象,这个Bitmap对象无需被Sprite加载就可以直接显示出来。 ...

没有这么写啊。

1.png (87.13 KB, 下载次数: 9)

1.png
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
37794
在线时间
5402 小时
注册时间
2006-11-10
帖子
6546
5
发表于 2019-4-25 10:29:37 | 只看该作者
本帖最后由 灯笼菜刀王 于 2019-4-25 10:34 编辑

第一个bitmap, 它是标准的精灵显示法

第二个bitmap, 注意这个类, 他的爷爷就是sprite (它的老爸在F1里=.=)

第三个bitmap, 它是被窗口contents 显示的, 而window类, 在F1的第一句话是这个: 窗口的类,内部由大量精灵组成

所以, 你提到的这三个确实都是sprite加载的, 毫无疑问

点评

这样最好,就这么办,以前都懵了不知道什么时候用什么样的,太深的理解也不透,会用就好。  发表于 2019-4-25 15:00
要硬记的话, 就记住, 默认状态下RGSS有两种图片显示的方式, 1, 用精灵,加载sprite.bitmap, 2,在窗口的contents里用blt加载bitmap  发表于 2019-4-25 14:25
不一定哦,sprite_battle和sprite_map就不是Sprite的子孙, 它这里一样要按规矩来=v=, 而Window类也可以绑上Sprite, 比如,以前我给你看过的图片光标就是  发表于 2019-4-25 14:17
Sence_xxx 类里面是不是都必须写@sprite = Sprite.new Sprite_xxxx和Window_xxxx类里面就不用 这么记可以吗  发表于 2019-4-25 13:13
明白了!  发表于 2019-4-25 13:12

评分

参与人数 2星屑 +90 +1 收起 理由
RyanBern + 90 认可答案
guoxiaomi + 1 我很赞同

查看全部评分

回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-26 22:43

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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