PHP网站制作之用Flash图形化数据(二)
建议大家买一本书,而不光是在网上看一些零碎的资料,一本书毕竟会讲的系统一些,全面一些,而且印刷的书不受电脑的限制,但是建议在看书的时候最好旁边有电脑,这样可以很及时地上机实践。 让咱们烤点甜饼(做饼图)胜利地装置了PHP地Shockwave Flash撑持后,就能够用PHP创立Shockwave文件了。进修的最好办法就是直接跳到法式去,所以上面就让咱们看看法式。第一个文件包含如何利用类的示例代码,同时也显示了若何将一个Flash文件嵌入到HTML文档中。
<?php
// include class needed for flash graph
include("class.pie.flash.php");
mysql_connect ("localhost", "root", "");
$query = "SELECT DISTINCT city_name, COUNT(city_id)
FROM city
GROUP BY city_name;";
$result = mysql_db_query ("hermes",$query);
while ($row = mysql_fetch_array ($result)) {
$city_counts[] = $row["COUNT(city_id)"];
$city_names[] = $row["city_name"];
}
mysql_free_result ($result);
// Instantiate new object
$graph = new flash_pie($city_counts, "http://edu.cnzz.cn/NewsInfo/city.swf");
// set graph title (should not exceed about 25 characters)
$graph->pie_title("City Results", 30);
// set graph legend
$graph->pie_legend($city_names);
// show graph
$graph->show();
// free resources
$graph->close();
?>
<html>
<head>
<meta http=equiv="Expires" content="Fri, Jun 12 1981 08:20:00 GMT">
<meta http=equiv="Pragma" content="no-cache">
<meta http=equiv="Cache-Control" content="no-cache">
<meta http=equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor=white>
<div align=center>
<embed src="http://edu.cnzz.cn/NewsInfo/city.swf" quality=high loop=false pluginspage="http://www.macromedia.com/
shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash"
type="application/x-shockwave-flash" width=600 height=300></embed>
</div>
</body>
</html>
<?php
class flash_pie {
// class variables
// setup some global colors
var $r_arr = array(0.1,1, 0, 1, 0, 1, 0.388235294, 0.4, 0.388235294, 0.929411765);
var $g_arr = array(1, 0, 0, 1, 1, 0, 0.8, 0.4, 0.8, 0.439215686);
var $b_arr = array(0.25, 0, 1, 0, 1, 1, 1, 0.4, 1, 0.043137255);
var $percents;
function flash_pie($values, $this_file) { //begin constructor
// to write out code directly to browser, set content header and use "php://stdout"
//swf_openfile ("php://stdout", 700, 250, 30, 1, 1, 1);
//header("Content-type: application/x-shockwave-flash");
swf_openfile ($this_file, 1000, 450, 30, 1, 1, 1);
// set up viewport for flash movie
swf_ortho2 (-400, 300 , -90, 250);
// choose the font we will use for pie graph
swf_definefont(10, "Mod");
// get sum of array for percents/slices
while(list($key,$val) = each($values)) {
$sum = $sum + $val;
}
for ($i=0; $i<count($values); $i++) {
// calculate how big they need to be and then
// draw all of our slices
if ($i == 0) {
// setup parameters for first slice
$begin = 0;
$val = $values[$i]/$sum;
$end = $val*360;
swf_translate(-200, 0, 0);
} else {
// setup parameters for every other slice
$begin = $end;
$val = $values[$i]/$sum;
$end = $end + $val*360;
}
// function call to add slice
$objID = 1+$i*10;
$this->show_slice($i, $objID, $begin, $end);
// put together percent array for all labels
$this->percents[$i] = round($values[$i]/$sum*100);
}
}//end flash_pie
function show_slice($i, $objID, $begin, $end) {
// draws a slice and places it in our frame
swf_addcolor($this->r_arr[$i], $this->g_arr[$i], $this->b_arr[$i], 1);
swf_startshape($objID);
swf_shapefillsolid(0, 0, 0, 1);
swf_shapearc(0, 0, 100, $begin, $end);
swf_shapecurveto(0, 0, 0, 0);
swf_endshape($objID);
swf_pushmatrix();
swf_placeobject($objID, 1);
swf_popmatrix();
swf_showframe();
}
function pie_legend($labels) {
// draws the legend and labels and places it in our frame
for ($i=0; $i<count($labels); $i++) {
swf_addcolor($this->r_arr[$i], $this->g_arr[$i], $this->b_arr[$i], 1);
swf_definerect($i+1000, 1, 0, 20, 20, 0);
if ($i == 0) {
swf_translate(120, 75, 0);
} else {
swf_translate(0, 20, 0);
}
swf_placeobject($i+1000, 1);
swf_translate(0, 5, 0);
unset($label);
$label = $labels[$i];
$label .= " (";
$label .= $this->percents[$i];
$label .= " percent)";
if ($i==0) {
$width = (swf_textwidth($label)/4)+30;
} else {
$width = round(swf_textwidth($label)/2)+30;
}
$this->pie_text($i-1000, "$label", 15, $width, 0);
swf_translate(-$width, 0, 0);
}
swf_translate($width, 30*count($labels), 0);
}
function pie_text($id, $text, $size, $x, $y) {
// simple function to draw text ($text) at ($x,$y) with font size ($size)
// set color of text to black
swf_addcolor(0,0,0,0);
// set font size and slant
swf_fontsize($size);
swf_fontslant(0);
// define, position and place text in frame
swf_definetext($id, "$text", 1);
swf_translate($x, $y, 0);
swf_placeobject($id, 1);
}
function pie_title($text, $size) {
// simple function to draw title and set lineup
// $text should not exceed about 25 characters
$this->pie_text(99, $text, $size, 0, 150);
swf_translate(0, -300, 0);
}
function show() {
// show the frame
swf_showframe();
}
function close() {
// flush our buffer and return movie
$data = swf_closefile(1);
}
} // end class flash_pie
?>
注重,你可以将生成的SWF文件直接前往到阅读器中,而不用必定要像我一样把它写到一个文件中。这能够对测试来讲是有效的,但你能够很罕用到一个Flash文件,更多的时分你能够想把Flash文件嵌入到HTML文档中。假如你选择直接把Flash文件输入到阅读器中,你可以以下设置header content 类型:
header("Content-type: application/x-shockwave-flash")
并把swf_openfile(filename",...)改成swf_openfile("php://stdout",...)
更多信息的链接:
http://www.php.net/manual/ref.swf.php关于swf_* PHP函数的申明
http://reality.sgi.com/grafica/flash/下载PHP的swf库
http://openswf.org 更多Flash东西和信息
http://www.macromedia.com/software/flash/open/licensing/
关于Macromedia Flash SDK的更多信息 然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了) 微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox支持的不是很好,所以能少用还是少用的好。 当留言板完成的时候,下步可以把做1个单人的blog程序,做为目标, 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。 爱上php,他也会爱上你。 个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎, 说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年具体的记不清啦,囧。 php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。 Apache不是非得用80或者8080端口的,我刚开始安得时候就是80端口老占用,就用了个 81端口,结果照常,就是输localhost的时候,应该输入为 localhost:81 有位前辈曾经跟我说过,phper 至少要掌握200个函数 编起程序来才能顺畅点,那些不熟悉的函数记不住也要一拿手册就能找到。所以建议新手们没事就看看php的手册(至少array函数和string函数是要记牢的)。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 说php的话,首先得提一下数组,开始的时候我是最烦数组的,总是被弄的晕头转向,不过后来呢,我觉得数组里php里最强大的存储方法,所以建议新手们要学好数组。 个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。 首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。 有时候汉字的空格也能导致页面出错,所以在写代码的时候,要输入空格最好用引文模式。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能:
页:
[1]