Graphics.transition(20)
@spriteb.bitmap.dispose
@spriteb.dispose
@sprite.bitmap.dispose
@sprite.dispose
$scene = Scene_Base.new
end
end
现在执行程序的话,由于没有建立Scene_Base会出错。画面也一闪而过,
我要让logo动起来,像任天堂那样。
while @sprite.y >206 do
Graphics.update
@sprite.y-=1
End
当图片的y坐标到206就停住,否则图片就一直向上升。
这回执行一下,发现有点像那么回事了,不过最后停住的时候没有“叮”的一声。
还要加上声音。
if @sprite.y ==206
Audio.se_play("Audio/SE/008-System08.ogg")
End
这样声音就出来了。执行一下发现“叮”的一声之后场景马上就切换了,有点突然。
大概再延时2到3秒为好。
@time=10
while @time >0 do
Graphics.update
@time-=1
End
延时了一会。测试一下,发现这回差不多了。
目前的脚本如下:
class Scene_SimpleLogo
def main
@spriteb = Sprite.new
color=Color.new(255, 255, 255)
@spriteb.bitmap=Bitmap.new(800, 600)
@spriteb.bitmap.fill_rect(0,0,800,600, color)
@spriteb.x =0
@spriteb.y =0
@sprite = Sprite.new
@sprite.bitmap = RGE::Cache.picture("logo")
@sprite.x =150
@sprite.y =288
while @sprite.y >206 do
Graphics.update
@sprite.y-=1
end
if @sprite.y ==206
Audio.se_play("Audio/SE/008-System08.ogg")
end
@time=10
while @time >0 do
Graphics.update
@time-=1
end
Graphics.transition(20)
@spriteb.bitmap.dispose
@spriteb.dispose
@sprite.bitmap.dispose
@sprite.dispose
$scene = Scene_Base.new
end
end
为了不显示出错,随便编一个简单的场景
class Scene_Base
def main
s = Sprite.new
s.bitmap = Bitmap.new("2")
loop do
Graphics.update
Input.update
break if Input.trigger?(13) or Input.trigger?(12)
s.bitmap.dispose
s.dispose
end
end
现在可以好好欣赏山寨版开头了。
作为avg,当然是要有对话框了,我需要在主场景上显示对话。
显示对话虽然可以直接在图片上写,不过便于管理和与rm接轨,我还是把它放进窗口里面。
这样自然而然的要建立一个窗口的类。
需要注意的是下面蓝色部分
class Window_Base < RGE::Window
def initialize(x, y, width, height)
super()
self.windowskin= RGE::Cache.windowskin("001-Blue01.png")
self.x = x
self.y = y
self.width = width
self.height = height
self.z = 100
end
def dispose
# 如果窗口的内容已经被设置就被释放
if self.contents != nil
self.contents.dispose
end
super
end
def update
super
end
end
其他的依旧“拿来主义”。
窗口除了要显示对话外,有的时候还要显示其他东西,如人物属性什么的,所以单独建立一个用来显示信息的对话框。
class Window_Message< Window_Base
def initialize
super(0,300,800,300)
self.contents = Bitmap.new(width - 32, height - 32)
end
end
再建立个自定义对话框图片(我附带的例子的图片及其恶心,务必更换使用)
w = Sprite.new
w.bitmap = RGE::Cache.windowskin("window")
w.x=0
w.y=600-239
为了让对话能继续进行,还要对鼠标的反应进行刷新
loop do
Graphics.update
Input.update
if $Game_Massage_index==($Game_Massage.size+1)
b.visible = false
end
if Mouse.press?(0x01) #左键点击继续对话
unless $Game_Massage_index>=($Game_Massage.size)
b.update
end
$Game_Massage_index+=1
end
break if Input.trigger?(12)
end
测试后发现,对鼠标反应过于灵敏
$Game_Massage_index+=1
在上面这句之后加上下面的做延时处理(下面好熟悉)
@time=30
while @time >0 do
Graphics.update
@time-=1
end
等待图标则么办?哈哈,利用rge的特性直接加载gif就方便多了,一张gif足矣(我选的这个gif有点吓人,请务必更换)
加上等待图标后的脚本如下:
class Scene_Base
def main
$Game_Massage=[
["凌 晓晨",
"是个男生就好了。最好,还要是个帅哥!",
"每天面对教室里这些衰男真是让人无力啊。",
"人都要干瘪掉了说。",
"",
""],
["1","2","3","4","5","6"],
["11","22","33","44","55","66"],
]
$Game_Massage_index=0
s = Sprite.new
s.bitmap = Bitmap.new("2")
w = Sprite.new
w.bitmap = RGE::Cache.windowskin("window")
w.x=0
w.y=600-239
#s.bitmap.mirror=true
gif = GIF.new("di")
gif.x = 700
gif.y = 500
gif.z = 201
gif.visible = false
b=Window_Message.new
loop do
Graphics.update
Input.update
if $Game_Massage_index!=0 and $Game_Massage_index<=($Game_Massage.size+1)
gif.visible = true
gif.update
end
if $Game_Massage_index==($Game_Massage.size+1)
gif.visible = false
gif.update
b.visible = false
end
if Mouse.press?(0x01)
unless $Game_Massage_index>=($Game_Massage.size)
b.update
end
$Game_Massage_index+=1
@time=30
while @time >0 do
Graphics.update
@time-=1
end
end
break if Input.trigger?(12)
end
s.bitmap.dispose
s.dispose
gif.dispose
end
end