こんにちは。いつもありがとうございます。
オリジナルのミニマップを表示するために以下を書きました。
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を実行する方法をご存じの方教えてください。よろしくお願いします。
【解決済み】bitmap spriteの消去方法
- Plasma Dark
- 記事: 669
- 登録日時: 2020年2月08日(土) 02:29
- 連絡を取る:
Re: bitmap spriteの消去方法
まず、この掲示板にはコードを書くための専用タグが用意されています。そのタグを用いると良いと思います。
それから、あまり複雑なコードをイベントコマンドのスクリプトに書かないほうが良いです。
メンテナンスできなくなるだけでなく、ご提示頂いたようにループを回すコードの場合はパフォーマンス上の問題も懸念されます。
プラグイン化してしまいましょう。
いきなり複雑なロジックに手を出す前に、もう少し簡単なコードから書いてみるのも良いと思います。
(ループを回して大量に画像を表示するのではなく、一つだけ画像を表示する、など)
ミニマップの表示非表示を切り替えたいのだと思いますが、せっかくSpriteで囲んでいるのに中身のbitmapを直接触るのは筋が良くないように見えます。
MVの場合は Sprite_Base というクラスに便利なメソッドが生えているので、 Sprite よりもそちらを使ったほうが制御しやすいですね。
SceneManager._scene に直接アクセスするのはあまり好ましくありませんし、マップシーンに直接Spriteを追加するのも好ましくありません。
Spriteset_Map にミニマップ用スプライトを追加して、表示非表示は Scene_Map から制御できるようにする、あたりが良いのではないでしょうか。
それから、あまり複雑なコードをイベントコマンドのスクリプトに書かないほうが良いです。
メンテナンスできなくなるだけでなく、ご提示頂いたようにループを回すコードの場合はパフォーマンス上の問題も懸念されます。
プラグイン化してしまいましょう。
いきなり複雑なロジックに手を出す前に、もう少し簡単なコードから書いてみるのも良いと思います。
(ループを回して大量に画像を表示するのではなく、一つだけ画像を表示する、など)
ミニマップの表示非表示を切り替えたいのだと思いますが、せっかくSpriteで囲んでいるのに中身のbitmapを直接触るのは筋が良くないように見えます。
MVの場合は Sprite_Base というクラスに便利なメソッドが生えているので、 Sprite よりもそちらを使ったほうが制御しやすいですね。
SceneManager._scene に直接アクセスするのはあまり好ましくありませんし、マップシーンに直接Spriteを追加するのも好ましくありません。
Spriteset_Map にミニマップ用スプライトを追加して、表示非表示は Scene_Map から制御できるようにする、あたりが良いのではないでしょうか。
- Plasma Dark
- 記事: 669
- 登録日時: 2020年2月08日(土) 02:29
- 連絡を取る:
Re: bitmap spriteの消去方法
流石にこれだけ投げっぱなしでは初学者には辛かろうと思うので、マップ上に画像を表示してキー操作で表示非表示を切り替えるプラグインのサンプルを書いてみました。
https://gist.github.com/elleonard/d1efa ... 1d8d100abc
参考にどうぞ。
https://gist.github.com/elleonard/d1efa ... 1d8d100abc
参考にどうぞ。
Re: bitmap spriteの消去方法
Plasma Dark様
こんにちは。いつもアドバイスありがとうございます!
サンプルも書いていただいて感謝です。
ただガチャガチャif文とfor文を書いてるだけなのはやめて
ちゃんと勉強しようと思います^^;
ついつい近道だと思って思ったままイベントコマンドに書いてしまってます。
コード印刷しました。今は、わからないのですが、ちゃんと見て勉強してみます。
ありがとうございます!
こんにちは。いつもアドバイスありがとうございます!
サンプルも書いていただいて感謝です。
ただガチャガチャif文とfor文を書いてるだけなのはやめて
ちゃんと勉強しようと思います^^;
ついつい近道だと思って思ったままイベントコマンドに書いてしまってます。
コード印刷しました。今は、わからないのですが、ちゃんと見て勉強してみます。
ありがとうございます!
Re: bitmap spriteの消去方法
Plasma Dark様
書いていただいたモノを元にして
プラグインから目的の描画と消去をできるようになりました。
オブジェクトの構造の取り扱い方と言うのでしょうか
どこに何があって、どうやって取り出すのか
素人には慣れるのに、時間がかかりそうですが
触れて試してみる事で少しだけ理解が深まりました。
お礼のみになりますが、ありがとうございました。感謝。
書いていただいたモノを元にして
プラグインから目的の描画と消去をできるようになりました。
オブジェクトの構造の取り扱い方と言うのでしょうか
どこに何があって、どうやって取り出すのか
素人には慣れるのに、時間がかかりそうですが
触れて試してみる事で少しだけ理解が深まりました。
お礼のみになりますが、ありがとうございました。感謝。