【解決】画面に常駐するウィンドウのつくり方

ハタマル。
記事: 9
登録日時: 2016年10月16日(日) 22:32

【解決】画面に常駐するウィンドウのつくり方

投稿記事by ハタマル。 » 2017年5月27日(土) 13:43

お世話になっております。

似たような質問があったのですが、どうも欲しい回答ではなかったので、改めて質問させていただきます。

制限時間系のプラグインを作っているのですが、
それを可視化したウィンドウがメニューを閉じるときやマップ移動すると一緒に消えてしまいます
実際の時間ではなく、ステータスで変動する数値で制限時間をプラグイン内で計算しているので、それも残したまま使いたいのです。

gauge.prototype = Object.create(Sprite.prototype)と単に押し込んでベースを作るだけでは足りないということはわかったのですが、
そこから先がよくわからないので、ご教授頂けると助かります。
最後に編集したユーザー ハタマル。 on 2017年5月28日(日) 11:21 [ 編集 1 回目 ]

アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: 画面に常駐するウィンドウのつくり方

投稿記事by フトコロ » 2017年5月27日(土) 13:54

こんにちは。
ハタマル。 さんが書きました:制限時間系のプラグインを作っているのですが、
それを可視化したウィンドウがメニューを閉じるときやマップ移動すると一緒に消えてしまいます


まず、ハタマルさんのプラグインでは、ウィンドウをどのように画面に表示させているのか、ご教示いただけないでしょうか。

基本的に、マップ画面で常に表示したい場合はScene_Map.prototype.start()内で、ウィンドウを生成すればいいと思います。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
ハタマル。
記事: 9
登録日時: 2016年10月16日(日) 22:32

Re: 画面に常駐するウィンドウのつくり方

投稿記事by ハタマル。 » 2017年5月27日(土) 14:11

返信ありがとうございます

表示部分.txt
(1006 バイト) ダウンロード数: 31 回


変数の代入等は削ってあるのですが、上記のファイルの通りです

WS_gauge.prototype.drawWindow = function(x, y)
{
this._window = new Window_Base(x, y, $.windowWidth, $.windowHeight);
this.addChild(this._window);
};

の部分が直接の描写部分です
見ての通りオブジェクトクラスを適当に起き、ウィンドウベースをシンプルに押し込んでるだけです

Scene_Map.prototype.start()での生成というと、どういうふうにすればいいでしょうか?
アバター
フトコロ
記事: 1029
登録日時: 2017年2月06日(月) 21:32

Re: 画面に常駐するウィンドウのつくり方

投稿記事by フトコロ » 2017年5月27日(土) 14:40

以下は、マップシーンに常駐するウィンドウを表示するコードです。
これをコピーしてJSファイルを作成してプラグイン管理に登録すれば、何も表示しないウィンドウがマップ上に常駐します。

コード: 全て選択

(function() {

_addWindow_Scene_Map_start = Scene_Map.prototype.start;
Scene_Map.prototype.start = function() {
    _addWindow_Scene_Map_start.call(this);
    this.addInfoWindow();
};

Scene_Map.prototype.addInfoWindow = function() {
    this._InfoWindow = new Window_Base(0,0,100,100);
    this.addWindow(this._InfoWindow);
};

})();


WS_gauge.prototype.drawWindowに相当する処理が Scene_Map.prototype.addInfoWindow ですが
これをScene_Map.prototype.start内で実行してます。

メニューを閉じるときやマップ移動すると消えるのは、このときにシーンを作り直しているためです。
作り直した後に、再度ウィンドウを表示させる処理を実行しないといけません。

Scene_Map.prototype.startは、マップシーンの開始時に必ず実行する処理です。
そのため、この中にウィンドウを追加する処理を書き加えれば、常駐できます。
---------------------------------------------------------------------------------------------------
プラグイン置き場(GitHub)
https://github.com/futokoro/RPGMaker/blob/master/README.md

検討中の内容は上記リンク先の「対応するかもしれないプラグインのメモ」を参照してください。
ハタマル。
記事: 9
登録日時: 2016年10月16日(日) 22:32

Re: 画面に常駐するウィンドウのつくり方

投稿記事by ハタマル。 » 2017年5月27日(土) 20:13

ありがとうございます!
確かに移動したりメニューを閉じても消えないウィンドウになりました
これをベースに組んでいこうと思います

ちなみに、今回はstateに描き込んでいただいたのでゲーム起動と同時に表示されますが
プラグインの関係上、プラグイン起動と同時に表示されるようにいじってみたいと思います
ハタマル。
記事: 9
登録日時: 2016年10月16日(日) 22:32

Re: 画面に常駐するウィンドウのつくり方

投稿記事by ハタマル。 » 2017年5月28日(日) 11:21

>フトコロ様
上手くいくようになりました!
少し変則的な処理にしてしまいましたが……

助言ありがとうございました

“MV:質問” へ戻る