Project1
标题:
改了一下碎屏转场脚本,出现内存错误
[打印本页]
作者:
狱冥幻翼
时间:
2012-12-5 16:55
标题:
改了一下碎屏转场脚本,出现内存错误
本帖最后由 狱冥幻翼 于 2012-12-5 16:57 编辑
原版的碎屏脚本计算量太大了,就自己改了改,不过连续两次战斗后会提示内存错误,求解~改了74-91行
改后的脚本↓
class Broken_Screen
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
def initialize(filename="Graphics/system/sptx.png")
@width = Graphics.width #获取宽高
[url=home.php?mod=space&uid=291977]@height[/url] = Graphics.height
#===========================
@step_w = @width/2 #★★★★★★★★★★★#★★★★★★★★★★★
@step_h = @height/2 #★★★★★★★★★★★#★★★★★★★★★★★
#可以设置这两项数据,以减少可能会出现的误差,
#因为脚本并不会检查所有的像素,所以有时候会出现误差,减少
#步长可以减少出现误差的可能,但会增加计算量。
#===========================
@picture = Graphics.snap_to_bitmap #获取当前的图像
@borken_pic = Bitmap.new(filename)#获取破碎辅助图
@shards = {} #碎片的数组
start #开始绘图
end
#--------------------------------------------------------------------------
# ● 开始绘图
#--------------------------------------------------------------------------
def start
make_shard
end
#--------------------------------------------------------------------------
# ● 开始炸开
#--------------------------------------------------------------------------
def get_bomb
Audio.se_play("Audio/SE/crash")
temp = [] #将哈希表转换为数组
@shards.each_value{|shard|
temp.push shard
}
@shards = temp
shards_v = []
for i in
[email protected]
# 对象 中心位置 转速
@shards[i].angle=rand(2)*45
shards_v.push [@shards[i],rand(@shards[i].x)+20-rand(40),@shards[i].y-208,rand(2)]
end
for t in 0..89
for sha in shards_v
sha[0].x+= sha[1]/10
sha[0].y+= sha[2]/20
#~ msgbox sha[0].x
sha[2]+=10
sha[0].angle+=sha[3]
if sha[3] == 0
sha[0].zoom_x -= 0.01
else
sha[0].zoom_y -= 0.01
end
end
Graphics.update
end
for sha in shards_v
sha[0].dispose
end
@picture.dispose
@borken_pic.dispose
end
#--------------------------------------------------------------------------
# ● 制作碎片
# area,可以被绘图的区域
#--------------------------------------------------------------------------
def make_shard
area = [1,1,300,200]
spr = Sprite.new
spr.z = 100
spr.bitmap = Bitmap.new(@width,@height)
spr.ox=(area[0]+area[2])/2
spr.oy=(area[1]+area[3])/2
spr.x=(area[0]+area[2])/2
spr.y=(area[1]+area[3])/2
@shards[1] = spr
@shards[1].bitmap.blt(area[0], area[1], @picture, Rect.new(*area))
#--------------------------------------------------------------------------
area1 = [300,100,300,200]
spr1 = Sprite.new
spr1.z = 100
spr1.bitmap = Bitmap.new(@width,@height)
spr1.ox=(area[0]+area[2])/2
spr1.oy=(area[1]+area[3])/2
spr1.x=(area[0]+area[2])/2
spr1.y=(area[1]+area[3])/2
@shards[2] = spr1
@shards[2].bitmap.blt(area1[0], area1[1], @picture, Rect.new(*area1))
end
end
#============================================================
# 本脚本由九夜神尊制作
# 欢迎任意转载修改,但请保留作者名。
#===========================================================
复制代码
作者:
896409879
时间:
2012-12-6 05:56
貌似是这样的,很多调用精灵类的脚本在配置不怎么好的电脑上都会出现内存问题。只能删除这个脚本了。。。。我也不知道如何解决。。。。
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1