aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 88837|回复: 56

使用 win.flashBox 创建Flash透明窗口(支持内存加载swf)

  [复制链接]

166

主题

2154

回帖

1万

积分

管理员

积分
13056
发表于 2012-12-4 04:13:50 | 显示全部楼层 |阅读模式
标准库中增加 win.flashBox 组件,
用于在桌面上透明显示flash动画,也可以支持让子窗口透明显示flash动画。
可以支持内存加载,可生成独立EXE文件,支持系统自带的flash控件。

与基于商业组件f-in-box的 win.flashInbox扩展库比较:

1、win.flashBox 完全免费、可自由使用。
2、win.flashBox 的体积比f-in-box小很多,仅32KB,也就是一个很小的小图标那么大。
f-in-box对新版flash控件支持不稳定(之前发的范例遇到崩溃规象,最后是打包一个lash8.ocx解决,但这样体积就更大了)
3、win.flashBox 可以让子窗口播放透明flash动画(使用custom控件即可),flash可以在网页以外的控件上面飘来飘去了。

--------------------------------------------------------------
win.flashBox的用法完全兼容 com.flash 的所有接口,
支持aardio与as脚本交互、添加事件等都非常方便,这些请参考原来的flash调用例子。
只要简单的把范例里的 com.flash 几个字替换为 win.flashBox就可以,用法完全一样。
--------------------------------------------------------------


创建透明窗口方法一:
--------------------------------------------------------------
直接使用 win.flashBox 创建窗口。
  1. import win.flashBox
  2. var flash = ..win.flashBox(text="aardio Form";right=599;bottom=399)
  3. flash.movie = "http://update.aardio.com/aardio/samples/transparent.swf";

  4. flash.show()
  5. win.loopMessage();
复制代码


创建透明窗口方法二:
--------------------------------------------------------------
可以在已创建的winform窗口对象上显示透明动画(支持custom控件创建的子窗口)
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="迤明FLASH";right=562;bottom=355;border="dialog frame";parent=...)
  4. winform.add(
  5. button={cls="button";text="button";left=296;top=238;right=488;bottom=301;z=2};
  6. combobox={cls="combobox";left=76;top=51;right=229;bottom=77;edge=1;items={};mode="dropdown";z=3};
  7. edit={cls="edit";text="edit";left=82;top=99;right=493;bottom=222;edge=1;multiline=1;z=4};
  8. flashWnd={cls="custom";text="custom";left=28;top=17;right=538;bottom=333;autosize=1;center=1;edge=1;transparent=1;z=1}
  9. )
  10. /*}}*/

  11. winform.show();

  12. import win.flashBox;
  13. var flash = win.flashBox( winform.flashWnd );
  14. flash.movie = "http://update.aardio.com/aardio/samples/transparent.swf";

  15. win.loopMessage();
复制代码


一个完整的透明FLASH界面示例:点击下载全部源码(含swf文件)


以下是上面示例的完整源码:
import process;;
import win.flashBox;
  
var flash = win.flashBox( text = "FLash透明窗口"  )

// 导出接口函数可供Flash调用
flash.external = {
    close=
function(){ flash._form.close() };
    quit=
function(){ flash._form.close() };
    minimal =
function(){ flash._form.hitmin(); };
    moving =
function(){ flash._form.hitCaption() };
    register =
function(){ process.openUrl("http://bbs.aardio") };
    charge =
function(){ flash._form.msgbox("免费免费了!") };
    repair =
function(){ flash._form.msgbox("修复已完成!") };
    settingr =
function(){ flash._form.msgbox("本功能还没时间写!") } ;
    start  =
function(){ flash.play() };
    resize =
function(param){
        param = string.split(param,
",");
        flash._form.setPos(0,0,param[1],param[2]);
    };
    [
"end"] = function(){
   
        
//调用flash函数设置进度条
        flash.setProgressPart(0);
        flash.setProgressTotal(0);
        
        
var progress = 0;
        flash._form.setInterval(
            10
/*毫秒*/,//定时执行代码
            function(hwnd,msg,id,tick){
                progress++;
                flash.setProgressPart(progress);
                flash.setProgressTotal(progress);
            }
        );
    }
}

flash.show()
//显示窗口
flash.movie = $"\res\movie.swf" //内存加载Flash
win.loopMessage();


评分

参与人数 2 +3 收起 理由
2535163639 + 2 赞一个!
aoyunzdq2008 + 1 神马都是浮云

查看全部评分

166

主题

2154

回帖

1万

积分

管理员

积分
13056
 楼主| 发表于 2012-12-4 04:16:45 | 显示全部楼层
web.kit也可以显示透明flash,可以内存加载flash,或嵌入资源里加载swf文件。
这个是开源且免费的,但是webkit组件比较大,组件本身不能嵌入EXE。
webkit.flash.jpg

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form(text="webkit浏览器简单示例";right=1123;bottom=570;border="none";mode="popup")
  4. winform.add()
  5. /*}}*/

  6. //导入webkit支持库
  7. import web.kit.layeredWindow;
  8. import web.kit.fileSystem; //让flash可以支持内存嵌入资源
  9. var webkit = web.kit.layeredWindow(winform);//创建透明分层窗口

  10. webkit.html = /**
  11. <!doctype html>
  12. <html>
  13. <body>
  14.     <object width="500" height="500" type="application/x-shockwave-flash" data="http://img.pet.qq.com/xuanflash/1024900151.swf">
  15.         <param name="movie" value="http://img.pet.qq.com/xuanflash/1024900151.swf">
  16.         <param name="wmode" value="Transparent">
  17.         <param name="quality" value="high" />
  18.     </object>
  19.    
  20.     <!--注意页面上一定要放一点什么空白的内容,不然透明Flash无法自己绘制背景导致产生重影-->
  21.      
  22. </body>
  23. </html>
  24. **/

  25. winform.wndproc = function(hwnd,message,wParam,lParam){
  26.     if( message == 0x201/*_WM_LBUTTONDOWN*/ )
  27.         winform.close();
  28. }

  29. winform.show();
  30. win.loopMessage();
复制代码
045631xk1nnntyoeczykwk.png

4

主题

17

回帖

142

积分

一级会员

积分
142
发表于 2012-12-4 07:53:49 | 显示全部楼层
多谢Jacen,我正想研究Flash动画

7

主题

293

回帖

1900

积分

新手入门

积分
1900
QQ
发表于 2012-12-4 08:22:32 | 显示全部楼层
努力往懂看。

48

主题

542

回帖

3328

积分

五级会员

积分
3328
发表于 2012-12-4 08:58:53 | 显示全部楼层
4小时前什么概念,夜里4点发的啊,辛苦了

50

主题

226

回帖

1679

积分

荣誉会员

积分
1679
发表于 2012-12-4 09:04:51 | 显示全部楼层
前排学习。感谢!

20

主题

181

回帖

1293

积分

培训班

积分
1293
发表于 2012-12-4 09:08:20 | 显示全部楼层
很是给力,又有新东西了

2

主题

39

回帖

301

积分

培训班

积分
301
发表于 2012-12-4 14:26:49 | 显示全部楼层
真是全心全意为大家啊,十分感谢

13

主题

294

回帖

1790

积分

荣誉会员

积分
1790
发表于 2012-12-4 14:51:11 | 显示全部楼层

  1. import win.flashInBox;

  2. /*去掉试用水印{{*/
  3. import process;
  4. var prcs = process();  
  5. var pDrawDemoAddr = tonumber( win.flashInBox._dll.gethandle()  ) +  0x1000 + 0x25EE0;
  6. prcs.protect(pDrawDemoAddr,0x4/*_PAGE_READWRITE*/,1)
  7. prcs.writeString( pDrawDemoAddr,'\0' )
  8. prcs.free();
  9. /*}}*/


  10. var flash = ..win.flashInBox(  text = "flashInBox 去掉试用水印"  )
  11. flash.show()
  12. flash.putMovie( $"~\example\Flash\testCall.swf")
  13.        
  14. win.loopMessage()
复制代码

8

主题

56

回帖

464

积分

二级会员

积分
464
发表于 2012-12-4 15:11:13 | 显示全部楼层
  参观下!留个记号!谢谢代码分享~

26

主题

76

回帖

649

积分

荣誉会员

积分
649
发表于 2012-12-4 15:25:24 | 显示全部楼层
支持一个,感谢分享~

52

主题

1268

回帖

7276

积分

荣誉会员

积分
7276
发表于 2012-12-4 21:24:12 | 显示全部楼层
强大,支持~ 日后有空学习~

5

主题

18

回帖

257

积分

二级会员

积分
257
发表于 2012-12-5 13:30:30 | 显示全部楼层
强大,支持

7

主题

26

回帖

238

积分

二级会员

积分
238
发表于 2012-12-5 13:42:13 | 显示全部楼层
相当的漂亮

166

主题

2154

回帖

1万

积分

管理员

积分
13056
 楼主| 发表于 2012-12-5 22:50:31 | 显示全部楼层
var flash = ..win.flashInBox(  text = "flashInBox 透明窗口"  )
创建flash对象以后,flash._form 就是一个普通的winform对象,例如关闭窗口就是 flash._form.close();



10

主题

61

回帖

493

积分

新手入门

积分
493
发表于 2012-12-9 20:40:10 | 显示全部楼层
支持一把!

1

主题

12

回帖

101

积分

一级会员

积分
101
发表于 2012-12-13 22:25:01 | 显示全部楼层
看到这么多帖子,我真感觉我找到了这我一直想找的一种语言,或者称之为工具,

1

主题

28

回帖

170

积分

一级会员

积分
170
发表于 2013-1-23 18:27:32 | 显示全部楼层
谢谢啦!哈哈,学习嘛!

0

主题

9

回帖

48

积分

新手入门

积分
48
发表于 2013-1-24 20:49:18 | 显示全部楼层
厉害啊。c++也能这么方便的实现么
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2025-6-13 09:13 , Processed in 0.085929 second(s), 30 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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