网站首页 > 资源文章 正文
Flash 动画在现代浏览器环境下虽然没有生存空间了,但是作为桌面软件的动画控件还是有些剩余价值的。现在系统已不再自带 Flash 控件。如果说让你的软件用户自己去找旧版本控件再啃着上万字的教程自己摸索复活 Flash 播放器 - 先不说别人有没有这个耐心,单单是修改版的控件加安装时跳出来的管理权限警告、或者冷不丁蹦出来的弹窗广告估计就能把别人吓跑了。
下面我介绍一个更简单复活 Flash 播放器的方法,用打包后只有 3MB 的 WebKit(WKE) 内核浏览器组件嵌入 Flash 插件(绿色免安装),可以生成独立 EXE 文件,兼容 com.flash 的接口。
这里我们需要用到 web.kit 扩展库里的 web.kit.flash ,先看个简单的例子:
import win.ui;
/*DSG{{*/
var winform = win.form(text="web.kit.flash 动画")
/*}}*/
import web.kit.flash;
var flash = web.kit.flash( winform );
winform.show();
//导出函数给 Flash
flash.external = {
func = function(){}
}
//指定初始化属性,建议在指定 movie 属性以前指定
flash.bgcolor = "transparent";
flash.wMode = "transparent";
flash.flashVars = {a="v1",b="v2"};
//修改此属性或调用 render() 函数才会打开 Flash 动画。
flash.movie = "https://update.aardio.com/v10.files/demo/transparent.swf";
//调用 Flash 控件函数
var flashVersion = flash.getVariable("$version")
winform.msgbox("Flash 版本:" + flashVersion)
//如下调用 Flash 导出的函数
/*
flash.xcall("Flash导出函数名",任意个调用参数)
flash.Flash导出函数名(任意个调用参数)
*/
win.loopMessage();
上面就是一个桌面软件的完整代码,在 aardio 里新建一个空白工程,把上面的代码复制到 main.aardio 中,然后按「发布」按钮就可以生成独立 EXE 文件了。
要注意用浏览器控件播放 Flash ,那么 Flash 的地址必须传入通过 HTTP 服务器访问的网址。如果你要打开本地文件,这在 aardio 中非常容易,一句代码就可以搞定,如下:
import wsock.tcp.simpleHttpServer;
flash.movie = wsock.tcp.simpleHttpServer.startUrl("/res/test.swf");
"/res/test.swf" 是加入 aardio 工程目录的文件,"/res/"可以是嵌入EXE的资源目录。不需要改动任何代码,aardio 会自动支持内存加载这个 "/res/test.swf" 文件,可以生成独立 EXE,可以在运行时自动创建 HTTP 服务端并分配访问这个文件的网址 —— 并且 HTTP 服务端自动获取空闲端口( 不会出现端口冲突 )。
wsock.tcp.asynHttpServer 也能创建嵌入式 HTTP 服务器,区别是 wsock.tcp.asynHttpServer 是单线程异步服务器,而 wsock.tcp.simpleHttpServer 是多线程服务器。
在 aardio 中你可以用任何内存数据虚拟一个通过 HTTP 访问的文件地址,例如 com.cube3 扩展库就是这样做的:
import wsock.tcp.asynHttpServer;
httpServer = wsock.tcp.asynHttpServer();
httpServer.run({
["/cube3.swf"] = #34;~\lib\com\cube3\.res\cube3.swf"
});
flash.movie = httpServer.getUrl("/cube3.swf");
上面的代码就是通过嵌入 HTTP 服务器虚拟的文件网址访问内存中的 swf 数据(请注意在文件路径前面加上 $ 就会将该文件的内容编译到程序中并返回二进制字符串)。
扩展库 com.cube3 是一个魔方公式转动画的组件,这个扩展库原来是使用 com.flash 实现,我们现在使用 web.kit.flash 复活了这个扩展库,com.cube3 的完整源码如下:
import web.kit.flash;
import wsock.tcp.asynHttpServer;
import string.conv;
namespace com;
class cube3{
ctor( winform,param ){
this = ..web.kit.flash(winform);
};
start = function(param){
if(param){
var fm = function(move){
if(!#move) return;
move = ..string.conv.fromWide( move );
move = ..string.replace(move,"\n","\\n");
move = ..string.replace(move,'\t',' ') ;
return move;
}
param.initmove = fm(param.initmove);
param.move = fm( param.move );
param.speed = param.speed;
param.mirror = param.mirror;
this.flashVars = param;
}
this.movie = httpServer.getUrl("/cube3.swf");
}
}
namespace cube3{
httpServer = ..wsock.tcp.asynHttpServer();
httpServer.run({
["/cube3.swf"] = #34;~\lib\com\cube3\.res\cube3.swf"
});
}
看下调用 com.cube3 的运行效果:
在 aardio 扩展库管理器中双击 com.cube3 扩展库可以打开上面的范例源代码。
猜你喜欢
- 2024-12-03 IE浏览器Flash插件怎么启用
- 2024-12-03 FLASH动画在网站设计中已经被逐步替换
- 2024-12-03 「咻动画」二维动画制作与flash 动画制作之间的关系
- 2024-12-03 WPS的PPT中swf文件不能播放的解决办法
- 2024-12-03 如何在PPT中插入flash影片?三种方法可以实现(一)
- 2024-12-03 什么?你以为MG、Flash、AN、AE是一个玩意儿?
- 2024-12-03 大话西游2:这些经典的flash动画,你还记得多少?
- 2024-12-03 flash动画——文字变形 #信息技术
- 2024-12-03 Adobe Flash Player 14.0.0.145 正式版下载
- 2024-12-03 Flash 大限将至,但你还可以在这个网站玩到 4 万个 Flash 小游戏
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)