ホームページ  >  記事  >  php教程  >  Flashを使用したグラフィックデータ(2)

Flashを使用したグラフィックデータ(2)

WBOY
WBOYオリジナル
2016-06-13 12:40:30969ブラウズ

让我们烤点甜饼(做饼图)
成功地安装了PHP地Shockwave Flash支持后,就可以用PHP创建Shockwave文件了。学习的最好方法就是直接跳到程序去,所以下面就让我们看看程序。第一个文件包括怎样使用类的示例代码,同时也显示了如何将一个Flash文件嵌入到HTML文档中。


// 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, "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();

?>  










type="application/x-shockwave-flash" width=600 height=300>


  




class flash_pie {

// クラス変数

// いくつかのグローバル カラーをセットアップします
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 $パーセント;

function flash_pie($values, $this_file) { //コンストラクターを開始します
// コードをブラウザに直接書き込み、コンテンツ ヘッダーを設定し、「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);

// Flash ムービーのビューポートを設定します
swf_ortho2 (-400, 300 , -90, 250);  

// 円グラフに使用するフォントを選択します
swf_definefont(10, "Mod");

// パーセント/スライスの配列の合計を取得します
while(list($key,$val) = each($values)) {
$sum = $sum $val;  
}

for ($i=0; $i // 必要な大きさを計算し、
// 描画しますすべてのスライス
if ($i == 0) {
// 最初のスライスのパラメータを設定
$begin = 0;
$val = $values[$i]/$sum;
$end = $val*360;
swf_translate(-200, 0, 0);
} else {
// 1 つおきのスライスのパラメータを設定
$begin = $end;
$val = $values[$i]/$sum;
$end = $end $val*360;
}

// スライスを追加する関数呼び出し
$objID = 1 $i*10;
$this->show_slice($i, $objID, $begin, $end);

// すべてのラベルのパーセント配列をまとめます
$this->percents[$i] =round($values[$i]/$sum*100);            
}

} //end flash_pie

function show_slice($i, $objID, $begin, $end) {
// スライスを描画し、フレーム
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) {
// 凡例とラベルを描画し、フレームに配置します
for ($i=0; $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->パーセント[$i];
$label .= " パーセント)";
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) {
// ($x にテキスト ($text) を描画する単純な関数) ,$y) フォント サイズ ($size) を指定します
// テキストの色を黒に設定します
swf_addcolor(0,0,0,0);

// フォント サイズと傾きを設定します
swf_fontsize($size);
swf_fontslant(0);

// フレーム内にテキストを定義、配置、配置します
swf_definetext($id, "$text", 1);
swf_translate($x, $y, 0);
swf_placeobject($id, 1);
}

function pie_title($text, $size) {
// タイトルを描画しラインナップを設定する単純な関数
// $text は約 25 文字を超えてはなりません
$ this->pie_text(99, $text, $size, 0, 150);
swf_translate(0, -300, 0);
}

function show() {
// フレームを表示
swf_showframe();
}


function close() {
// バッファをフラッシュしてムービーを返します
$data = swf_closefile(1);
}

} // クラス flash_pie

?> を終了します。  

注意してください。生成された SWF ファイルは、必ずしもファイルに書き込む必要はなく、直接ユーザーに返すことができます。 1 つの Flash ファイルに使用されることはまれですが、Flash ファイルを HTML テキストに挿入することが考えられる場合もあります。Flash ファイルをブラウザに直接出力することを選択した場合は、ヘッダー コンテンツ タイプを次のように設定できます:
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/

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。