aardio 官方社区

用户名  找回密码
 注册会员

QQ登录

只需一步,快速开始

帖子
查看: 21044|回复: 0

嵌入open flash chart 图表组件

[复制链接]

166

主题

2154

回帖

1万

积分

管理员

积分
13056
发表于 2014-11-27 21:46:37 | 显示全部楼层 |阅读模式
open flash chart 是一个开源(LGPL许可)、免费的Flash图表组件。
此范例演示了直接嵌入flash控件 - aardio代码如何类似JS那样与Flash交互调用。
ofc.jpg

  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="正在下载open-flash-chart.swf";right=511;bottom=352;parent=...)
  4. winform.add(
  5. btn_xcall={cls="button";text="重新加载图表";left=217;top=313;right=394;bottom=340;db=1;dr=1;z=3};
  6. btnScreen={cls="button";text="全屏";left=403;top=314;right=491;bottom=341;db=1;dr=1;z=2};
  7. flashBox={cls="custom";left=19;top=16;right=488;bottom=303;db=1;dl=1;dr=1;dt=1;edge=1;z=1}
  8. )
  9. /*}}*/

  10. //创建控件
  11. import com.flash;
  12. var flash = com.flash( winform.flashBox );

  13. import web.json;
  14. var chartData = { //定义报表数据
  15.     bg_colour = "#000000";
  16.     elements = {
  17.         {
  18.             ["alpha"] = 0.6;
  19.             ["ani-mate"] = 0;
  20.             ["border"] = 2;
  21.             ["colours"] = {
  22.                 "#d01f3c";
  23.                 "#356aa0";
  24.                 "#C79810"
  25.             };
  26.             ["start-angle"] = 35;
  27.             ["type"] = "pie";
  28.             ["values"] = {
  29.                 2;
  30.                 3; {
  31.                     ["label"] = "hello (#val#)";
  32.                     ["on-click"] = "on_click_pie"; //http:协议前缀则为网址,也可以使用flash.external里的函数名
  33.                     ["tip"] = "99 bottles of beer";
  34.                     ["value"] = 65
  35.                 }; {
  36.                     ["on-click"] = "my_function";
  37.                     ["value"] = 65
  38.                 }
  39.             }
  40.         }
  41.     };
  42.     title = {
  43.         style = "{font-size: 30px;}";
  44.         text = "Pie for you sir?"
  45.     }
  46. }

  47. //导出接口函数给FLASH里的AS脚本
  48. flash.external = {
  49.     open_flash_chart_data = function(){
  50.         return web.json.stringify(chartData); //open-flash-chart默认调用此函数加载JSON格式的报表数据
  51.     }
  52.     ofc_ready = function(){
  53.         winform.text = "aardio嵌入open-flash-chart报表演示";
  54.     }
  55.     ofc_resize = function(left,width,top,height){
  56.    
  57.     }       
  58.     save_image = function(){
  59.         import crypt.bin;
  60.         import fsys.dlg;
  61.         var bin = flash.xcall("get_img_binary");
  62.         if(!bin) return;
  63.         
  64.         import web.script;
  65.         bin = web.script().Eval('"' + bin + '"' );//移除掉JS语法的转义符
  66.         var bin = crypt.bin.decodeBase64(bin);
  67.    
  68.         var path = fsys.dlg.save("*.png|*.png||","报表另存为",,winform.hwnd)
  69.         if(path) string.save(path,bin)
  70.     }
  71.     on_click_pie = function( _x ){
  72.         winform.msgbox("响应点击")
  73.     }        
  74. }  

  75. import inet.url;
  76. flash.parameters = {
  77.     save_image_message = "另存为图像"; //这是设置初始化参数,也就是flashVars
  78. }

  79. //打开swf文件
  80. flash.movie = "http://update.aardio.com/aardio/samples/open-flash-chart.swf";
  81. flash.play();

  82. winform.btn_xcall.oncommand = function(id,event){
  83.     flash.xcall("load",  web.json.stringify(chartData) ); //调用FLASH里的AS脚本中用ExternalInterface.addCallback导出的接口函数
  84.     //flash.xcall("reload",url)
  85.     //flash.xcall("post_image",url,callback,debug)
  86. }

  87. winform.btnScreen.oncommand = function(id,event){
  88.     winform.flashBox.fullscreen(true);
  89. }

  90. winform.show(true)
  91. win.loopMessage();

复制代码

评分

参与人数 6 +106 收起 理由
奔牛软件 + 5
pfl13890247208 + 1
air_fans + 20 很给力!
哟哟 + 30 很给力!
leisurely + 30 神马都是浮云
CP3 + 20 很给力!

查看全部评分

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

本版积分规则

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

GMT+8, 2025-6-8 03:07 , Processed in 0.069288 second(s), 30 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

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