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

Project1

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

[RMVA发布] 窗口飞入

[复制链接]

Lv2.观梦者

梦石
0
星屑
380
在线时间
602 小时
注册时间
2014-5-8
帖子
699
跳转到指定楼层
1
发表于 2016-2-2 13:01:43 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

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

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

x
本帖最后由 布罗利 于 2016-2-3 11:04 编辑

{:2_248:}
这个系统我很久以前就写过了,一直没完善,今天终于完善了。
{:2_275:}
主要的功能是:进入场景的时候,窗口会有个飞入的动画,这样感觉会比较华丽有木有
{:2_286:}
也不知道VA有没有过类似的脚本,至少我没发现,不过XP有现成的,但用起来十分麻烦
{:2_278:}
话不多说,上脚本!
已更新至1.1版本
[box=PaleTurquoise]1.1更新内容
1-【支持自动执行move_start,用起来更简便】
2-【支持余数的运算,有余数窗口也会自动归位】[/box]

[box=Pink]注意!
1.0版本需要调用move_start这个方法,更新至1.1版本后
不需要再调用这个方法,请将1.0调用move_start的语句删除,不然会有BUG
[/box]

[box=Wheat]1.2版本预告
如果我有时间写1.2版本的话,除了修复BUG外,还会增添一些效果
目前只支持4种效果
1 窗口由上到下飞入
2 窗口由下到上飞入
3 窗口由左到右飞入
4 窗口由右到左飞入
1.2版本将会有更多的效果,例如窗口弹跳,窗口由小变大 等等.....
前提是我有时间的话.......
[/box]

RUBY 代码复制
  1. =begin
  2. #==============================================================================
  3. 窗口飞入1.1    By 霸道  QQ1711044261  (C)神话时代制作组 2016_2_2
  4. #==============================================================================
  5.  
  6. 1.1更新内容
  7.  
  8. 1-【支持自动执行move_start,用起来更简便】
  9. 2-【支持余数的运算,有余数窗口也会自动归位】
  10.  
  11. #==============================================================================
  12. 窗口进入
  13. Window_move::speed(window,index)
  14. 窗口离开
  15. Window_move::speed_back(window,index)
  16.  
  17. 说明:系统会自动执行move_start和move_end两个方法,请不要改这两个方法名,否则会无效
  18.  
  19. index
  20. 1 窗口由上到下飞入
  21. 2 窗口由下到上飞入
  22. 3 窗口由左到右飞入
  23. 4 窗口由右到左飞入
  24. 注意:这是窗口进入的index 窗口离开的index和这个相反
  25.  
  26. 动画速度
  27. 窗口的默认速度为8帧
  28. 如果需要改速度 改这个全局变量即可
  29. 值越小 速度越快 值越大 速度越慢
  30. $window_speed =
  31. #==============================================================================
  32.  
  33. 已知不足
  34. 1.0版本的不足已经全部改善,暂未发现不足
  35. 如有发现不足 请联系 QQ1711044261或66RPG ID:布罗利
  36.  
  37. 已知BUG
  38. 暂未发现BUG 如发现BUG想要解决 请联系 QQ1711044261或66RPG ID:布罗利
  39.  
  40. 容易出现的问题
  41. 1、====================================
  42. 问:为什么窗口离开没有效果
  43. 答:目前发现两种可能
  44. 1、有可能窗口离开的语句和窗口进入的语句写反了
  45. 窗口离开的语句必须是Window_move::speed_back(window,index)
  46. 2、有可能改动了你改动了pre_terminate这个方法,具体要根据实际脚本来解决
  47.  
  48. 如有问题出现 请联系 QQ1711044261或66RPG ID:布罗利
  49.  
  50. #==============================================================================
  51. 范例:
  52.   #--------------------------------------------------------------------------
  53.   # ● 窗口进入
  54.   #--------------------------------------------------------------------------
  55.   def move_start
  56.     Window_move::speed(window,index)
  57.   end
  58.   #--------------------------------------------------------------------------
  59.   # ● 窗口离开
  60.   #--------------------------------------------------------------------------
  61.   def move_end
  62.     Window_move::speed_back(window,index)
  63.   end
  64. #==============================================================================
  65.  
  66. =end
  67.  
  68. $window_speed = 8
  69. $windows = []
  70.  
  71. class Scene_Base
  72.   def post_start
  73.     move_start if respond_to? :move_start
  74.     perform_transition
  75.     Input.update
  76.     Window_move::move #if respond_to? :move_start
  77.   end
  78.   def pre_terminate
  79.     move_end if respond_to? :move_end
  80.     Window_move::move_back
  81.   end
  82. end
  83.  
  84. module Window_move
  85.   def self.speed(window,index=1)
  86.     if window == nil
  87.        return
  88.      end
  89.     window.opacity = 0
  90.     window.contents_opacity = 0
  91.     x = window.x ; y = window.y
  92.     a = 0 ; b = 0
  93.     case index
  94.     when 1
  95.       b = (window.height + y) / $window_speed
  96.       c = (window.height + y) % $window_speed
  97.     when 2
  98.       b = (Graphics.height-y) / $window_speed
  99.       c = (Graphics.height-y) % $window_speed
  100.     when 3
  101.       a = (window.width + x) / $window_speed
  102.       c = (window.width + x) % $window_speed
  103.     when 4
  104.       a = (Graphics.width-x) / $window_speed
  105.       c = (Graphics.width-x) % $window_speed
  106.     end
  107.     $windows << [window,index,a,b,c,x,y]
  108.     case index
  109.     when 1
  110.       window.y = -window.height
  111.     when 2
  112.       window.y = Graphics.height
  113.     when 3
  114.       window.x = -window.width
  115.     when 4
  116.       window.x = Graphics.width
  117.     end
  118.   end
  119.   def self.move
  120.     $window_speed.times do |i|
  121.       $windows.each do |window,n,a,b,c,x,y|
  122.         case n
  123.         when 1
  124.           window.y += b
  125.           window.opacity += 256 / $window_speed
  126.           window.contents_opacity += 256 / $window_speed
  127.         when 2
  128.           window.y -= b
  129.           window.opacity += 256 / $window_speed
  130.           window.contents_opacity += 256 / $window_speed
  131.         when 3
  132.           window.x+= a
  133.           window.opacity += 256 / $window_speed
  134.           window.contents_opacity += 256 / $window_speed
  135.         when 4
  136.           window.x -= a
  137.           window.opacity += 256 / $window_speed
  138.           window.contents_opacity += 256 / $window_speed
  139.         end
  140.       end
  141.       Graphics.update
  142.     end
  143.     $windows.each do |window,n,a,b,c,x,y|
  144.       window.x = x
  145.       window.y = y
  146.     end
  147.     $windows = []
  148.   end
  149. ################################################################################  
  150.    def self.speed_back(window,index=1)
  151.      if window == nil
  152.        return
  153.      end
  154.     x = window.x
  155.     y = window.y
  156.     a = 0
  157.     b = 0
  158.     case index
  159.     when 1
  160.       b = (window.height + y) / $window_speed
  161.     when 2
  162.       b = (Graphics.height-y) / $window_speed
  163.     when 3
  164.       a = (window.width + x) / $window_speed
  165.     when 4
  166.       a = (Graphics.width-x) / $window_speed
  167.     end
  168.     $windows << [window,index,a,b]
  169.    end
  170.    def self.move_back
  171.     $window_speed.times do
  172.       $windows.each do |window,n,a,b|
  173.         case n
  174.         when 1
  175.           window.y -= b
  176.           window.opacity -= 256 / $window_speed
  177.           window.contents_opacity -= 256 / $window_speed
  178.         when 2
  179.           window.y += b
  180.           window.opacity -= 256 / $window_speed
  181.           window.contents_opacity -= 256 / $window_speed
  182.         when 3
  183.           window.x -= a
  184.           window.opacity -= 256 / $window_speed
  185.           window.contents_opacity -= 256 / $window_speed
  186.         when 4
  187.           window.x += a
  188.           window.opacity -= 256 / $window_speed
  189.           window.contents_opacity -= 256 / $window_speed
  190.         end
  191.       end
  192.       Graphics.update
  193.     end
  194.     $windows = []
  195.   end
  196. end



脚本效果:


{:2_266:}
等级太低,图片最大3兆,清晰度没了.....

顺便附上范例工程: 窗口飞入范例.rar (1.55 MB, 下载次数: 251, 售价: 5 星屑)

@芯☆淡茹水 @牛肉面 @邪月长啸 @VIPArcher @RyanBern @上贺茂润 @怪蜀黍 @三途亚梦 @天使喝可乐 @myownroc @chd114 @YamazakiRyusa @黄谊洲 @slick @永燃的狂炎 @龙和许也 @月华风

点评

按照版规规定,出售附件的帖子不能得到系统奖励的喵~  发表于 2016-2-2 15:35

评分

参与人数 5星屑 +440 收起 理由
slick + 100 相当牛逼
紫英晓狼1130 + 200 精品文章
天使喝可乐 + 50 塞糖
龙和许也 + 30
邪月长啸 + 60 塞糖

查看全部评分

Lv3.寻梦者

闇吼者の災悪眷族
不気味存在締造者

梦石
0
星屑
1366
在线时间
2881 小时
注册时间
2014-7-29
帖子
6491
2
发表于 2016-2-2 15:13:41 | 只看该作者
这个我记得就在这个区就有呢,不过标签是【已发主站】哦~

点评

゚ ∀゚)ノ 人家多少年前的帖子了这样攀比有什么意义吗?  发表于 2016-2-3 16:23
http://rm.66rpg.com/forum.php?mod=viewthread&tid=235752&extra=page%3D2%26filter%3Dtypeid%26typeid%3D647%26typeid%3D647 你是说这个吧,这都能入主站....我这个可比这个强多了.   发表于 2016-2-3 11:12
回复 支持 反对

使用道具 举报

Lv2.观梦者

会吐槽的画师

梦石
0
星屑
782
在线时间
3431 小时
注册时间
2011-6-10
帖子
6535
3
发表于 2016-2-2 16:00:36 | 只看该作者
之前就用过了

点评

也对啊  发表于 2016-2-3 15:44
好像有点道理,但是仔细想想,追求影响力换种说法不就是自我满足名利吗  发表于 2016-2-3 15:25
多谢指点  发表于 2016-2-3 12:19
↓你的着眼点已经变成自我满足的名利过程,继续这样你是做不出有影响力的游戏的 自重  发表于 2016-2-3 12:13
别告诉我用的是这个 http://rm.66rpg.com/forum.php?mod=viewthread&tid=235752&extra=page%3D2%26filter%3Dtypeid%26typeid%3D647%26typeid%3D647  发表于 2016-2-3 11:29
长名公主玩家群:372588926 攻略娱乐应有尽有
了解更多新RM游戏,游戏制作请加入RPGmaker支援群:113622890
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
49 小时
注册时间
2015-10-17
帖子
38
4
发表于 2016-2-3 00:35:34 | 只看该作者
谢谢楼主了,先收藏了!!!不过我的脚本用的比较多 怕会有冲突 先试一下

点评

更新到1.1了  发表于 2016-2-3 11:29
应该不会有冲突  发表于 2016-2-3 08:11
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
380
在线时间
602 小时
注册时间
2014-5-8
帖子
699
5
 楼主| 发表于 2016-2-3 10:56:18 | 只看该作者
本帖最后由 布罗利 于 2016-2-3 11:00 编辑

已更新至1.1版本
1.1更新内容
1-【支持自动执行move_start,用起来更简便】
2-【支持余数的运算,有余数窗口也会自动归位】
这个系认可以进VA图书馆吗?
@怪蜀黍                                       
@VIPArcher

点评

已经入VA图书馆了,多谢taroxd大大  发表于 2016-2-3 11:28
回复 支持 反对

使用道具 举报

Lv3.寻梦者 (版主)

…あたしは天使なんかじゃないわ

梦石
0
星屑
2208
在线时间
4033 小时
注册时间
2010-10-4
帖子
10779

开拓者贵宾

6
发表于 2016-2-3 11:51:11 | 只看该作者
本帖最后由 taroxd 于 2016-2-3 12:11 编辑
布罗利 发表于 2016-2-3 10:56
已更新至1.1版本
1.1更新内容
1-【支持自动执行move_start,用起来更简便】


RUBY 代码复制
  1. class Window_Base
  2.  
  3.   alias_method :real_x, :x
  4.   alias_method :real_x=, :x=
  5.   attr_reader :target_x
  6.   alias_method :x, :target_x
  7.  
  8.   alias_method :init_without_transition, :initialize
  9.   def initialize(x, y, width, height)
  10.     @target_x = x
  11.     init_without_transition(-width, y, width, height)
  12.     update_transition_speed
  13.   end
  14.  
  15.   alias_method :update_without_transition, :update
  16.   def update
  17.     if real_x != target_x
  18.       new_x = real_x + @transition_speed
  19.       new_x = target_x if new_x > target_x
  20.       self.real_x = new_x
  21.     end
  22.     update_without_transition
  23.   end
  24.  
  25.   def x=(x)
  26.     @target_x = x
  27.     update_transition_speed
  28.   end
  29.  
  30.   def transition_duration
  31.     8
  32.   end
  33.  
  34.   def update_transition_speed
  35.     @transition_speed = (target_x - real_x).fdiv transition_duration
  36.   end
  37. end


其实这样就足够好看了,太花哨反而乱的说。(该脚本不需要配置)



楼主写出这段东西是很好的。支持楼主继续学脚本写脚本~

对楼主的脚本留下一点小意见吧:
对于简单的需求,配置过于复杂,甚至需要脚本的知识。
对于复杂的需求,这个脚本不支持配置(别跟我说直接改 123 行那一块。这个昨天群里已经说过了)。

点评

简单是简单,可我这个算法不支持呢,除非重新写算法  发表于 2016-2-3 12:53
自定义公式就是类似于技能公式那样,动画的方式都是自己定义的。比如昨天群里大号的那个  发表于 2016-2-3 12:52
不同窗口不同速度简直不能再简单了,连我这个三十几行的脚本都支持……  发表于 2016-2-3 12:51
我才初二呢,不理解的东西太多了....  发表于 2016-2-3 12:35
什么叫自定义公式,参数方程呢?表示不太理解,不同窗口不同速度有点难,不过能支持不同场景不同速度.  发表于 2016-2-3 12:35

评分

参与人数 1梦石 +1 收起 理由
怪蜀黍 + 1 精品文章

查看全部评分

回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

7
发表于 2016-2-6 14:07:51 | 只看该作者
效果图···你是加快了?还是本来就那样,感觉闪的太快了···

点评

好办法···  发表于 2016-2-7 09:58
$window_speed = 8 默认速度是8帧,调到16帧试试  发表于 2016-2-7 07:48
速度可以自己调啊,调到合适自己的不就行了吗  发表于 2016-2-7 07:48
速度太快太慢都不好···太快眼睛受不了,太慢人兽不了  发表于 2016-2-6 15:33
应该是本来的效果,速度可以调的  发表于 2016-2-6 15:14
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1293
在线时间
995 小时
注册时间
2014-12-14
帖子
3016

开拓者

8
发表于 2016-2-22 21:16:37 | 只看该作者
谢谢分享!~很实用的代码!
【RMVA教程】
---------------------
欲买桂花同载酒,终不似,少年游.
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
15
在线时间
4 小时
注册时间
2018-1-28
帖子
8
9
发表于 2018-1-30 14:57:16 | 只看该作者
谢谢分享!~很实用的代码
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
39
在线时间
13 小时
注册时间
2019-7-17
帖子
3
10
发表于 2019-7-21 21:01:55 | 只看该作者
围观一下--

点评

挖坟了  发表于 2019-7-22 09:19
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-21 22:18

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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