スーパープロセッサ
〜 Tonyu System 改良プログラム 〜

オブジェクトの処理量を増やす方法4

← メインページ
← 点滅現象について

目次
  1. オブジェクトの処理量を増やす方法
  2. オブジェクトの処理量を増やす方法2
  3. オブジェクトの処理量を増やす方法3
  4. オブジェクトの処理量を増やす方法4


1つのクラスで分散処理

分散処理をするために、クラスを増やしたくない場合もあるでしょう。
その場合は、次のようにするとクラスを増やさないで分散処理ができます。
(オブジェクトは2つ作られます)
/* MainChar.tonyu */
extends SpriteChar;

if (mode == null) { // メインの処理
  
  obj = new MainChar(); // オブジェクトを生成
  obj.mode = 1; // 分散用の処理をするように設定
  proc = new classes.lang.Process(obj, "", 1); // プロセスを生成
  
  while (1) {
    $MainChar_i = 0; // カウントリセット
    for (i=0; i<40; i++) {
      proc.exec(); // 100回ずつ実行
    }
    x+=3;
    update();
  }
  
} else if (mode == 1) { // 分散させる処理
  
  while (1) {
    for (j=0; j<100; j++) {
      drawSprite($MainChar_i%100, trunc($MainChar_i/100), 0);
      $MainChar_i ++;
    }
    update();
  }
  
}
前ページの分散処理を、1つのクラスにまとめました。

mode変数は、「メインの処理」か「分散させる処理」かの、どちらを実行させるか判断するための変数です。
modeは値を代入していないnullの状態なので、メインの処理へと移ります。
メインの処理で、もう1つMainCharを作りmodeに1を代入して実行しているので、
もう1つのMainCharでは、分散させる処理をしています。

(コンストラクターを使えば、自動的にmodeに値を代入することもできるでしょう)



以上で説明は終わりです。

今回このライブラリで使ったメソッドが、Tonyuヘルプにも書いていないということで、
このような説明を加えました。
このライブラリを使えば、殆どの場合点滅処理を解決できるのですが、
これまでの説明により、さらなる問題点も解決できるはずです。

説明書の部分は最初の1ページだけでしたが、
ここまで全てを読んだ方は、本当にお疲れ様です。


← オブジェクトの処理量を増やす方法3
← 点滅現象について
← メインページ