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

Project1

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

NowLoading v0.1

 关闭 [复制链接]

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

跳转到指定楼层
1
发表于 2008-9-26 07:48:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
=begin

  NowLoading v0.1
  
  作者:秀秀
  
  功能: 实现了场景转换用 NowLonding 画面来读取数据 图片可以自定义
  
        StartNowLondingTr模块的self.start里面的 随便定义多少张图都可以
        
        别忘记释放= =
        
        默认用了黑色矩形填充

  使用方法:把脚本最下面的 main 一兰里的 Graphics.freeze 注释掉
  
            否则会因为画面冻结而显示不出标题的 NowLonding 画面

=end

module Graphics
  @@ori = method("transition")
  def self.transition(*args)
     StartNowLondingTr.stop
     @@ori.call(*args)
  end  
end  

module StartNowLondingTr
  def self.start
    @start = Thread.new do
      @nowLsprite = Sprite.new
      @nowLbitmap = Bitmap.new(640,480)
      @nowLsprite.bitmap = @nowLbitmap
      @nowLsprite.bitmap.fill_rect(0,0,640,480,Color.new(0,0,0,255))
      @nowLsprite.x = 0
      @nowLsprite.y = 0
      @nowLsprite.z = 99999999
      @nowLsprite.visible = true
      @nowLsprite.bitmap.draw_text(400,420,200,60,"NOW LONDING...")
      loop do
        sleep 0.001
        Graphics.update
      end
    end
  end
  def self.stop
    @start.exit
    @nowLsprite.dispose
    @nowLsprite.bitmap.dispose
  end
end

class Class
  alias ori_new new
  def new(*args)
    if self.method_defined? :main
      StartNowLondingTr.start
      @obj =  ori_new(*args)
      return @obj
    else
      return ori_new(*args)
    end
  end
end
http://rpg.blue/upload_program/files/hide_xiu_96911465.png

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
22
发表于 2008-9-29 01:05:06 | 只看该作者
个人认为这么做是不对的。

我也知道不对,会出现非常多问题,如果是三远景的话更会令到后面的loading进入死循环,只是我急于试用这个脚本的功能而已。。。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

21
发表于 2008-9-28 21:02:37 | 只看该作者
以下引用lhbadsl于2008-9-27 17:34:47的发言:
  $scene = nil
  $scene=Scene_Map.new
[本贴由作者于 2008-9-27 18:21:49 最后编辑]

个人认为这么做是不对的。
「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

20
发表于 2008-9-28 21:00:12 | 只看该作者
以下引用灯笼菜刀王于2008-9-26 21:44:55的发言:

所以了? @@ori.call(*args)这里的@@ori是引用了method的方法还是 Graphics的方法?

抱歉= =,DBSHY君的那些文字组合给我的信息好象有反作用~~~

本来我根据夏娜殿的解说,@@ori.call应该是引用了method的方法~~现在觉得好象自己理解错了...

= =我现在想知道这部分内容是属于什么的~,F1里搜不到帮助,我怕这样下去我的问题会越来越多~~,还是系统的完整学比较好....


我来解释一下脚本好了……

module Graphics
# 利用"method"方法将原"transition"方法储存至类变量@@ori
@@ori = method("transition")
# 定义新的transition方法
def self.transition(*args)
    # 调用StartNowLondingTr模块的stop
    StartNowLondingTr.stop
    # 调用原"transition"方法
    @@ori.call(*args)
end  
end  

「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

Lv1.梦旅人

逃兵

19
发表于 2008-9-28 20:55:52 | 只看该作者
以下引用TERENCE于2008-9-26 9:06:19的发言:

秀秀殿
可不可以加上一个游戏开关来控制.....
想用NowLonding的时候就把开关给ON
不想用时则反之为OFF....
这样活用的空间可以更广,
才不会每次场景转换都用 NowLonding 画面


这里:if self.method_defined? :main
改为:if self.method_defined?(:main) and $g_v[X] # 某开关对应的脚本

「If you judge people, you have no time to love them.」—— Mother Teresa
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
18
发表于 2008-9-28 01:34:47 | 只看该作者
其实我们好像都误会这个脚本的功能了!
误会秀秀这一句......


功能: 实现了场景转换用 NowLonding 画面来读取数据......

这里的场景转换並非指的是事件中的场所移动
是指$scene的转换,换句话说.....
MS游戏如果执行到$scene = ****.new时,就会有NowLonding效果

--------------------------------------------------------------------------------

之所以场所移动沒调用NowLonding效果,
因为游戏这之间都是在$scene=Scene_Map.new下。

问题我倒不是误会了,其实我解决了这个问题,就是在要调用的时候用事件脚本写上
$scene = nil
$scene=Scene_Map.new

强行中断场景就可以在同样的地图场景中随时调用了,同场景的事件中照旧可以使用,不过问题就是就算是调用过后还是没有完全显示背景图,脚本上没有卡住。。。哎。。和我的想像中不太一样啊。。。。。。并不是说这个脚本不好。。。只是没有解决我的问题而已。你知道我不是来学习这个而是要真正想把这个脚本应用起来的。。。。。。。loading最重要是卡住和调用过后完全显示图片(当然也要显示其他的东西了,不过我就想要显示大型的背景图就可以了,其他的都非常容易显示)。。。。。用尽了一切脚本的事件的方法还是没有在这个脚本的架构内完全解决问题。。。可惜。。。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

辉瑞中国首席研究员<

梦石
0
星屑
50
在线时间
142 小时
注册时间
2008-1-18
帖子
2129
17
发表于 2008-9-28 00:44:22 | 只看该作者
以下引用灯笼菜刀王于2008-9-26 21:44:55的发言:

所以了? @@ori.call(*args)这里的@@ori是引用了method的方法还是 Graphics的方法?

抱歉= =,DBSHY君的那些文字组合给我的信息好象有反作用~~~

本来我根据夏娜殿的解说,@@ori.call应该是引用了method的方法~~现在觉得好象自己理解错了...

= =我现在想知道这部分内容是属于什么的~,F1里搜不到帮助,我怕这样下去我的问题会越来越多~~,还是系统的完整学比较好....


你如果不理解的话,看成跟 实例变量 一样,不过还是有区别
类变量是一种被类、子类以及它们的实例所共享的全局变量

method 是将self的方法对象化后得到方法对象,封装了方法
@ORZ.CALL 是运行封装在 方法对象 中的 方法

PS:问题越来越多,去提问区去问吧,感觉答这样的问题比新手问题简单的多 XD
来6r就是等某位仁兄的巨坑

褴褛着身行无端,囊中羞涩空心酸。
平生几无得意事,倒塔泡面宅寝室。
惟羡隔壁高帅富,雨露春风月夜声。
青丝无处觅其踪,只有硬盘苍井空。
莫云男儿空悲愁,鸿鹄岂不天际游。
坐断天下执鹿首,千百金帛万兜鍪。
夜深忽梦某年月,再见女神欲语迟。
吊丝终有逆袭日,木耳再无回粉时。
回复 支持 反对

使用道具 举报

Lv1.梦旅人

龙皇

梦石
0
星屑
50
在线时间
83 小时
注册时间
2007-8-8
帖子
2956
16
发表于 2008-9-28 00:16:38 | 只看该作者
其实我们好像都误会这个脚本的功能了!
误会秀秀这一句......

功能: 实现了场景转换用 NowLonding 画面来读取数据......

这里的场景转换並非指的是事件中的场所移动
是指$scene的转换,换句话说.....
MS游戏如果执行到$scene = ****.new时,就会有NowLonding效果


之所以场所移动沒调用NowLonding效果
因为游戏这之间都是在$scene=Scene_Map.new下。

                签名图来自:無限のファンタジア
                 我的RMXP专题空间--龙使传说
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
60
在线时间
5 小时
注册时间
2008-6-28
帖子
292
15
发表于 2008-9-27 19:56:05 | 只看该作者
这样啊 自定义图片的话 有这个可能 因为Bitmap.new需要一定时间 如果数据读取的时间少于Bitmap.new的时间 可能就显示不了nowLoading图片了
其实这个问题也很好解决
在Thread.new之前把Bitmap.new和Sprite.new处理了 这样不管怎样都会先显示NowLoad图片 然后再开始读取场景数据
@xxx = Sprite.new
@xxx.bitmap.new = RPG:Cache.....
Thread.new {
......
.....
}
这样处理试试看

可能我不是太会使用这个脚本。。。。。。。。{/gg}
不是十分理解,不过秀大可能把我的问题理解错误,并不是这个脚本完全不起作用,而是不完整。其实我没有自定义图片,用的都是你的默认的那种,其实效果也非常不错。。而问题是插入你的脚本后在过场动画剧情的的时候会有now loading显示。。就是说这个脚本实现了一些功能,其实是生效的。。。可是因为背景图都十分的大型(使用了大型的三远景脚本,而这些过场动画是用事件做成的,方法是事件:场所移动:[003,地图名],(000,000),就是自动场所移动,上面用事件做出人物动画,对话之类的东西,这种过场剧情也是比较普遍的做法),不知道是不是电脑的问题,当now loading显示后背景图片依然没有显示(其实背景图可能已经读入,因为地图提示脚本已经报出地名),而是背景图没有显示出来而造成黑色的一片,而本身我用事件强行等待一段时间是可以显示的,只是这个方法没有智能,几乎不管电脑好坏,一律等待。。。造成了游戏流程方面有很大的破坏,虽然是解决了问题,可是好像就是一种璋眼法一类的东西。。。。头痛。。。如果秀大的脚本能够处理像这些问题的话,那么我就不用想的头都暴了。。。{/cy}
看了看你的代码,这个脚本的功能好像是在不同场景中过场(战斗和地图切换的时候就会有,还有开始的时候标题也会有,而真正在同是地图场景中剧情过场要用到的时候反而没有了,可能是我用法有误。。。汗)的时候自行调用而出现loading图片,当图片什么的读入时候解冻,不好的是图片没有完全显示的时候就解冻了(造成了图片没有显示的时候自动事件已经开始,剧情在一片“黑暗”中进行),我想最好是做成当图片没有显示的时候,一律把所有的东西都冻结,等所有图片都显示完毕然后再解封。。。这个是所有loading的最基本的功能,不过可能rm实现这个可能真的非常困难。。。。如果没有办法也就这样了。。。用这个再配合一下等待,也就过去了。。。。。。。。还有就是当在原地图同场景过场也是会读入的(当一段剧情过后,要清除一些角色,重订场景,再做一段新的剧情,这样背景图就会再次读入,可是这个时候就没有loading了。。。。)其实我觉得这个脚本思路方向上有点错误,应该做成可以用事件脚本调用的那种就更好了。。。这样就可以解决原地同场景过场的问题了。并且也可以让作者有选择的使用这个。。。不然没有需要这个的时候也有,真正要的时候反而没有用到。
不要小看偶哦~~偶可是雨血2和历史2的主系统哦
回复 支持 反对

使用道具 举报

Lv1.梦旅人

粉蜘蛛秀秀

梦石
0
星屑
76
在线时间
39 小时
注册时间
2007-6-4
帖子
384

贵宾第1届Title华丽大赛新人奖

14
 楼主| 发表于 2008-9-27 17:20:30 | 只看该作者
。。。。。。。
貌似作用不大,过场动画读入的时候,如果背景图片太大还是会直接过去,而没有卡住,背景依然黑色一片,可能是读入了图片可是还是没有显示出来,如果这个脚本是这样就此为止的话,貌似没有实现其应有的功能(好像loading就是要读取过后,图像什么的要完全显示才叫真正的loading的吧。。。如果只是读入了图片而没有显示出来的话,那貌似就不太实用了)。。。。。。。没有完整一点的吗。。。这个脚本还是不能完全解决问题,读取的时候一个画面就过去了,图像还是没有显示出来,这样作用就好像一个loading图片而已。。。。并且不能随便调用。。。。请秀大再继续努力一点,搞个智能化和可以自行调用的完整版出来,等待中。。。。不过有了这个脚本做参考我想我也能够搞出来了。。。非常感谢。。。
我试用过后问题还是依然,貌似这个脚本的功能还是不够位。。。这里就提下试用中第一时间出现的问题以望改进,如果不好请无视。。。。。。

这样啊 自定义图片的话 有这个可能 因为Bitmap.new需要一定时间 如果数据读取的时间少于Bitmap.new的时间 可能就显示不了nowLoading图片了
其实这个问题也很好解决
在Thread.new之前把Bitmap.new和Sprite.new处理了 这样不管怎样都会先显示NowLoad图片 然后再开始读取场景数据
@xxx = Sprite.new
@xxx.bitmap.new = RPG:Cache.....
Thread.new {
......
.....
}
这样处理试试看{/wx}




http://rpg.blue/upload_program/files/hide_xiu_96911465.png
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-2 09:17

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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