FreeHand.+ Type.B

次のページ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

クラス間での参照変数を無効化する時の注意

たとえばクラス内から別のクラス(オブジェクト)のアドレスを参照するような仕組みを作る場合
読み込んだ先でその参照クラスを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クラスを無効化すると言う事と同意となるのである

クラスに分割してクラス間通信を行うとスマートで簡単だけど
うっかり参照先のクラスを無効化しないように気をつけたい
スポンサーサイト

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2009/04/09(木) 16:22:18|
  2. 吉里吉里
  3. | トラックバック:0
  4. | コメント: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を探してみるかも

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2009/03/26(木) 17:34:58|
  2. 吉里吉里
  3. | トラックバック:0
  4. | コメント:0

Timerクラスのcapacityプロパティーについて

Timer.capacity

の数値について、アクションゲームをTJSで製作する場合この数値を

Timer.capacity = 1;

に設定した方が良い。
このプロパティーの説明を見ると

どれだけのイベントを、一時期に発生させることができるかを指定します。値を設定することもできます。
タイマの周期よりも長い処理が行われた時など、タイマイベントを処理しきれない場合があります。 このとき、タイマはイベントをイベントキューには溜めますが、そのイベントキューに溜めるイベントの数には上限があります。 このプロパティはその最大数を指定します。
イベントを処理する段階になった場合、吉里吉里はキューに溜まった数のイベントを一時期に処理しようとします。
1を指定すると、イベントキューには最大1個までしかイベントが溜まりません。0 を指定するとイベントキューに溜まるイベントの数に 制限はなくなりますが、あまりにイベントが溜まりすぎると、フリーズしたようになる可能性があるので注意してください。
デフォルトは 6 です。



とあるように、タイマーの周期に間に合わないイベントを一気に処理する量を決めるようです
これがデフォルトの6のままだと60FPSのアクションゲームやシューティングを製作した場合
オブジェクトが多数(そしてそれらがFOR文で判定処理するような)出てくる場面で
いわゆるフレームスキップされるような画面描画になってしまいます
こうすると一瞬止まってるような間に一気に処理が進んでしまい、遠くにあった弾が急に目の前に現れたりします…これはマズイです

Timer.capacity = 1;

にすると見事良くあるゲームにあるようなスロー処理に成ってくれます。
フレームスキップさせてでも同期させたい場合を除いて、この設定がベストだと思います

ちなみにため込む量が無限になる
Timer.capacity = 0;
にするとたとえば大量の弾幕を展開する状態でショットボタンを押すと画面が固まります
離すとタイマー処理が追いつく所まで処理が軽くなった時点までの時間の間分、
弾が進んだ画面が表示されます。

続きにを開くと検証動画が見られます 続きを読む

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2009/03/19(木) 16:40:16|
  2. 吉里吉里
  3. | トラックバック:0
  4. | コメント:0

簡易大量パラパラアニメプラグイン(2005/02/03)

※この記事は過去自分のサイトのプログラムページに掲載していた記事です

2005/02/03
吉里吉里というゲーム製作ツールのプラグインをこのたび作りました。
大量の画像連番ファイルを連続で流して擬似アニメーションさせます。
でも、これはTJS入門で公開されている流星プラグインの改造品…。
ほぼ原型のままです;;
四苦八苦したのは自動的に連番ファイルを読み込むシステム。
リアルタイム処理をしているらしいreset(){}の場所に入れたら
すんなり動作しました。

ご自由にお使い下さい…というかもともとのソースが別の方のものなので;;
ただ、まだTJSとか勉強し始めで色々とマズイ部分とかあります

ダウンロードページへ

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2009/01/12(月) 18:48:19|
  2. 吉里吉里
  3. | トラックバック:0
  4. | コメント:0

吉里吉里のアニメーションファイルの作り方の説明(2005/02/11)

※この記事は過去自分のサイトのプログラムページに掲載していた記事です

吉里吉里のアニメーションファイルの作り方の説明は
templateフォルダなどのプロジェクトフォルダ内の
systemフォルダに入っているAnimationLayer.tjsの中で説明されている。
目パチや口パクなどを作るのに必要な、とても便利な機能の解説をしています。

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2009/01/09(金) 21:45:13|
  2. 吉里吉里
  3. | トラックバック:0
  4. | コメント:0
次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。