|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
建议大家买一本书,而不光是在网上看一些零碎的资料,一本书毕竟会讲的系统一些,全面一些,而且印刷的书不受电脑的限制,但是建议在看书的时候最好旁边有电脑,这样可以很及时地上机实践。 让咱们烤点甜饼(做饼图)
胜利地装置了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的更多信息 然后大吼:别人可以,我为什么就不可以?(是不是有点阎罗教练的味道,默默的确是电影看多了,抽嘴巴是会痛的,各位其实明白这个道理了就行了) |
|