幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 9095|回复: 18

[NS] NS职员卷的做法

[复制链接]

6

主题

26

帖子

1111

积分

⑥精研

积分
1111
发表于 2005-10-24 19:11:36 | 显示全部楼层 |阅读模式
职员卷的做法
游戏的自由职员卷,主要是使用轮流表示背景和sprite的方法,使得Nscripter也能象电影一样从实现从上面滚动到下面或是从右面滚动向左面的职员卷。
请下载下面的图象作为范例使用

*define
game
*start
btndef "image\staff.jpg"
for %0=0 to 1920
blt 140,0,360,480,0,%0,360,480
wait 20
next
ofscpy
click
end
使用的命令文,到现在基本已经学过了。
btndef读入职员卷的图像.
 
「blt」表示向一边挪动图像。
这里重新说明下blt指令的使用(貌似在说高速动画的时候解释过)
关于「blt」后面的8个数值在这里说明下吧。
最初的四个数值分别表示在游戏画面的「左上端的X坐标」「左上端的Y坐标」「画面的宽度」「画面的纵幅度」。
最后的四个数值分别表示读入了的图像文件的「 左上端的X坐标」「左上端的Y坐标」「画像的宽度」「画像的纵幅度」。

画像的Y坐标的变数是由于「for」命令而循环传送,另外画面Y坐标每1dot(日文ドット 8知道翻成撒= =|||)被加在一起算。 (另外偶对for循环很不了解。。。表来问我问题。。。希望有哪位大人可以为我解释for %0=0 to 1920这句话的意思)

「wait」和「step」的数值会根据滚动的快慢而改变。

在最后时使用「ofscpy」指令就表示完成滚动了。
采用sprite画像也能制作职员卷,不过,不太推荐。
理由是作为职员卷来说使用sprite太沉重。

这里解释下 sprite日文写做スプライト 貌似直译的话是雪碧的意思 这个就有点无法理解了 所以就把スプライト作为外来语翻成了sprite了 貌似也有点8对 哈。。。不过其实就是LSP指令拉 如果翻错的话请大家指出
回复

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2005-10-24 19:42:55 | 显示全部楼层
雪碧在NS里就代表sp图片.就是除了人物立绘以外的图片都属于这个类型...
dot=象素.
for循环的意思就是每循环一次把变量%0加1,一直到变量大于1920循环就结束,继续执行下面的部分.
PS:移动其实我一直是用SP图片制作的...寒...
http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

6

主题

26

帖子

1111

积分

⑥精研

积分
1111
 楼主| 发表于 2005-10-24 19:54:12 | 显示全部楼层
下面是引用CountD于2005-10-24 19:42发表的:
PS:移动其实我一直是用SP图片制作的...寒...

寒|||||偶么试过用雪碧来做移动。。。。。。。。
只能说D大人强。。。。。。。。
PS一句:貌似偶有D大人的Q的 就是D大人老隐身 偶么和大人说过话而已 貌似偶也老潜水的 哈。。。哈。。哈哈
回复 支持 反对

使用道具 举报

12

主题

225

帖子

2396

积分

开发组

三心二意魔人

积分
2396
发表于 2005-10-24 20:23:44 | 显示全部楼层
如果是大场景的横纵移动的话,用blt比较方便,但是字幕不计较字体的话,还是直接lsp文字+移动比较方便(作老长一条只有几个字的素材看起来好夸张啊……^^b)……(要华丽一点的话也可以切成几条分别移动,就是麻烦点,但可以做有更多花样的动画效果)
貌似以前老游戏教程里都是把sprite翻译作精灵,指游戏里所有需要运动的图片……不过ns里文字也能lsp……可能统称对象比较合适吧?(还真难找到合适的词……还是叫它宇宙吧,笑)

p.s.msp的图片比较大的时候,好像是有点效率上的影响……
回复 支持 反对

使用道具 举报

6

主题

26

帖子

1111

积分

⑥精研

积分
1111
 楼主| 发表于 2005-10-24 20:40:10 | 显示全部楼层
宇宙。。。。。。。。
笑 然后再寒一记
回复 支持 反对

使用道具 举报

122

主题

3954

帖子

24万

积分

超级版主

传说中的Bunny坑神~!

Rank: 8Rank: 8

积分
244543

声命组铜赏

发表于 2005-10-24 20:58:55 | 显示全部楼层
我经常做老长一条只有几个字的图片....= =|||
MSP+PRINT的话确实可能有这个问题...
说起来ofscpy到底是做什么的倒是没弄懂...
http://www.nvlmaker.net/
回复 支持 反对

使用道具 举报

125

主题

288

帖子

1387

积分

⑥精研

积分
1387
发表于 2005-10-25 03:01:14 | 显示全部楼层
一般不是翻成精灵吗?Sprite其中的一个中文意思是“活动块”

dot就是点啊,1 dot = 1 pixel

1920 * 20 / 1000 = 25.8,这个职员卷要翻25秒啊=_=|||

PS:for %0=0 to 1920这句话的意思我以前回过帖子了,就是初始化一个变量%0,然后在每个循环中增加step(这里没有写,默认是1)的值,直到上限(1920)后退出循环

for %0 = 0 to 100 step 10
next
这个循环将执行10次,每次%0自加10

for(int i = 0;i < 100;i += 10){}
回复 支持 反对

使用道具 举报

12

主题

225

帖子

2396

积分

开发组

三心二意魔人

积分
2396
发表于 2005-10-25 09:22:00 | 显示全部楼层
ofscpy大致上说就是用来给blt动画收尾的……如果blt动画结束后不写上这一句,之后接print的时候是没法按照指定的刷新效果正常的显示的(是blt的图片有残留还是变成瞬间显示我忘了……),大概是blt的显示机制和普通print之间有那种adv san大约能给出解释但我肯定看不懂的区别……笑……
回复 支持 反对

使用道具 举报

125

主题

288

帖子

1387

积分

⑥精研

积分
1387
发表于 2005-10-25 13:11:20 | 显示全部楼层
嗯,那是因为创建了一个临时的显示设备句柄(HDC)后,NS置换了当前的绘图环境,之后的ofscpy大约就是把环境重新SelectObject回去的吧……BitBlt需要指定源HDC和目标HDC,你们可以把DC想象成一个绘图环境(比如游戏窗口,或者整个桌面)的上下文,而HDC是应用程序通过WIN32GDI访问这些环境的实例标识。
回复 支持 反对

使用道具 举报

6

主题

129

帖子

616

积分

⑤进阶

↑苦力

积分
616
发表于 2005-10-25 21:41:21 | 显示全部楼层
插个嘴……spirit好像才是精灵的意思= =b
呜呼六歌兮歌思迟 溪壑为我回春姿
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-4-20 19:05 , Processed in 0.025070 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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