何故かFlash、そしてLoadVars。
♪た〜らこ〜、たぁ〜らこぉ〜、たっぷりた〜らこ〜(ぐるぐるぐる…)
こんにちは、キューピーの曲が頭から離れないあに山です。
最後のオチは明太子だからタイコなんだね…。
「またまた浮気性なんだからーっ、もうっ」と、
うっかり あに山の背中をバンと叩いたあなた。
違います。違いますよー。
父がね、Flashいじってるんです。
そんで、ちょっとお役にたてるかな?…てなもんで
ActionScriptについて、勉強した次第。
( 条件式 ) ? 真の時の実行内容 : 偽の時の実行内容
って式は ternary と言うらしい。そうらしい。
UIあるとやっぱり楽しいよねぇ。
Jakarta POIを用いたExcelファイルの入出力 〜POI HSSFを用いたExcel簡単入出力〜
SWTを勉強する発端は、こっち。
Excelファイル操作をしようとして
ダイアログとか表示したくなって、ズルズルとSWTへ。
いいなぁ、いいなぁ。ドイツでやるでよ。
いいなぁ、いいなぁ。行きたいなぁ。
なんですか、あのー、
Flashって、なんかクセあるよね。
外部テキストデータん中に、FORMのGETん時みたいな値…
key1=value1&key2=value2&key3=value3
…とかって書いておくと、勝手に読み込み時に
変数名keyにvalueが入ったり、
ダイナミックテキスト名keyのtextにvalueが入ったり
するそうですな。
便利は便利なんだけど、普通の外部テキスト読み込む時と
どっかのURLからPOSTやGETされてくる値を読み込む時が
同じ方法ってーのが、意外過ぎて驚いた。
で、もともとGETの時の値を理解している人間はいいんだけど
Flashのサンプルとか見てると、だいたい…
key1=value1
&key2=value2
&key3=value3
…とかって書いてあるから、初めてFlashからいじった人は
「&key って書くと変数が出来る」とかって思い込んじゃうよね、これ。
&は本来、keyとvalueの1セットを繋げる意味があるって
わかんないんじゃないかなぁ…。
あと、FORMの内容って、1つのkeyに対して、2つ以上の値が入る事あるでしょ。
checkboxとか、selectの複数選択とかね。
そういう場合、PHPならkeyの後に[]を追加しておくことで
自動的に 変数key は配列になって、全ての値を取得する事が出来るんだけど。
ここで試しに、…
name=aaa&name=bbb
…と書いて読み込ませてみたら、あっさりaaaは上書きされたのか
bbbとしか表示してくれなかったのでありました。
う"ーん。
それといとも簡単に「インスタンス」って書いてあるのも驚いた(笑)
クラスもあるし、コンストラクタがどーこーって書いてあるし
完全にOOPやんけ。
てな訳で、意外に手強いActionScript。
本格的にいじったら楽しそうだなぁ…とか思いつつも
私はJavaのちょっとした試験を控えているので
それどころではないのであった(笑)
めも。
loadVariables関数を使う。
最近のFlashだと、LoadVarsクラスがあって
それを使うと良いらしい。
onLoadメソッドは、loadVariablesを呼ぶ前に使い、
ファイルの内容が読み込み終わった時の実行内容を設定する。
lv = new LoadVars();
lv.onLoad = function( success ) {
if ( success ) {
// 読込終わった時の実行内容
}
}
lv.loadVariables( "テキストファイル名" );
onLoadのfunctionは、
オリジナル関数を用意してもOKらしい。
lv = new LoadVars();
lv.onLoad = オリジナル関数名();
lv.loadVariables( "テキストファイル名" );
function オリジナル関数名( success ) {
if ( success ) {
// 読込終わった時の実行内容
}
}
テキストファイルの内容が、key=valueの形式でない時や
普通のテキストとして読込たい時には、
loadVariablesではなく、loadを使えばいいらしい。
onLoadでなく、onDataを使うのもポイントっぽい。
lv = new LoadVars();
lv.onData= function( src ) {
splitText = new Array();
splitText = src.split( "\n" );
for ( var i = 0; i < splitText.length; i++ ) {
trace( splitText[i] );
}
}
lv.load( "テキストファイル名" );