FantasyDR 发表于 2006-3-9 01:04:06

[3.12怨念更新]RMXP播放AVI动画较完美解决方案

修改了原先的10秒不调用Graphics.update就强制结束工程的设定.如果10秒以上没有调用Graphics.update,只是抛出一个Hangup异常,可以用rescue捕获,不必非要结束游戏了.

由此完善了视频播放功能,使用了一大套关于窗体的API.从此,RMXP的用户不用再羡慕RM2k或者2k3的视频播放功能了.

需要加入的脚本是范例游戏工程里面,main之前的MoviePlayer和SystemTimer,
两个必须配合使用,下面是脚本中的说明.

#===========================================
# ☆★☆ AVI播放器 ☆★☆
#------------------------------------------------------------------------------
# - FantasyDR
# - 2006.3.12
#------------------------------------------------------------------------------
# MSN: FantasyDR_SJL@hotmail.com
#------------------------------------------------------------------------------
# Note:
#
#   1.在下方 PROJECT_NAME = 后面填写你的游戏工程名.
#
#   2.在游戏中,调用脚本事件播放你的视频文件,如果一行写不下可以在逗号后换行.
#
#   $MP.play(movie_name, movie_length,
#            skip, fullscr,
#            x, y, width, height, loop)
#
# 参数说明:
#
#   movie_name   : 视频文件名(*.avi),必须
#   movie_length : 电影时间,单位是秒,必须
#             skip : 是否可以按A键跳过,true/false,默认是true
#          fullscr : 是否强制为全屏幕播放,true/false,默认是false
#            x,y : 视频播放的左上角坐标,默认是0,0
#   width,height : 视频的宽度,可以任意.默认是640,480
#             loop : 循环播放,true/false,默认是true
#
# 例如播放logo.avi,时间13秒,禁止跳过,强制全屏,范围(是0,0)-(640,480),循环播放
#      $MP.play("logo.avi",13,false,true)

chaochao 发表于 2006-3-9 03:04:26

赞!原来如此啊.用了这种方法.

FantasyDR 发表于 2006-3-9 10:44:11

顺手贴一下,这个脚本和以前的相比,解决了如下的问题:

1.以前的脚本播放AVI的时候,每隔一段时间会闪烁一下.Graphics.update被调用的原因.现在没有这个问题了.

2.动画播放不能全屏的问题.以前的脚本播放640*480大小的脚本在全屏状态下会弹出,现在播放全屏动画没有问题.

3.以前的脚本只能在左上角开始播放动画,而且不能控制播放窗口大小.现在这个脚本可以从任意位置开始,自定义播放窗口的大小.

4.工程名称可以使用中文。其实凡是调用API的,如果参数里面有中文的话,必须把Unicode转换成GBK编码,这样就不会出问题了。

[编辑,去掉RP的内容-v-]
实现机理比较麻烦,首先是捕获Hangup异常,所以免于调用Graphics.update防闪烁。第二是播放AVI的窗体并不是原来的,而是调用API建立的子窗体,所以十分好控制.呵呵.

盗帅冬瓜 发表于 2006-3-9 13:08:15

您真是太强大了!!!

FantasyDR 发表于 2006-3-11 02:50:51

另外,发现了自己万分RP的一个地方。工程已经更换了……用原来的dll就可以。
原来不需要修改Dll就可以捕获这个异常,真是小题大做,晕。这个故事告诉我们,事情往往比想象的简单^_^

不过,若不是弄dll弄的兴起,也不会去做这个AVI播放的脚本-.-总归还是没有完全白费力气。

chaochao 发表于 2006-3-11 06:11:24

引用第4楼FantasyDR于2006-03-11 02:50发表的“”:
另外,发现了自己万分RP的一个地方。工程已经更换了……用原来的dll就可以。
原来不需要修改Dll就可以捕获这个异常,真是小题大做,晕。这个故事告诉我们,事情往往比想象的简单^_^

不过,若不是弄dll弄的兴起,也不会去做这个AVI播放的脚本-.-总归还是没有完全白费力气。呵呵,直接就可以捕获到.这个方法真的很好.播放AVI大概已经完美了...

kalinna 发表于 2006-3-11 11:43:19

谢谢FF分享 关于API方面的确发展空间蛮大的 希望以后有更多更好的作品分享给大家

玄天 发表于 2006-3-12 20:21:19

顶一下大叔的东西呀~`

FantasyDR 发表于 2006-3-12 20:46:44



……想看到地狱的景色么……

盗帅冬瓜 发表于 2006-3-12 21:05:46

引用第8楼FantasyDR于2006-03-12 20:46发表的“”:


……想看到地狱的景色么……

我好想啊!!!
页: [1] 2 3 4
查看完整版本: [3.12怨念更新]RMXP播放AVI动画较完美解决方案