Actionscript3.0の勉強でも始めようと思い
Adobe LabsからFlash9 Public Alphaをダウンロード。
ところが、自分で作ったクラスがどうしようと参照できない。
あまりに基本的なことなのでメチャクチャ悩んだあげく、もう止めようと何度も思った。
結局原因は、作業しているディレクトリパスに2バイト文字が含まれているとアウトらしい。
多分英語版だからという事なんだろうけど、気付かないよそんなの。
C:\Documents and Settings\haga\デスクトップ\as3
こんな感じの場所で練習していたのだけれど「デスクトップ」がまずかったらしい。
Dドライブ直下にフォルダを移動したら問題なく動いたよ。
参考:Asファイルの読み込みについて
http://p0t.jp/mt/archives/2006/11/1prompt.html
PHPSPOTでも取り上げられていたpprompt.jsの中身を見てみた。
ちょうど仕事で同じようなもんを作ったというのと、サクーシャのkomagataさんと先日飲む機会があったので。お、知ってる人的な感覚で。
さーっと流してみてprototype.jsの依存をはぶいたってのが偉いなぁと。
静的クラスだから、まだいいんだろうけど、僕の場合、他人が使いやすいようにI/Fは静的クラスにしておいて、中身はシングルトンのクラスインスタンスを持つやり方が多い。よってClass.create()バリバリなのだ・・。PositionとかElementクラス系は便利だけど、わりと簡単なので依存とるのは難しくなさそうだけど。
それとソースがとても綺麗だな。変数名とかシンプルかつ的確。
これってIE標準モードでもOKなのかな?
position:absoluteのheight:100%が効かなくて仕方なく互換モードにした記憶があるんだが。
Posted in
javascript,
programing at 11月 29th, 2006.
2 Comments.
えっとTamarinについて調べていて
ついでにMozillaのDeveloperCenterを見ていたら
興味深いものを発見
XFormsっていう、次世代のフォーム
http://developer.mozilla.org/ja/docs/XForms
「XForms がもたらす強みは、プレゼンテーションからのデータの分離と強力なデータタイプ、名前/値の組の代わりにサーバに XML データを提出する能力、さまざまなデバイスにそれらを表示できるようにフォームを作成する説明的な方法です」
かなり魅力的な文言。
で、中をちらちら見ていたら、やっぱりあった!
ラジオボタンおかしくね?と思っていた僕のストレスをすっきりさせるサンプルが。
http://xformsinstitute.com/essentials/browse/ch06.php#ch06-2-fm2xml
もうね。ラジオがセレクト要素になってますよ、はい。
当然だよね。そりゃXHTMLがばかばかしくもなりますよ。
世の中の人がんばってるなぁ。
もう28だけど、もっとコアな開発者になりたいですよ、はい。
–
あ、だんだん自分の勉強したいものが移行してきた。
まずJavaScript
で、ActionScript3
この辺はECMA系なので、TamarinやApoloを考えても
全然将来食える言語だ。外せまい。
で、勉強というか
CVSが使えるようになりたい。効率的に開発したいので。
XUL勉強したい。FireFoxのアドオン作りたいので。
XSLT勉強したい。HTML書きたくないので。
wiki勉強したい。オントロジーまってられないので。
wikiは結城氏のサイトにyukiwiki miniっていう200行くらいの勉強用ソースコードがあったので見てみるよ。perlわかんないけど。
Posted in
programing,
XHTML/CSS2 at 11月 22nd, 2006.
No Comments.
コーディングしてて、ちょっと疑問
一般にINPUT要素にはLABEL要素をつける
<label for="myText" >お名前</label>
<input type="text" />
みたいな。
でも、ラジオボタンとチェックボックスだと
○男
○女
<p>
<input type="radio" name="sex" id="mail" />
<label for="mail" >男</label>
</p>
<p>
<input type="radio" name="sex" id="femail" />
<label for="femail" >女</label>
</p>
見たいにするのが当然だけど
性別
○男
○女
みたいな表記にする場合の「性別」は何にすればいいの?
感覚的には「お名前」と同列であるのでLABELとしたいのだけど、そうするとRADIOにはLABELが二つになっちゃうし・・。
http://www.kanzaki.com/docs/html/htminfo33.html
ここ見ても、ラジオのタイトルには特に明示的なあれはない。
FIELDSET LEGENDはもうちょっと上のレベルの表現だし。
だいたいLEGENDはIE6で全然制御できないから、使ってない。
本来はこうあるべきなんじゃまいか?
<form>
<label for="myRadio">性別</label>
<select type="radio" id="myRadio">
<option>男</option>
<option>女</option>
</select>
</form>
Posted in
programing,
XHTML/CSS2 at 11月 21st, 2006.
No Comments.
CSSで角丸ボックスを作るという
もうやりつくされた事をゼロから作ってみた。
僕は基本的にデザインだけのためのソースコードは
嫌いなんだけど、まぁクライアントにやれといわれればやります。
クライアントが白といえば、黒だって絹のような純白です。
CSSによる透過PNG角丸ボックス サンプル
CSSによる透過PNG角丸ボックス ZIPファイル
ポイントは透過PNGを使えるので、どんな背景が来ても気にしない気にしない、ということと
IE6にも対応可という事。
Radius というクラスパッケージはradius.cssに記述されているので
それを継承すれば、いろんな色の角丸ボックスが作れます。
サンプルはradius_blue.cssという継承クラスを用意してみました。
HTMLはこんな感じです。
角丸を表現するためにblockHeaderとblockFooterというクラスを持ったDIV要素を作ります。
Read More…
Posted in
programing,
XHTML/CSS2 at 11月 21st, 2006.
No Comments.
ちょっとFlashではまったので、メモしておくよ。
文字列からクラスインスタンスをダイナミックに生成する際
Function.applyを使いたいと思ったんだけど
うまく行かなかったので、いろいろ試してみた。
わかりやすいように、「String」クラスの例だが
実際には[mypackage.MyClass]などでやるのが普通だろう。
そういう場合は、最初に
mypackage.MyClass;
として、クラスを利用する事を宣言しとかないと、コンパイル時に無視されるので注意。
var className = "String";
var classFunc:Function = eval(className);
var test:String;
// OK
test = new classFunc("a");
trace(test.length); // a
// NG
test = new classFunc.call(null,"a");
trace(test.length); // undefined
// NG
test = new classFunc.apply(null,["a"]);
trace(test.length); // undefined
var returnClass:Function = function( classFunc:Function, args:Array ){
return classFunc.apply(null,args);
}
// OK
test = new classFunc( returnClass(classFunc,["a"]) );
trace(test.length); // 1
どういう事かというと
String.apply(null,args);
をリターンする新しい関数をかましてやると、
new しながらFunction.applyも使えるよねって事だ。
今週来週はキツそうだったが
うまい具合に1こズレてくれた。
全然仕様決まってねーじゃんかと。
こっちでDBの設計までする雰囲気で
I/Oの仕様を決めるだけかな、とりあえず。
あと二つもわりと順調。
2週間かけるところの1.5週間分くらいは休日中に作った。
うーん、ジーニアス。
Flashでアプリを作る手順がやっと固まってきた感じ。
マインドマップを使って、必要な情報の洗い出しと分類。
I/Oを決める。
アプリ全体のアクティビティ図を書く(日本語で)。
重要かつ詳細部のアクティビティ図を書く(日本語で)。
アプリに必要なフラグを洗い出す。
アプリに必要なクライアントモデルを洗い出す。
クラス図を作る。
実装。
具体的にはフラグマネージャとモデルマネージャをグローバルに使えるように用意しておく。
_global.$FLAG = new FlagManager();
程度でよい。
UIはMovieClipを継承したクラスをライブラリ内のMCに当てはめる。のがいい気がする。
複雑になればシーケンス管理のパッケージを使うでもいいし。
いやーかなり気が楽になったので
JavaScriptとFlashの通信に使う暗号化クラスでも作ろうかなと。
暗号化かわいいよ暗号化
Posted in
programing,
日記 at 11月 6th, 2006.
No Comments.
複数のフラグをチェックする方法として
- フラグを必要数だけ用意する方法
- フラグを配列で管理する方法
- フラグをビットで管理する方法
などがあると思われる。
フラグの数だけ変数を用意する
var flag0:Boolean = false;
var flag1:Boolean = false;
var flag2:Boolean = false;
// フラグを立てる処理
flag0 = true;
flag1 = true;
flag2 = true;
if( flag0 && flag1 && flag2 ) {
// フラグが全て立った時の処理
}
と、これはなんかカッコ悪いし
フラグ変数をイチイチ用意するのがもったいない。
フラグを配列にする方法
// 3つ分のフラグ配列
var flags:Array = new Array(3);
// フラグを立てる処理
flags[0] = true;
flags[1] = true;
flags[2] = true;
for( var n0:Number=0; n0<flags.length; n0++ ){
if( !flags[n0] ) {
// フラグが立っていなかったらループを抜ける
break;
} else if( n0 == flags.length ) {
// フラグが全て立った時の処理
}
}
フラグをビットで管理する
var flagNum:Number = 0x000;
var flagMax:Number = 0x111;
<br />
// フラグを立てる処理
flagNum += 0x001;
flagNum += 0x010;
flagNum += 0x100;
if( flagNum == flagMax ){
// フラグが全て立った時の処理
}
ゲーム開発ってすごくプログラミングの勉強になる。
今日はタイルベースでの深度の管理についていろいろ考えていた。
一応その座標での深度は
クォータービューについてだが
- Y軸が大きいほど深度は高い
- 同Y軸の中ではXが大きいほど深度は高い
- 同一座標でもさらにZがある
という点から、その座標の深度をあらかじめ予約する場合
Depth = (Y * Y.length * Z.length ) + ( X * Z.length ) + Z
としておけば、被る事がないだろう。
Read More…
http://iterative.org/swfmill/doc/using-swfmill.html
http://flashant.org/index.php?p=373&more=1&c=1
Flashなしで、SWFファイルを生成しちゃう。
もうすごいとしか言いようがないなぁ…。
てか別にFlash持ってるわけだから
ライブラリ的なSWFを作るのは、別にFlashでいいよなぁ。
てか、昨日から全然やることがそれている。
本当はクォータービューのモックを作ろうとしてたのに
いつのまにかベクターのクラス作り始めて
だんだんオリジナルパッケージの制作になって
だんだん開発環境の追求に…。
Read More…
Posted in
flash,
programing at 12月 5th, 2005.
No Comments.