用Flash图形化数据(一)


Posted in PHP onOctober 09, 2006

by Bryan Mattern  一木 译

SWF和Flash简介
    SWF是Macromedia Flash用来在Internet上向用户传送图片、动画和声音的文件格式。Flash是你能够向用户提供一个丰富的和动态的界面。大约90%的Web用户不用安装浏览器插件就可以浏览SWF内容,超过2亿人下载了Flash播放器。Macromedia在1998年4月公开了SWF规范。在PHP4中加入SWF的支持。
    PHP内建的动态生成图片的能力是一个吸引我的特征。它可以生成看起来更专业更让人舒服的报表和界面。一开始,我用充斥在网上的各种GD代码来创建图片来显示我的不同项目的数据。但我很快就被生成的图片的不确定搞烦了,决定试试看能不能用矢量图形来解决问题。我想你也会同意,结果看起来好多了。如果一个图片能代表一千个词,想象一下一幅Flash动画代表什么?
    我将尽量使这个例子简单一些,只说说基础的东西。我的目的只是创建一个容纳GD生成的GIF和PNG图片的Drog in。你可以加入对它的扩展和增强,比如Flash赖以出名的各种可视效果。例如,你可以制作在载入页面时的图形淡入、飞舞,或者动态的显示几片雪花。你的想象力是对PHP的SWF函数的唯一限制。
    怎样取得需要图形化的数据最好留给读者去练习。因为这篇文章是关于动态创建Flash文件的,我将在例子中使用一个假想的表作为数据集来创建它的图形化视图。你需要检查你的数据,决定采用一种最适合的图表形式。在多数情况下,饼图是一个合适的选择,这也是我的例子要采用的图表形式。折线图、柱状图或者面积图都可以用相似的方式创建。
    在这个例子中,假定我们把一些包裹送到了几个城市,而我们要看看每个城市收到的包裹所占的比例。我们决定把数据存储在数据库“world”的表“city”中。让我们先建立这个表,并输入这个例子需要的数据。

#
# Table structure for table 'city'
#

DROP TABLE IF EXISTS city;
CREATE TABLE city (
   city_id int(14) NOT NULL auto_increment,
   city_name varchar(255) NOT NULL,
   city_timestamp timestamp(14),
   PRIMARY KEY (city_id)
);

#
# Dumping data for table 'city'
#

INSERT INTO city VALUES( '1', 'London', '20000917122625');
INSERT INTO city VALUES( '2', 'London', '20000917122626');
INSERT INTO city VALUES( '3', 'London', '20000917122626');
INSERT INTO city VALUES( '4', 'London', '20000917122627');
INSERT INTO city VALUES( '5', 'Paris', '20000917122631');
INSERT INTO city VALUES( '6', 'Paris', '20000917122632');
INSERT INTO city VALUES( '7', 'New York', '20000917122644');
INSERT INTO city VALUES( '8', 'New York', '20000917122645');
INSERT INTO city VALUES( '9', 'New York', '20000917122646');
INSERT INTO city VALUES( '10', 'New York', '20000917122646');
INSERT INTO city VALUES( '11', 'New York', '20000917122647');
INSERT INTO city VALUES( '12', 'Hong Kong', '20000917122654');

配置你的系统以使用SWF
    我用的环境是RedHat Linux6.2, Apache 1.3.12, PHP 4.0.2(编译为Apache模块)。如果你在Windows中使用PHP,事情会有些不同。你需要下载或者编译一个Flash Dll,但是不需要修改代码。
    PHP通过Paul Haeberli的libswf模块来提供创建Shockwave Flash 文件的能力。你需要从http://reality.sgi.com/grafica/flash/下载libswf。然后,你需要使用选项--with-swf[=DIR]来配置PHP,这里DIR是include和lib目录所在的目录。include目录下必须有swf.h文件,而lib目录下必须有libswf.a文件。当解压缩下载的libswf发布版本的时候,这两个文件会被解压缩到同一个目录。你需要把这两个文件移到正确的位置。完成后,目录结构应该像下面的样子:

    /usr/local/swf/
        /include/
            swf.h
        /lib/
            libswf.a
        /fonts
    ...

    为了使SWF函数能正常工作,你需要复制/usr/local/swf/fonts/目录,以便web服务器能访问该目录(对apache和mod_php来说,最好的办法就是使用绝对路径,并把以上目录复制到apache的文档根目录下。)另外,在libswf的发布版本中有一个很小的c程序,能够把类型1的字体转换成Flash能用的字体。
    因为我们要动态地创建和写SWF文件,所以web服务器需要在存储文件的目录有写权限。

PHP 相关文章推荐
用函数读出数据表内容放入二维数组
Oct 09 PHP
基于mysql的论坛(1)
Oct 09 PHP
WindowsXP中快速配置Apache+PHP5+Mysql
Jun 05 PHP
让的PHP代码飞起来的40条小技巧(提升php效率)
Apr 12 PHP
php模板中出现空行解决方法
Mar 08 PHP
PHP APC的安装与使用详解
Jun 13 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
Mar 19 PHP
ThinkPHP之R方法实例详解
Jun 20 PHP
php结合ACCESS的跨库查询功能
Jun 12 PHP
php通过淘宝API查询IP地址归属等信息
Dec 25 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
Aug 23 PHP
YII2框架中behavior行为的理解与使用方法示例
Mar 13 PHP
PHP中Session的概念
Oct 09 #PHP
虚拟主机中对PHP的特殊设置
Oct 09 #PHP
用Flash图形化数据(二)
Oct 09 #PHP
用php来检测proxy
Oct 09 #PHP
如何将一个表单同时提交到两个地方处理
Oct 09 #PHP
PHP制作图型计数器的例子
Oct 09 #PHP
多php服务器实现多session并发运行
Oct 09 #PHP
You might like
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
php curl 上传文件代码实例
2015/04/27 PHP
Laravel框架实现的记录SQL日志功能示例
2018/06/19 PHP
Laravel (Lumen) 解决JWT-Auth刷新token的问题
2019/10/24 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
2019/10/30 PHP
js中几种去掉字串左右空格的方法
2006/12/25 Javascript
延时重复执行函数 lLoopRun.js
2007/05/08 Javascript
Javascript 的addEventListener()及attachEvent()区别分析
2009/05/21 Javascript
JavaScript 变量命名规则
2009/09/23 Javascript
单击浏览器右上角的X关闭窗口弹出提示的小例子
2013/06/12 Javascript
jquery控制页面的展开和隐藏实现方法(推荐)
2016/10/15 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
2016/11/15 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
Node解决简单重复问题系列之Excel内容的获取
2018/01/02 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
Python continue语句用法实例
2014/03/11 Python
以Flask为例讲解Python的框架的使用方法
2015/04/29 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python Celery多队列配置代码实例
2019/11/22 Python
python集合删除多种方法详解
2020/02/10 Python
Python3实现个位数字和十位数字对调, 其乘积不变
2020/05/03 Python
Python configparser模块操作代码实例
2020/06/08 Python
PyQt5结合matplotlib绘图的实现示例
2020/09/15 Python
Juice Beauty官网:有机美容产品,护肤与化妆品
2020/06/13 全球购物
个人求职简历的自我评价范文
2013/10/09 职场文书
复活读书笔记
2015/06/29 职场文书
中考百日冲刺决心书
2015/09/22 职场文书
解决pytorch读取自制数据集出现过的问题
2021/05/31 Python
react 项目中引入图片的几种方式
2021/06/02 Javascript
Python实现信息轰炸工具(再也不怕说不过别人了)
2021/06/11 Python
Python Pandas解析读写 CSV 文件
2022/04/11 Python
Java时间工具类Date的常用处理方法
2022/05/25 Java/Android