用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 相关文章推荐
php 计划任务 检测用户连接状态
Mar 29 PHP
解析smarty 截取字符串函数 truncate的用法介绍
Jun 20 PHP
服务器变量 $_SERVER 的深入解析
Jul 02 PHP
PHP中的reflection反射机制测试例子
Aug 05 PHP
php中FTP函数ftp_connect、ftp_login与ftp_chmod用法
Nov 18 PHP
php创建无限级树型菜单
Nov 05 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
Mar 14 PHP
php preg_match的匹配不同国家语言实例
Dec 29 PHP
php中的异常和错误浅析
May 03 PHP
Laravel框架执行原生SQL语句及使用paginate分页的方法
Aug 17 PHP
PHP安装memcache扩展的步骤讲解
Feb 14 PHP
PHPStorm2020.1永久激活及下载更新至2020(推荐)
Sep 25 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
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
PHP页面中文乱码分析
2013/10/29 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
使用symfony命令创建项目的方法
2016/03/17 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
php swoft框架实例用法
2020/12/22 PHP
jquery中动态效果小结
2010/12/16 Javascript
js读取json的两种常用方法示例介绍
2014/10/19 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
js添加千分位的实现代码(超简单)
2016/08/01 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
axios 封装上传文件的请求方法
2018/09/26 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
微信小程序点击顶部导航栏切换样式代码实例
2019/11/12 Javascript
微信小程序保存图片到相册权限设置
2020/04/09 Javascript
JS实现躲避粒子小游戏
2020/06/18 Javascript
在vue中使用eslint,配合vscode的操作
2020/11/09 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
Python日志模块logging简介
2015/04/13 Python
在Python上基于Markov链生成伪随机文本的教程
2015/04/17 Python
python实现周期方波信号频谱图
2018/07/21 Python
python 获取url中的参数列表实例
2018/12/18 Python
pandas按行按列遍历Dataframe的几种方式
2019/10/23 Python
Python实现密码薄文件读写操作
2019/12/16 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
倩碧英国官网:Clinique英国
2018/08/10 全球购物
大学生就业推荐信范文
2013/11/29 职场文书
物流合作计划书
2014/01/10 职场文书
教师现实表现材料
2014/02/14 职场文书
社区敬老月活动实施方案
2014/02/17 职场文书
慈善晚会策划方案
2014/05/14 职场文书
阳光体育活动实施方案
2014/05/25 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
民主评议党员自我鉴定
2014/10/21 职场文书