之前写过一篇关于OFC的Blog,但没说清楚具体怎么编译,最近有朋友问到就再Blog一篇,希望对大家有所帮助。参见:http://www.hooto.com/home/guangmean/blog/archives/5159.html
编译Open Flash Chart II最新版本,系统环境:Linux + Flex_Builder_for_Linux + Eclipse。
1.下载OFC最新版本源码http://teethgrinder.co.uk/open-flash-chart-2/downloads.php(这里下载的是Version 2 Lug Wyrm Charmer (28th,July 2009) )。
2.下载FlashDevelop http://www.flashdevelop.org/community/viewforum.php?f=11 因在ofc中引用了FlashDevelop里的2个包:org和mx (这里为FlashDevelop-3.0.6-RTM.exe)。
3.在Eclipse中新建一ActionScript项目,并命名为open_flash_chart(可自定义名称),然后导入Open Flash Chart的AS源码,该源码位于:open-flash-chart-2-Lug-Wyrm-Charmer/open-flash-chart文件夹下,同时导入FlashDevelop里的org包、mx包到改项目中。
4.下载中文字体Simsun.ttf,同样导入到open_flash_chart目录里。
5.下载Base64Encoder编码解码类,OFC里自带的Base64Encoder.as有问题,会导致编译时产生1162错误(Function does not have a body),下载后直接覆盖open_flash_chart/mx/utils/Base64Encoder.as即可,下载地址:http://opensource.adobe.com/svn/opensource/flex/sdk/trunk/frameworks/projects/framework/src/mx/utils/Base64Encoder.as。
6.嵌入我们的中文字体,共两处:
第一处:open_flash_chart/elements/axis/XAxisLabels.as 找到源码中这一行: [Embed(systemFont = 'Arial', fontName = 'spArial', mimeType = 'application/x-font')] 注释掉该行并在下一行加入:[Embed(source = '/home/guangmean/workspace/open_flash_chart/simsun.ttf', fontFamily = 'SimSun')]
第二处:open_flash_chart/elements/labels/YLegendBase.as 找到源码中这一行: [Embed(systemFont = 'Arial', fontName = 'spArial', mimeType = 'application/x-font')] 同上,注释掉该行并在下一行加入:[Embed(source = '/home/guangmean/workspace/open_flash_chart/simsun.ttf', fontFamily = 'SimSun')]
7.经过步骤6我们就已经导入了中文字体,但是现在的X坐标中的中文还不会旋转(表现为X坐标的值都不见了)。为此我们还需要再次修改第6步中的XAxisLabels.as和YLegendBase.as源代码:将XAxisLabels.as中make_label()方法里的fmt.font = "spArial"改为fmt.font = "SimSun",YLegendBase.as文件一样。
以下为可选步骤:
8.修改open_flash_chart/Loading.as文件,将dots:Number调整为一个合适的整数,spin.graphics.drawCircle(x,y,3)中的数字3可自行调整,调整后的效果就是Loading data...后的加载圆圈变漂亮了(原理很简单,根据三角函数和圆周率调整轨迹)。
9.修改open_flash_chart.as文件this.load_external_file(file);的上一行:var file:String = "../../data-files/*.txt";将"../../data-files/*.txt"替换为一个合适文件路径(这样做的目的是防止Web应用时ofc在获取数据失败是可以到你指定的地方读取默认数据,改善用户体验)。
10.Error # 2032 with https in IE(Test under IE6 IE7),参考:http://forums.codecharge.com/posts.php?post_id=97771
header("Cache-Control: cache, must-revalidate");
header("Pragma: public");
OK!!! 打完收工
效果如下(分别旋转正负45度角):
2010-03-05 17:35:07
Views(4581)
Tags:
Comments
楼主要是能直接放出一个编译好的,那该多好啊。
呵呵,主要是因为这个系统只能上传图片,自己又没有空间,所以...
哪里下Simsun.ttf??
楼主,按照你的方法编译后不好使,直接去显示../../data-files/*.txt了,flash我是门外汉,恳请楼主发我一份,谢谢,liuspring315@gmail.com
字体可以从这里下:http://cid-b15909c1710febfa.skydrive.live.com/self.aspx/.Public/auto/simsun.ttf
../../data-files/*.txt这个路径其实是相对于Web服务器根目录的 swf已发,请查收!
swf已收到,再次感谢楼主,足有6.7M,着实吓了一跳,请问楼主是什么使swf这么大了呢?这是不是定会使用户体验大大折扣?
恩,这确实是个问题! 因为强制把simsun.ttf字体编译进swf了,所以体积暴增。下载的字体就有10M左右!我的环境主要是在局域网内,所以没有用户体验方面的瓶颈,外部网络环境的话还是有一定影响的
楼主swf也给我发一份吧deepswamp@msn.com
邮件已发送,其它还有需要的朋友暂时可以从下面的地址下载(谢谢大家的关注):
https://sourceforge.net/projects/flexcharts/files/open_flash_chart.swf.zip/download
有没有其他变通的方式解决中文字体旋转的问题呢?
[Embed(systemFont='Arial', fontName='spArial', mimeType='application/x-font')] 原来这种写法是使用的操作系统中的字体?
呵呵,方法应该是有的,只是自己暂时还没有找到更完美的解决方法,没有过多的去研究! 谁有更好的方法可以一起分享下
对,默认的是使用系统自带的字体宋体(Arial)
请问知道怎么打印吗,1.0都可以,现在的怎么不行了呢,谢谢
打印功能也没有接触,也没用过1.0的呢 :)
用google的google Droid sans Fallback字体(3M)用于手机的体积应该会小很多。
明天试试:)
为什么我编译以后坐标反而不显示了呢,编译也没有报错,请求指点,qq:88607438
对啊 用你噶的swf 图都不显示了。。。
谢谢楼主 你太帅了
给我一份403289521@qq.com 谢谢!!!
照你说的方法试的,但是还是编译不了.我在Flex中使用 能不能把.swf文件编译成.swc文件
qq 252122722
https://sourceforge.net/projects/flexcharts/files/open_flash_chart.swf.zip/download
在这里下载了wsf,但运用到项目中页面显示读取数据失败2032,请求指点,QQ349249297
请楼主帮助啊 急需啊。。。
swf确实好用了
另外我想问的是,如果要是换了别的中文字体也会这么大吗??
为啥原来的swf文件用的那个Arial就没有那么大呢?
麻烦楼主swf也给我发一份吧yong269@yahoo.cn
麻烦楼主发份,编译好的给我 383335636@qq.com
我java WEB项目中用楼主这方法不行阿。不知有人遇到过没?
xy轴不显示,但是从数据库查询得到的数据放到值上可以显示中文,自己在程序中处理的也不行。
283897476@qq.com楼主,发一个,谢谢哈
楼主有没有遇到这种情况,修改支持中文旋转后x_label的字体大小就不能修改了
$x_labels->set_size(14);
我怎么替换掉还不行啊,楼主帮帮忙啊,救急啊。QQ:332924151 email:pttaag@126.com