命令リファレンス

トップ  > 命令リファレンス  > AlphaPat

AlphaPat

アルファ画像を操作するための主要なクラス。
通常、アルファ画像の操作はこのクラスで行う。

ライブラリで使うメソッドは、全てこのクラスで定義されています。

コンストラクタ

AlphaPat() オブジェクト生成時は必ず、「$alphaPat」という変数名にオブジェクトを格納してください。
また、システムが起動してから1度だけ生成してください。
以上の条件より、下記の文で初期化をします。
「if ($alphaPat == null) $alphaPat = new AlphaPat();」

メソッド一覧

addImage(pat, alphaFileName, maxPanelN, dither) アルファ画像を生成し、登録する
clearImage() アルファ画像を全削除 (メモリ解放できる)
drawAlphaSprite(x, y, p, f, z) アルファ画像表示(drawSprite()に相当)
drawAlphaDxSprite(x, y, p, f, z, an, al, sx, sy) アルファ画像表示(drawDxSprite()に相当)
drawAlpha(p, x, y, w, h, sx, sy) アルファ画像表示(Panelクラスのdraw()に相当)
stretchDrawAlpha(p, x, y, w, h) アルファ画像表示(PanelクラスのstretchDraw()に相当)
setZOrder(p, z) アルファ画像の zOrder をセットする(drawAlpha(), stretchDrawAlpha() で表示するときに使う)
setAngle(p, an) アルファ画像の angle をセットする(drawAlpha(), stretchDrawAlpha() で表示するときに使う)
setAlpha(p, al) アルファ画像の alpha をセットする(drawAlpha(), stretchDrawAlpha() で表示するときに使う)
setZAA(p, z, an, al) アルファ画像の zOrder, angle, alpha をセットする(drawAlpha(), stretchDrawAlpha() で表示するときに使う)
getChipSize() 現在作られた、アルファ画像の総パターン数を返す
getChip(i) ある1パターンのアルファ画像を、管理しているAlphaPatChipオブジェクトを返す
getPatSize(patNo) あるアルファ画像ファイルには、何パターンの画像があるか返す
getLoadSpeed() addImageの処理速度を取得
(setLoadSpeedメソッドで、引数に設定した値を返す)
setLoadSpeed(sp) addImageの処理速度を設定
(addImageメソッドの実行中、他のオブジェクトが動けるようにするか)

メソッド

addImage(pat, alphaFileName, maxPanelN, dither)
アルファ画像を生成し、登録します。

引数

pat
登録するアルファ画像のキャラクタパターン

alphaFileName
登録するアルファ画像に対応するTALファイル名

maxPanelN [省略可]
使用するパネルの最大枚数
1~254の範囲で指定します

ここで指定したパネル枚数を超えないように、アルファ画像を生成します。
枚数を多くするほど画質が良くなりますが、処理は重くなります。
省略時は、最大16枚です。

dither [省略可]
0:ディザ処理なし
1:ディザ処理あり
省略時は、ディザ処理ありです。

戻り値

アルファ画像版のキャラクタパターン番号が返ってきます。
($pat_xxxとは違う番号($apat_xxx)が返ってきます)

// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal", 16, 1);
$apat_char = $alphaPat.addImage($pat_char, "char.tal", 8, 0);
$apat_map = $alphaPat.addImage($pat_map, "map.tal");
clearImage()
アルファ画像を全削除します。

準備されているアルファ画像を削除するので、メモリ解放ができます。
アルファ画像はメモリを多く使うので、使わないアルファ画像があるときは削除することを推奨します。

このメソッドを使うときの注意

同フレームでこのメソッドを使う前に、アルファ画像の表示メソッドを使ってしまうと
消えたアルファ画像を表示しようとするため、エラーがでてしまいます。
$alphaPat.drawAlphaSprite($screenWidth/2, $screenHeight/2, $apat_title + 0);
$alphaPat.clearImage();
update();
↑これはエラーになります。
(開発環境ではエラーにならないが、ランタイムでエラーになるということもある)

使うときは、画像を表示する前に使います。
$alphaPat.clearImage();
$alphaPat.drawAlphaSprite($screenWidth/2, $screenHeight/2, $apat_title + 0);
update();
↑これならエラーになりません。
drawAlphaSprite(x, y, ap, f, z)
アルファ画像を表示します。

drawSprite()と同じ使い勝手で、アルファ画像を表示できます。

引数

x
x座標

y
y座標

ap
アルファ画像版のキャラクタパターン

f [省略可]
0以外:画像を左右反転して表示

z [省略可]
表示順序。値が小さいほど手前に表示される

// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal", 16, 1);

while (1) {
  // アルファ画像を表示 //
  $alphaPat.drawAlphaSprite($screenWidth/2, $screenHeight/2, $apat_title + 0);
  update();
}
drawAlphaDxSprite(x, y, ap, f, z, an, al, sx, sy)
アルファ画像を表示します。

drawDxSprite()と同じ使い勝手で、アルファ画像を表示できます。

引数

x
x座標

y
y座標

ap
アルファ画像版のキャラクタパターン

f [省略可]
0以外:画像を左右反転して表示

z [省略可]
表示順序。値が小さいほど手前に表示される

an [省略可]
回転角度。単位は度(°)を表す整数

al [省略可]
不透明度を0から255の整数であらわす。小さい値ほど透けて見える

sx [省略可]
横方向の拡大率。1が原寸

sy [省略可]
縦方向の拡大率。省略するとsxと同じ

// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal", 16, 1);

while (1) {
  // アルファ画像を表示 //
  $alphaPat.drawAlphaDxSprite($screenWidth/2, $screenHeight/2, $apat_title + 0, 0, 0, 30, 100, 2);
  update();
}
drawAlpha(ap, x, y, w, h, sx, sy)
アルファ画像を表示します。

Panelクラスのdraw()と同じ使い勝手で、アルファ画像を表示できます。

引数

ap
アルファ画像版のキャラクタパターン

x
x座標

y
y座標

w [省略可]
表示する画像領域の幅。省略すると画像の大きさに合わせて表示

h [省略可]
表示する画像領域の高さ。省略すると画像の大きさに合わせて表示

sx [省略可]
画像領域のx軸をスクロールする。省略するとスクロールしない

sy [省略可]
画像領域のy軸をスクロールする。省略するとスクロールしない

// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal", 16, 1);

cnt = 0;
while (1) {
  // アルファ画像の zOrder, angle, alpha を設定 //
  $alphaPat.setZAA($apat_title + 0, 0, 0, 255);
  
  // アルファ画像を表示 //
  $alphaPat.drawAlpha($apat_title + 0, 10, 10, 300, 150, cnt/2, cnt);
  cnt++;
  update();
}
stretchDrawAlpha(p, x, y, w, h)
アルファ画像を表示します。

PanelクラスのstretchDraw()と同じ使い勝手で、アルファ画像を表示できます。

引数

ap
アルファ画像版のキャラクタパターン

x
x座標

y
y座標

w [省略可]
横方向の拡大率。ピクセル単位。省略すると原寸で表示

h [省略可]
縦方向の拡大率。ピクセル単位。省略すると原寸で表示

// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal", 16, 1);

cnt = 0;
while (1) {
  // アルファ画像の zOrder, angle, alpha を設定 //
  $alphaPat.setZAA($apat_title + 0, 0, 0, 255);
  
  // アルファ画像を表示 //
  $alphaPat.stretchDrawAlpha($apat_title + 0, $screenWidth/2, $screenHeight/2, cnt%$screenWidth, cnt%$screenHeight);
  cnt += 5;
  update();
}
setZOrder(ap, z)
アルファ画像の zOrder をセットします。

drawAlpha(), stretchDrawAlpha() で表示する際の、表示順序を設定します。

引数

ap
アルファ画像版のキャラクタパターン

z
表示順序。値が小さいほど手前に表示される

drawAlphaSprite(), drawAlphaDxSprite() を使用すると zOrder の値が変わるので、
そのあとに、drawAlpha(), stretchDrawAlpha() を使用する際は、再びこのメソッドで設定してください。
setAngle(ap, an)
アルファ画像を angle をセットします。

drawAlpha(), stretchDrawAlpha() で表示する際の、回転角度を設定します。

引数

ap
アルファ画像版のキャラクタパターン

an
回転角度。単位は度(°)を表す整数

drawAlphaSprite(), drawAlphaDxSprite() を使用すると angle の値が変わるので、
そのあとに、drawAlpha(), stretchDrawAlpha() を使用する際は、再びこのメソッドで設定してください。
setAlpha(ap, al)
アルファ画像の alpha をセットする

drawAlpha(), stretchDrawAlpha() で表示する際の、不透明度を設定します。

引数

ap
アルファ画像版のキャラクタパターン

al
不透明度を0から255の整数であらわす。小さい値ほど透けて見える

drawAlphaSprite(), drawAlphaDxSprite() を使用すると alpha の値が変わるので、
そのあとに、drawAlpha(), stretchDrawAlpha() を使用する際は、再びこのメソッドで設定してください。
setZAA(ap, z, an, al)
アルファ画像の zOrder, angle, alpha をセットする

drawAlpha(), stretchDrawAlpha() で表示する際の、表示順序・回転角度・不透明度をまとめて設定します。

引数

ap
アルファ画像版のキャラクタパターン

z
表示順序。値が小さいほど手前に表示される

an
回転角度。単位は度(°)を表す整数

al
不透明度を0から255の整数であらわす。小さい値ほど透けて見える

drawAlphaSprite(), drawAlphaDxSprite() を使用すると zOrder, angle, alpha の値が変わるので、
そのあとに、drawAlpha(), stretchDrawAlpha() を使用する際は、再びこのメソッドで設定してください。

// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal", 16, 1);

cnt = 0;
while (1) {
  // アルファ画像をdrawAlphaDxSpriteで表示 //
  $alphaPat.drawAlphaDxSprite($screenWidth/4, $screenHeight/2, $apat_title + 0, 0, 9, cnt, cnt%255, 1);
  
  // アルファ画像をstretchDrawAlphaで表示 //
  $alphaPat.setZAA($apat_title + 0, 10, cnt, cnt%255);
  $alphaPat.stretchDrawAlpha($apat_title + 0, $screenWidth/4*3, $screenHeight/2, cnt%$screenWidth, cnt%$screenHeight);
  
  cnt += 5;
  update();
}
getChipSize()
現在作られた、アルファ画像の総パターン数を返します。
getChip(ap)
ある1パターンのアルファ画像を、管理しているAlphaPatChipオブジェクトを返します。
getPatSize(patNo)
あるアルファ画像ファイルには、何パターンの画像があるか返します。
getLoadSpeed()
addImageの処理速度を取得します。
(setLoadSpeedメソッドで、引数に設定した値を返す)
setLoadSpeed(sp)
addImageの処理速度を設定します。

addImageメソッドの実行中、他のオブジェクトが並行動作するように設定できます。

引数

sp
0:並行動作させない
1-10:並行動作させる(大きい数値ほど、動作が重くなるがaddImageメソッドの速く完了する)
(個人的には、3〜5くらいがいいと思います)

並行動作する場合は、例えばaddImageメソッドを呼び出しているときに、
他のオブジェクトで「Loading...」を表示させるなどです。



Main.tonyu
// AlphaPatを生成 //
if ($alphaPat == null) $alphaPat = new AlphaPat();

// 並行動作させる //
$alphaPat.setLoadSpeed(1); // 違いが分かりやすいようにあえて1で設定

// 他オブジェクトで「Loading...」と表示させる //
sub = appear(new Sub());

// アルファ画像を生成・登録 //
$apat_title = $alphaPat.addImage($pat_title, "title.tal" , 16, 1);

// アルファ画像を生成したら「Loading...」を消す //
sub.die();

cnt = 0;
while (1) {
  // アルファ画像をdrawDxSpriteAlphaで表示 //
  $alphaPat.drawAlphaSprite($screenWidth/2, $screenHeight/2, $apat_title + 0);
  
  update();
}

Sub.tonyu
cnt = 0;
while (1) {
  text = "loading";
  for (i=0; i<cnt; i++) {
    text = text + ".";
  }
  drawText($screenWidth/2-100, $screenHeight/2-20, text, $clWhite, 40);
  cnt = (cnt + 1) % 10;
  update();
}


トップ  > 命令リファレンス  > AlphaPat