Project1

标题: logo脚本调用FLASH播放脚本 [打印本页]

作者: lycuc    时间: 2013-1-15 14:59
标题: logo脚本调用FLASH播放脚本
本帖最后由 lycuc 于 2013-1-15 14:57 编辑

正在学习脚本的脚本盲又来打扰。
用的是夏娜的FLASH播放脚本,要调用到logo脚本里面(继承类?,LOGO脚本是论坛上找的,原本是显示一张图片,
我首先在flash脚本添加class RMFlash, def main...end,然后class Scene_Logo < RMFlash报错,
我在这期间是把下面这段剪到LOGO脚本里的
RUBY 代码复制
  1. fls = RMFlash.load("2.swf", 320, 240)
  2. fls.loop = 1
  3. while true
  4.         Graphics.update
  5.         Input.update
  6.         fls.update
  7.         break if Input.trigger?(13)
  8. end
  9. fls.dispose
  10.  
  11. exit

于是把整段代码添加进class class Scene_Logo 里面,还是报错{:2_263:}
请问到底要怎么在别的脚本里面调用FLASH播放脚本啊啊啊啊
我不想用事件播放
想要的效果:能使用:“class Scene_Logo < RMFlash”,谢谢!

FLASH脚本:
RUBY 代码复制
  1. class String  
  2.   CP_ACP = 0
  3.   CP_UTF8 = 65001
  4.  
  5.   def u2s
  6.     m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
  7.     w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  8.  
  9.     len = m2w.call(CP_UTF8, 0, self, -1, nil, 0)
  10.     buf = "\0" * (len*2)
  11.     m2w.call(CP_UTF8, 0, self, -1, buf, buf.size/2)
  12.  
  13.     len = w2m.call(CP_ACP, 0, buf, -1, nil, 0, nil, nil)
  14.     ret = "\0" * len
  15.     w2m.call(CP_ACP, 0, buf, -1, ret, ret.size, nil, nil)
  16.  
  17.     return ret
  18.   end
  19.  
  20.   def s2u
  21.     m2w = Win32API.new("kernel32", "MultiByteToWideChar", "ilpipi", "i")
  22.     w2m = Win32API.new("kernel32", "WideCharToMultiByte", "ilpipipp", "i")
  23.  
  24.     len = m2w.call(CP_ACP, 0, self, -1, nil, 0);
  25.     buf = "\0" * (len*2)
  26.     m2w.call(CP_ACP, 0, self, -1, buf, buf.size/2);
  27.  
  28.     len = w2m.call(CP_UTF8, 0, buf, -1, nil, 0, nil, nil);
  29.     ret = "\0" * len
  30.     w2m.call(CP_UTF8, 0, buf, -1, ret, ret.size, nil, nil);
  31.  
  32.     return ret
  33.   end
  34.  
  35.   def s2u!
  36.     self[0, length] = s2u
  37.   end  
  38.  
  39.   def u2s!
  40.     self[0, length] = u2s
  41.   end
  42.  
  43. end
  44.  
  45. class Bitmap
  46.  
  47.   RtlMoveMemory_pi = Win32API.new('kernel32', 'RtlMoveMemory', 'pii', 'i')
  48.   RtlMoveMemory_ip = Win32API.new('kernel32', 'RtlMoveMemory', 'ipi', 'i')
  49.  
  50.   def address
  51.     buffer, ad = "xxxx", object_id * 2 + 16
  52.     RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 8
  53.     RtlMoveMemory_pi.call(buffer, ad, 4); ad = buffer.unpack("L")[0] + 16
  54.     RtlMoveMemory_pi.call(buffer, ad, 4); return buffer.unpack("L")[0]
  55.   end
  56.  
  57. end
  58.  
  59. class RMFlash
  60.  
  61.         API_NEW                      = Win32API.new("RMFlash", "_new", "piil", "l")
  62.         API_UPDATE            = Win32API.new("RMFlash", "_update", "l", "v")
  63.         API_FREE              = Win32API.new("RMFlash", "_free", "l", "v")
  64.         API_PLAYING     = Win32API.new("RMFlash", "_is_playing", "l", "i")
  65.         API_PAUSE              = Win32API.new("RMFlash", "_pause", "l", "v")
  66.         API_RESUME            = Win32API.new("RMFlash", "_resume", "l", "v")
  67.         API_BACK              = Win32API.new("RMFlash", "_back", "l", "v")
  68.         API_REWIND            = Win32API.new("RMFlash", "_rewind", "l", "v")
  69.         API_FORWARD            = Win32API.new("RMFlash", "_forward", "l", "v")
  70.         API_CURFRAME          = Win32API.new("RMFlash", "_cur_frame", "l", "i")
  71.         API_TOTALFRAME        = Win32API.new("RMFlash", "_total_frames", "l", "i")
  72.         API_GOTOFRAME          = Win32API.new("RMFlash", "_goto_frame", "li", "v")
  73.         API_GETLOOP                  = Win32API.new("RMFlash", "_get_loop", "l", "i")
  74.         API_SETLOOP                  = Win32API.new("RMFlash", "_set_loop", "li", "v")
  75.         API_CLEARALL          = Win32API.new("RMFlash", "_clear_all", "v", "v")
  76.   API_VALID       = Win32API.new("RMFlash", "_valid", "l", "i")
  77.   API_SENDMSG     = Win32API.new("RMFlash", "_send_message", "liii", "l")
  78.  
  79.   CUR_PATH        = Dir.pwd
  80.  
  81.         def self.get_version
  82.         end
  83.  
  84.         def self.clear_all
  85.                 API_CLEARALL.call
  86.         end
  87.  
  88.   def self.load(name, width, height, v = nil)
  89.     new("#{CUR_PATH}/#{name}".u2s, width, height, v)
  90.   end
  91.  
  92.   attr_reader   :valid
  93.  
  94.         def initialize(flash_name, flash_width, flash_height, viewport = nil)
  95.                 [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new(viewport)
  96.                 @sprite.bitmap = Bitmap.new(flash_width, flash_height)
  97.                 @value = API_NEW.call(flash_name, flash_width, flash_height, @sprite.bitmap.address)
  98.                 @loop = API_GETLOOP.call(@value) > 0
  99.     @valid = API_VALID.call(@value) > 0
  100.         end
  101.  
  102.         def viewport
  103.                 @sprite.viewport
  104.         end
  105.  
  106.         def update
  107.                 API_UPDATE.call(@value)
  108.         end
  109.  
  110.         def dispose
  111.                 API_FREE.call(@sprite.bitmap.address)
  112.         end
  113.  
  114.         def playing?
  115.                 API_PLAYING.call(@value) > 0
  116.         end
  117.  
  118.         def pause
  119.                 API_PAUSE.call(@value)
  120.         end
  121.  
  122.         def resume
  123.                 API_RESUME.call(@value)
  124.         end
  125.  
  126.         def back
  127.                 API_BACK.call(@value)
  128.         end
  129.  
  130.         def rewind
  131.                 API_REWIND.call(@value)
  132.         end
  133.  
  134.         def forward
  135.                 API_FORWARD.call(@value)
  136.         end
  137.  
  138.         def current_frame
  139.                 API_CURFRAME.call(@value)
  140.         end
  141.  
  142.         def total_frames
  143.                 API_TOTALFRAME.call(@value)
  144.         end
  145.  
  146.         def goto_frame(goal_frame)
  147.                 API_GOTOFRAME.call(@value, goal_frame)
  148.         end
  149.  
  150.         def x
  151.                 @sprite.x
  152.         end
  153.  
  154.         def x=(v)
  155.                 @sprite.x = v
  156.         end
  157.  
  158.         def y
  159.                 @sprite.y
  160.         end
  161.  
  162.         def y=(v)
  163.                 @sprite.y = v
  164.         end
  165.  
  166.         def z
  167.                 @sprite.z
  168.         end
  169.  
  170.         def z=(v)
  171.                 @sprite.z = v
  172.         end
  173.  
  174.         def width
  175.                 @sprite.bitmap.width
  176.         end
  177.  
  178.         def height
  179.                 @sprite.bitmap.height
  180.         end
  181.  
  182.         def loop?
  183.                 @loop
  184.         end
  185.  
  186.         def loop=(v)
  187.                 if @loop != v
  188.                         @loop = v
  189.                         API_SETLOOP.call(@value, v)
  190.                 end
  191.         end
  192.  
  193.   def msg_to_flash(msg, wParam, lParam)
  194.     return API_SENDMSG.call(@value, msg, wParam, lParam)
  195.   end
  196.  
  197.   #  例
  198.   WM_MOUSEMOVE  = 0x0200
  199.  
  200.   def make_long(a, b)
  201.     return (a & 0xffff ) | (b & 0xffff) << 16
  202.   end
  203.  
  204.   def on_mouse_move(x, y)
  205.     return msg_to_flash(WM_MOUSEMOVE, 0, make_long(x, y))
  206.   end
  207.  
  208. end
  209.  
  210. module Kernel
  211.  
  212.   alias origin_exit exit unless method_defined? :exit
  213.  
  214.   def exit(*args)
  215.     RMFlash.clear_all
  216.     origin_exit(*args)
  217.   end
  218.  
  219. end
  220.  
  221.  
  222. fls = RMFlash.load("2.swf", 320, 240)
  223. fls.loop = 1
  224. while true
  225.         Graphics.update
  226.         Input.update
  227.         fls.update
  228.         break if Input.trigger?(13)
  229. end
  230. fls.dispose
  231.  
  232. exit


LOGO脚本
RUBY 代码复制
  1. #=================================================
  2.  
  3. # ■ Scene_Logo
  4. #-------------------------------------------------
  5. #  处理片头的类。
  6. #=================================================
  7.  
  8. class Scene_Logo
  9.   #-----------------------------------------------
  10.   # ● 主处理
  11.   #-----------------------------------------------
  12.   def main
  13.     # 生成LOGO图形
  14.  
  15.     @sprite = Sprite.new
  16.     @sprite.bitmap = RPG::Cache.picture("logo")
  17.     @sprite.x = 160
  18.     @sprite.y = 120
  19.  
  20.     # 显示计时器
  21.     @show_time=60
  22.     # 执行过渡
  23.     Graphics.transition(20)
  24.     # 主循环
  25.     while @show_time>0 do
  26.       # 刷新游戏画面
  27.       Graphics.update
  28.       # 显示计时器减一
  29.       @show_time -= 1
  30.     end
  31.     # 准备过渡
  32.     Graphics.freeze
  33.     # 释放标题图形
  34.     @sprite.bitmap.dispose
  35.     @sprite.dispose  
  36.     # 执行过渡,过渡到全黑
  37.     Graphics.transition(20)
  38.     # 准备过渡,用于准备过渡到标题画面
  39.     Graphics.freeze  
  40.     # 进入标题画面
  41.     $scene = Scene_Title.new
  42.   end
  43.  
  44. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1