【解決済み】マップ名表示中のスクリプトについて

アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップ名表示中のスクリプトについて

投稿記事by にゃたま » 2019年2月06日(水) 13:49

astral様

astral さんが書きました:SceneManager._sceneについては、

Scene_Map.prototype.createMapNameWindow = function() {
this._mapNameWindow = new Window_MapName();
this.addChild(this._mapNameWindow);
};

Scene_MapのthisがSceneManager._sceneになっているので、
SceneManager._scene._mapNameWindowで参照できます。


今後のJavascript解読のためにどうしても聞いておきたいのですが、
「Scene_MapのthisがSceneManager._sceneになっている」
という文がよくわかりません。

引用いただいたScene_Map.prototype.createMapNameWindowのfunctionを見ても
それに関連づいていることが理解できません。
どのあたりを見ればそれが紐づいていることがわかるのでしょうか?
理解力が乏しいのは承知の上でお聞きします。お手数おかけしますがよろしくお願いいたします。

アバター
しぐれん
記事: 973
登録日時: 2017年3月28日(火) 22:22
連絡を取る:

Re: マップ名表示中のスクリプトについて

投稿記事by しぐれん » 2019年2月06日(水) 16:07

にゃたま さんが書きました:しぐれん様
お返事ありがとうございます。せっかく教えて頂いて申し訳ですが…そのWicdow_MapNameだとそれは関数名であってtrue , false の値が取れないので、変数名で教えて頂けないでしょうか?正確にはその関数の中から変数が見つけられなかったということになります。

追記
…それかその関数の返り値から値がとれるんでしょうか?
条件分岐のスクリプトに記載できるような形式が好ましいです。


ある程度回答が付いていますが、Scene_Mapの内部をCTRL+Fを使ってWicdow_MapNameで検索するとScene_Mapの処理が見つかる…ぐらいの意味でした。
今までの回答から、にゃたまさんなら、クラス名で自力で検索できるだろうと考えていましたので。

ハードルは高く見えますが、オブジェクト指向プログラミングの知識を何らかの本で身につけるのが良いと思います。
thisというのは英語でのthisと同様に、自身を指します。
Scene_Map.prototypeに格納されたfunction内部だと、thisはScene_Map型のクラスが入っています。
Game_ActorやWindow_MapNameでも同じような感じです。
thisはなんだかよくわからないけど、自分自身のデータが入っているんだと覚えるのが良いかと。
現在、プラグイン依頼はお休み中です。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップ名表示中のスクリプトについて

投稿記事by にゃたま » 2019年2月06日(水) 21:19

しぐれん様

再度のお返事ありがとうございます。

ある程度回答が付いていますが、Scene_Mapの内部をCTRL+Fを使ってWicdow_MapNameで検索するとScene_Mapの処理が見つかる…ぐらいの意味でした。
今までの回答から、にゃたまさんなら、クラス名で自力で検索できるだろうと考えていましたので。


もちろんWicdow_MapNameのクラス名で検索しております。
前に申し上げたとおり、そのクラス名の中からisのある変数を探せなかったためです。
is=bool値=true,falseの図式と思っている為です。
その後の指摘でcontentsOpacityだったり_showCountという変数値を見るしかないことが判明し、
外部のプラグインからそれらの値にアクセスする方法が必要だったのでそれがSceneManager._scene._mapNameWindow.であったということですごく勉強になりました。
実際いまのところjavascriptは他人の書いたものをすこしいじるくらいの知識しかないので
しぐれん様の仰られるようにオブジェクト指向プログラミングをもっと勉強せねばというのは当然あります。
前にトリアコンタン様からオススメされた以下のサイトでも見て理解を深めないとですね。
https://developer.mozilla.org/ja/docs/W ... JavaScript

とりあえずthisの意味はなんとなくだけど自分を示すものなんだなくらいは理解してました。
ただ、astral様のいわれる「Scene_MapのthisがSceneManager._sceneになっている」というのが
未だによくわからずScene_Mapの前のSceneと書いてあるものは皆SceneManager._sceneで
アクセスできるのかなーと勝手な解釈になってるのが今の私でございます。
尚、_mapNameWindowなのはrpg_scenesの743行目あたりにあるthis._mapNameWindowを
Scene_Map内にaddChildしてるからですね。ここは理解できました。

追伸
ついでにこの場を借りてお礼を言わせていただきます。
しぐれん様のinputConfigは今でも愛用させていただいております。ありがとうございます。
便利すぎてなんでツクールMVのすべての作品に採用してくれないんだろう…と常々思います。
普通にツクール標準のプラグインでいいのにとも。
アレが入ってないアプリを見るとキーを変更できないのが萎えます。
yanfly様のより便利なのでもっと広まってほしいですねー。
astral
記事: 106
登録日時: 2018年11月14日(水) 00:21
連絡を取る:

Re: マップ名表示中のスクリプトについて

投稿記事by astral » 2019年2月06日(水) 21:38

SceneManagerについては、rpg_managers.jsの方にあります。
SceneManager.goto(Scene_Map); //マップ表示
SceneManager.push(Scene_Menu); //メニュー表示
で渡されたScene_***が最終的に現在のシーン(Scene_***)として、
SceneManager._scene
で参照出来るようになっているためです。
アバター
にゃたま
記事: 837
登録日時: 2016年1月13日(水) 23:53
お住まい: 床下の猫王国-すみませんが体調悪いのでサポートはお休みさせていただきます
連絡を取る:

Re: マップ名表示中のスクリプトについて

投稿記事by にゃたま » 2019年2月06日(水) 22:15

astral さんが書きました:SceneManagerについては、rpg_managers.jsの方にあります。
SceneManager.goto(Scene_Map); //マップ表示
SceneManager.push(Scene_Menu); //メニュー表示
で渡されたScene_***が最終的に現在のシーン(Scene_***)として、
SceneManager._scene
で参照出来るようになっているためです。


rpg_managers.jsのほうは見ていませんでした。
今の私にはここに書かれていることが理解できないことばかりなのでやはり
もっとjavascriptの勉強をする必要がありますね。
尚、こちらのスクリプトの1784行目に確かにSceneManager._sceneが定義されていました。

とりあえずこちらの件は解決しましたのでこれにてトピックを閉めさせていただきます。
astral様、しぐれん様、及び剣崎 宗二様、そしてにいやん様
お付き合いいただき誠にありがとうございました。

“MV:質問” へ戻る