【解決済み】bitmap spriteの消去方法

アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡を取る:

【解決済み】bitmap spriteの消去方法

投稿記事by MEIKOI » 2020年9月25日(金) 12:57

こんにちは。いつもありがとうございます。

オリジナルのミニマップを表示するために以下を書きました。
var xslide = 748 - ( nmap.length * 10 );

for(var x = 0; x < nmap.length ; x++){
for(var y = 0; y < nmap.length ; y++){

var bitmap = ImageManager.loadBitmap('img/system/','map_sozai' , 0, false);
var sprite = new Sprite(bitmap);
SceneManager._scene.addChild(sprite);

if( nmap[x][y] >= $gameVariables.value(1)){sprite.x = xslide + ( x*10 + 10 ); sprite.y = y*10 + 10;}
}}


nmap[x][y]に、0または1を格納しており

1が格納されていれば、map_sozaiを描画しています。

描画そのものは、うまく表示できるのですが

描画後に、以下2種類の処理をしたいのですが、どのようにすればできますでしょうか?

1:描画すべてを消去する。

2:画面の絶対座標を指定して、部分的(四角形)に消去する。


描画した後、即すべてを消去するために
forループ終了後にすぐに、
sprite.bitmap.clear();
を記述してみましたが、消去することは、できませんでした。

sprite.bitmap.clear();
SceneManager._scene.addChild(sprite);
と記述したり

ググりながらclearRectなども試しているんですが、まったく消えてくれません。

1、2を実行する方法をご存じの方教えてください。よろしくお願いします。
最後に編集したユーザー MEIKOI on 2020年9月27日(日) 09:44 [ 編集 1 回目 ]

アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: bitmap spriteの消去方法

投稿記事by Plasma Dark » 2020年9月25日(金) 19:54

まず、この掲示板にはコードを書くための専用タグが用意されています。そのタグを用いると良いと思います。

それから、あまり複雑なコードをイベントコマンドのスクリプトに書かないほうが良いです。
メンテナンスできなくなるだけでなく、ご提示頂いたようにループを回すコードの場合はパフォーマンス上の問題も懸念されます。
プラグイン化してしまいましょう。

いきなり複雑なロジックに手を出す前に、もう少し簡単なコードから書いてみるのも良いと思います。
(ループを回して大量に画像を表示するのではなく、一つだけ画像を表示する、など)

ミニマップの表示非表示を切り替えたいのだと思いますが、せっかくSpriteで囲んでいるのに中身のbitmapを直接触るのは筋が良くないように見えます。
MVの場合は Sprite_Base というクラスに便利なメソッドが生えているので、 Sprite よりもそちらを使ったほうが制御しやすいですね。

SceneManager._scene に直接アクセスするのはあまり好ましくありませんし、マップシーンに直接Spriteを追加するのも好ましくありません。
Spriteset_Map にミニマップ用スプライトを追加して、表示非表示は Scene_Map から制御できるようにする、あたりが良いのではないでしょうか。
アバター
Plasma Dark
記事: 669
登録日時: 2020年2月08日(土) 02:29
連絡を取る:

Re: bitmap spriteの消去方法

投稿記事by Plasma Dark » 2020年9月25日(金) 20:15

流石にこれだけ投げっぱなしでは初学者には辛かろうと思うので、マップ上に画像を表示してキー操作で表示非表示を切り替えるプラグインのサンプルを書いてみました。

https://gist.github.com/elleonard/d1efa ... 1d8d100abc

参考にどうぞ。
アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡を取る:

Re: bitmap spriteの消去方法

投稿記事by MEIKOI » 2020年9月25日(金) 21:55

Plasma Dark様

こんにちは。いつもアドバイスありがとうございます!
サンプルも書いていただいて感謝です。
ただガチャガチャif文とfor文を書いてるだけなのはやめて
ちゃんと勉強しようと思います^^;
ついつい近道だと思って思ったままイベントコマンドに書いてしまってます。
コード印刷しました。今は、わからないのですが、ちゃんと見て勉強してみます。
ありがとうございます!
アバター
MEIKOI
記事: 168
登録日時: 2018年9月22日(土) 20:13
連絡を取る:

Re: bitmap spriteの消去方法

投稿記事by MEIKOI » 2020年9月27日(日) 09:43

Plasma Dark様

書いていただいたモノを元にして
プラグインから目的の描画と消去をできるようになりました。
オブジェクトの構造の取り扱い方と言うのでしょうか
どこに何があって、どうやって取り出すのか
素人には慣れるのに、時間がかかりそうですが
触れて試してみる事で少しだけ理解が深まりました。
お礼のみになりますが、ありがとうございました。感謝。

“MV:質問” へ戻る