上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
- --/--/--(--) --:--:--|
- スポンサー広告
-
-
たとえばクラス内から別のクラス(オブジェクト)のアドレスを参照するような仕組みを作る場合
読み込んだ先でその参照クラスをinvalidateなどで無効化すると
参照なので当然参照先のクラスも無効化されてしまうので注意
class test{
var a;
}
class test2{
var own;
function abc(owner){
own = owner;
}
function finalize(){
invalidate own;
}
}
var abc = new test();
var efg = new test2();
efg.abc(abc);
このあと
invalidate efg;
と行うと
efgが無効化されると同時に
abcも無効化されるなぜならefg…つまりtest2クラスのfinalize()で
abcを参照している変数ownを無効化しているからであるefg.abc(abc);
と言う文で
efg
(つまりtest2クラス)の
abc.(owner
(abcがownerと言う変数に代入されている))が呼び出され
own = ownerでown変数にabc(testクラス)が参照されるという処理を行っている
ownを無効化すると言うことはabc変数に作られたtestクラスを無効化すると言う事と同意となるのであるクラスに分割してクラス間通信を行うとスマートで簡単だけど
うっかり参照先のクラスを無効化しないように気をつけたい
スポンサーサイト
テーマ:プログラミング - ジャンル:コンピュータ
- 2009/04/09(木) 16:22:18|
- 吉里吉里
-
| トラックバック:0
-
| コメント:0
吉里吉里TJSにての自作関数メモ
『配列に格納された数値の中で一番ゼロに近い数値を探す』
注意:配列内に「1」と「-1」が混じっている場合
どちらが出るかは配列の並びにより可変する
用途としては戻り値の正負は関係なく使用した方が良い
//ゼロに近いチェック
function minCheck(arr){
var a = Math.abs(arr[0]);
var num = 0;
for(var i = 1; i < tmparr.count; i ++){
var b = Math.abs(arr[i]);
if(b < a){
a = b;
num = i;
}
}
return num;//配列の要素番号を返す場合
//return a;//値を返す場合
//return %["no" = num, "min" = a];//とか書くと辞書配列を返せる
}
使用例:var arr = [5,10,23,5,-3,2];
var a = minCheck(arr);
結果:return num;とした場合a = 5
return a;とした場合a = 2
return %["no" = num, "min" = a];とした場合a.no = 5
a.min = 2
ところでこういったプログラムのメモはWIKIの方にまとめた方がいいかも?
目次や分類分けが出来るし記事検索が楽そう…
ほどよい使い勝手のWIKIを探してみるかも
テーマ:プログラミング - ジャンル:コンピュータ
- 2009/03/26(木) 17:34:58|
- 吉里吉里
-
| トラックバック:0
-
| コメント:0
Timer.capacity
の数値について、アクションゲームをTJSで製作する場合この数値を
Timer.capacity = 1;に設定した方が良い。
このプロパティーの説明を見ると
どれだけのイベントを、一時期に発生させることができるかを指定します。値を設定することもできます。
タイマの周期よりも長い処理が行われた時など、タイマイベントを処理しきれない場合があります。 このとき、タイマはイベントをイベントキューには溜めますが、そのイベントキューに溜めるイベントの数には上限があります。 このプロパティはその最大数を指定します。
イベントを処理する段階になった場合、吉里吉里はキューに溜まった数のイベントを一時期に処理しようとします。
1を指定すると、イベントキューには最大1個までしかイベントが溜まりません。0 を指定するとイベントキューに溜まるイベントの数に 制限はなくなりますが、あまりにイベントが溜まりすぎると、フリーズしたようになる可能性があるので注意してください。
デフォルトは 6 です。
とあるように、タイマーの周期に間に合わないイベントを一気に処理する量を決めるようです
これがデフォルトの6のままだと60FPSのアクションゲームやシューティングを製作した場合
オブジェクトが多数
(そしてそれらがFOR文で判定処理するような)出てくる場面で
いわゆるフレームスキップされるような画面描画になってしまいます
こうすると一瞬止まってるような間に一気に処理が進んでしまい、遠くにあった弾が急に目の前に現れたりします…これはマズイです
Timer.capacity = 1;にすると見事良くあるゲームにあるようなスロー処理に成ってくれます。
フレームスキップさせてでも同期させたい場合を除いて、この設定がベストだと思います
ちなみにため込む量が無限になる
Timer.capacity = 0;
にするとたとえば大量の弾幕を展開する状態でショットボタンを押すと画面が固まります
離すとタイマー処理が追いつく所まで処理が軽くなった時点までの時間の間分、
弾が進んだ画面が表示されます。
続きにを開くと検証動画が見られます
続きを読む
テーマ:プログラミング - ジャンル:コンピュータ
- 2009/03/19(木) 16:40:16|
- 吉里吉里
-
| トラックバック:0
-
| コメント:0
※この記事は過去自分のサイトのプログラムページに掲載していた記事です2005/02/03
吉里吉里というゲーム製作ツールのプラグインをこのたび作りました。
大量の画像連番ファイルを連続で流して擬似アニメーションさせます。
でも、これは
TJS入門で公開されている流星プラグインの改造品…。
ほぼ原型のままです;;
四苦八苦したのは自動的に連番ファイルを読み込むシステム。
リアルタイム処理をしているらしいreset(){}の場所に入れたら
すんなり動作しました。
ご自由にお使い下さい…というかもともとのソースが別の方のものなので;;
ただ、まだ
TJSとか勉強し始めで色々とマズイ部分とかあります
テーマ:プログラミング - ジャンル:コンピュータ
- 2009/01/12(月) 18:48:19|
- 吉里吉里
-
| トラックバック:0
-
| コメント:0
※この記事は過去自分のサイトのプログラムページに掲載していた記事です吉里吉里のアニメーションファイルの作り方の説明は
templateフォルダなどのプロジェクトフォルダ内の
systemフォルダに入っているAnimationLayer.tjsの中で説明されている。
目パチや口パクなどを作るのに必要な、とても便利な機能の解説をしています。
テーマ:プログラミング - ジャンル:コンピュータ
- 2009/01/09(金) 21:45:13|
- 吉里吉里
-
| トラックバック:0
-
| コメント:0