トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   サーバ関連【CGI・FCS・XMLSocket etc】
     棒グラフ作成について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
suira
Åê¹ÆNo.30854
投稿日時: 2006-12-17 17:37
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004,Flash 8
棒グラフ作成について
過去のログで、個別棒グラフ作成するものを見つけたのですが、
棒グラフのデータをActionScriptに直接書き込むのではなく、XMLファイルから読み込んで棒グラフにする方法はどうすれば宜しいのでしょうか。
XMLファイルのデータロードのスクリプトを書き込んでみましたが上手くいきません。
何か良い解決方法がありましたらお願い致します。

過去のログにあったソースは以下になります。

VAL_PER_LINEWIDTH = 1;
ITM_NAME = 0;
ITM_QTY = 1;
ITM_CLR = 2;
V_ITM_POS = 36.5;
V_ITM_MV = 78.5;
BAR_STEP = 10;
mc_item._visible = false;
function disp_item() {
var item_num = xml_data.firstChild.childNodes.length;
var i = 0;
var mcName = "mc_item";
var clr = 0x00;
for (i=0; i<item_num; i++) { // 扱うノードを変数にセット
var NodeData = xml_data.firstChild.childNodes[i]; // 複製するクリップの名前を作成
mcName = "mc_item"+i; // mcLine = "mc_sector"+i;
this[mcName] = createBar(this, mcName, i); //mc_item.duplicateMovieClip(mcName, 100+i);
//mc_sector.duplicateMovieClip(mcName, 100+i);
// カラーオブジェクトを作成
var clr_obj = new Color(this[mcName]); // 複製したオブジェクトのプロパティを設定
this[mcName]._y = V_ITM_POS+(V_ITM_MV*i);
this[mcName]._x = 50; //this[mcName].txt_no = i+1;
//this[mcName].txt_genre = NodeData.childNodes[ITM_GENRE].firstChild.nodeValue;
//this[mcName].txt_code = NodeData.childNodes[ITM_CODE].firstChild.nodeValue;
this[mcName].txt_name.text = NodeData.childNodes[ITM_NAME].firstChild.nodeValue;
//this[mcName].txt_chosya = NodeData.childNodes[ITM_CHOSYA].firstChild.nodeValue;
//this[mcName].txt_syupan = NodeData.childNodes[ITM_SYUPAN].firstChild.nodeValue;
this[mcName].txt_value.text = NodeData.childNodes[ITM_QTY].firstChild.nodeValue;
var val = NodeData.childNodes[ITM_QTY].firstChild.nodeValue; //変更
var bar = this[mcName].bar;
bar.BAR_WIDTH = val*VAL_PER_LINEWIDTH;
bar.barStep = BAR_STEP;
bar.onEnterFrame = function() {
this._width += this.barStep;
if (this._width>=this.BAR_WIDTH) {
delete this.onEnterFrame;
}
}; //変更
clr = parseInt(NodeData.childNodes[ITM_CLR].firstChild.nodeValue, 16);
clr_obj.setRGB(clr); } // ラインのサイズを変更
//mc_v_line._height = (V_ITM_MV*item_num);
}
var xmStr = "<data><item><name>Mac mini</name><val>250</val><col>FF6699</col></item>";
xmStr += "<item><name>IPod shuffle</name><val>400</val><col>3399FF</col></item></data>";
var xml_data = new XML(xmStr);
function createBar(stage, name, depth) {
var m = stage.createEmptyMovieClip(name, depth);
var tf = new TextFormat();
tf.size = 18;
m.createTextField("txt_name", 1, 0, 0, 200, 24);
m.createTextField("txt_value", 2, 0, 24, 50, 24);
m.txt_name.setNewTextFormat(tf);
m.txt_value.setNewTextFormat(tf);
var bar = m.createEmptyMovieClip("bar", 3);
bar._x = 50;
bar._y = 24;
bar.beginFill(0x000000, 100);
bar.lineTo(0, 18);
bar.lineTo(1, 18);
bar.lineTo(1, 0);
bar.endFill();
return m;
}disp_item();
じぇぇ
Åê¹ÆNo.30855
投稿日時: 2006-12-17 18:08
新米
居住地: 東京都帰宅
投稿: 13
使用環境:
WinXP,Flash 8 Pro
Re: 棒グラフ作成について
suira さん はじめまして。

引用:

suiraさんは書きました:
過去のログで、個別棒グラフ作成するものを見つけたのですが、
棒グラフのデータをActionScriptに直接書き込むのではなく、XMLファイルから読み込んで棒グラフにする方法はどうすれば宜しいのでしょうか。
XMLファイルのデータロードのスクリプトを書き込んでみましたが上手くいきません。
何か良い解決方法がありましたらお願い致します。

過去のログにあったソースは以下になります。



過去ログにあったソースよりも、自分のソースを乗せないと
こちらとしても、どこを間違えていたのか等の指摘のしようがありません
suira
Åê¹ÆNo.30858
投稿日時: 2006-12-17 20:19
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004,Flash 8
Re: 棒グラフ作成について
引用:

じぇぇさんは書きました:
過去ログにあったソースよりも、自分のソースを乗せないと
こちらとしても、どこを間違えていたのか等の指摘のしようがありません


じぇぇさん初めまして、返信有難うございます。
すみませんでした。一応、XMLデータを読み込むことは出来るのですが、過去データのように動かしたかったのでそちらを載せてしまいました。

以下がXML読み込みの方を作成したデータになります。
グラフ自体は出来ているのですが、動かすにはどのスクリプトで組み合わせていいのか分からなくなってしまいました。
出来れば、過去データの方を基準として作りたいと思っているのですが…

System.useCodepage = true;
data_xml = new XML();
data_xml.onLoad = renderImages;
data_xml.load("testdat.xml");
data_xml.ignoreWhite = true;
function renderImages(success) {
if (success == true) {
rootNode = data_xml.firstChild;
osNode = rootNode.firstChild;
v_y = 40;
//
for (i=0; i<rootNode.childNodes.length; i++) {
for (j=0; j<osNode.childNodes.length; j++) {
var v_name = osNode.childNodes[j].nodeName;
var v_value = osNode.childNodes[j].firstChild.nodeValue;
if (v_name == "item_name") {
if (i == 0) {
v_name1 = v_value;
} else if (i == 1) {
v_name2 = v_value;
} else if (i == 2) {
v_name3 = v_value;
}
}
if (v_name == "item_comment") {
if (i == 0) {
v_desc1 = v_value;
} else if (i == 1) {
v_desc2 = v_value;
} else if (i == 2) {
v_desc3 = v_value;
}
}
if (v_name == "item_value") {
switch (i%3) {
case 1 :
v_color = 0x0000ff;
break;
case 2 :
v_color = 0x00ff00;
break;
default :
v_color = 0xff0000;
break;
}
drawRect(100, v_y+30*i, v_value*2.0, v_color);
}
}
osNode = osNode.nextSibling;
}
}
}
function drawRect(sx, sy, rate, fillColor) {
height = 5;
beginFill(fillColor, 100);
lineStyle(2, fillColor, 100);
moveTo(sx, sy);
lineTo(sx+rate, sy);
lineTo(sx+rate, sy+height);
lineTo(sx, sy+height);
lineTo(sx, sy);
endFill();
}
じぇぇ
Åê¹ÆNo.30903
投稿日時: 2006-12-19 13:06
新米
居住地: 東京都帰宅
投稿: 13
使用環境:
WinXP,Flash 8 Pro
Re: 棒グラフ作成について
引用:

suiraさんは書きました:
グラフ自体は出来ているのですが、動かすにはどのスクリプトで組み合わせていいのか分からなくなってしまいました。
出来れば、過去データの方を基準として作りたいと思っているのですが…


若干読み違いをしていました。
もし過去のソースを基準に作りたいのであれば、
過去データの disp_item() を少し改造します。(※ XML データが同じ形式の場合)

disp_item(xml_data)
と引数を受け取れるようにします。

XML の onLoad() の後、disp_item(読み込んだXML)
でできると思いますよ
suira
Åê¹ÆNo.31022
投稿日時: 2006-12-23 17:35
新米
居住地:
投稿: 3
使用環境:
WinXP,Flash MX2004,Flash 8
Re: 棒グラフ作成について

無事に出来ました。有難うございます。
ただ、「0」の場合でもグラフが生成されてしまう場合はどうしたらいいのでしょうか…いろいろ弄っても分からず、とりあえずマスクのムービークリップを使うという力技でやってみたのですが。
あと、縦軸と横軸を逆にする方法が分かれば教えていただけると嬉しいです。XとYを書き換えるだけだと出来ないみたいで…

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops