赞 | 3 |
VIP | 37 |
好人卡 | 8 |
积分 | 0 |
经验 | 22564 |
最后登录 | 2017-5-16 |
在线时间 | 491 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 49
- 在线时间
- 491 小时
- 注册时间
- 2012-1-27
- 帖子
- 421
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 狱冥幻翼 于 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
- #============================================================
- # 本脚本由九夜神尊制作
- # 欢迎任意转载修改,但请保留作者名。
- #===========================================================
复制代码 |
|