【解決済】選択中の項目をスクリプトで取得する方法について

chro
記事: 86
登録日時: 2021年2月14日(日) 11:26

Re: 選択中の項目をスクリプトで取得する方法について

投稿記事by chro » 2021年5月11日(火) 22:31

最初は全然問題ないです。
ただ、何時間格闘してもわからなかったり悩んだりしてしまうので、辛くなったりしないかと気にはなります。

とりもち さんが書きました:(まだ、argumentsなどが完全に理解できていません)


.apply(this, arguments)については、使用例はこちらに軽く書いてあります。
公式プラグインを読み解く
https://tkool.jp/mz/plugin/make/koushiki.html

コアスクリプトだと、.call(this, index)のようになっています。

コード: 全て選択

Window_BattleActor.prototype.select = function(index) {
    Window_BattleStatus.prototype.select.call(this, index);
    $gameParty.select(this.actor(index));
};

.call(this, rect)や.call(this)
というパターンもあり、function(index)で指定されている引数(indexの部分)を毎回指定しなければなりません。
.apply(this, arguments)だと、この個別の引数の指定が不要になって、argumentsだけで動作するようになります。
この引数の変更をミスるとバグるので、値を変更する必要がない場合、.apply(this, arguments)という書き方なら共通なので楽というだけです。

特にshowPictureメソッドのように、引数が多いものもあります。

コード: 全て選択

Game_Screen.prototype.showPicture = function(pictureId, name, origin, x, y, scaleX, scaleY, opacity, blendMode)

.call(this, pictureId, name, origin, x, y, scaleX, scaleY, opacity, blendMode)
.apply(this, arguments) //省略できるので便利

入門書にはプログラミング言語共通での命名規則が解説されていたりするのもあります。
処理を実行するのは動詞、isやhasなどで始めるとBoolean値(true/false)を判定するためのもの、複数形なら配列やオブジェクトを返すというような意味をもたせます。
そうすることで、関数名(メソッド名)だけで処理内容がある程度予測出来るようになります。

Scene_Battle.prototypeだと、onで始まるのはユーザのキー入力後、OkやCancelが含まれるときは決定かキャンセル、commandで始まるとアクターコマンド、などとざっくり把握しやすいです。

とりもち
記事: 9
登録日時: 2021年5月09日(日) 16:23

Re: 【解決済】選択中の項目をスクリプトで取得する方法について

投稿記事by とりもち » 2021年5月13日(木) 11:12

引数について、学んできました。
なるほど……、argumentsは既に設定されている引数を取得してくれる便利なものなのですね……。

プログラム的には、argumentsも関数にあたるのでしょうか。

thisもコアスクリプト内での使用頻度が高く、勉強しなければならないと感じました。
関数の一部分を代替してくれるものと認識していますが、どこからどこまでなのかまだまだわからないことだらけです。

引数が多いものをargumentsで代替して、ミス(バグ?)を減らすという発想が既にあるのは、プログラム初心者からすると、洗練されているなあという印象です。

命名に規則性があるのも有難いです。chroさんが仰るようにある程度は処理を予測することできますもんね。
HN:とりもち
ツクール歴:2年生
javascriptは詳しくわからないけど、コアスクリプトを眺めているうちに、
なんとなく意味はわかるになってきた...かな?
日々奮闘中です。

“MZ:質問” へ戻る