いつもお世話になっていますm( )m
「計略」というタイプのスキルを作っています。パーティー内に
「軍師」がいる場合、アクター自身が習得しているスキルだけでなく
軍師が習得しているスキルを全員が使うことができる
(威力の大小はともかく)という仕組みを作ろうとしています。
Window_SkillList.prototype.makeItemList
↑スキルウィンドウに含めるスキルの一覧を作っているこの部分で、
最終的にthis._dataの中にスキル一覧をまとめていることが分かったため、
試にその最後に、
this._data.push($dataSkills[5]);
と書き加えてみたところ、パーティ全員のスキルウィンドウに5番のスキルが
追加され、選ぶと問題なく使用することもできました。
次に"5"のところに軍師が習得しているスキルの番号を順に入れて行けばよいと
思ったのですが、エラー(添付画像)が出て上手くいかなかったため、
一歩戻って以下のように試してみました。
var kari = [5,6,7];
kari.forEach(function(number){
this._data.push($dataSkills[number]);
});
↑これでも同様のエラーが出てしまいました。forEachの使い方の間違いで
numberに、一週目に5、二週目に6、三週目に7がちゃんと入っていないのかな?
と思って、一行上にconsole.logをはさんでみました。
var kari = [5,6,7];
kari.forEach(function(number){
console.log(number);
this._data.push($dataSkills[number]);
});
↑これで試したところ、numberにはちゃんと5と6と7がそれぞれ
入っていました。
ここで途方に暮れています。this._data.push($dataSkills[5]);
とすればちゃんと5番のスキルが追加されたのに、forEachで
5番、6番、7番のスキルを追加しようとするとエラーが出る、
というのはどんな理由が考えられるでしょうか?
【解決済み】forEachの使い方が間違っているでしょうか?
【解決済み】forEachの使い方が間違っているでしょうか?
- 添付ファイル
-
- sample.jpg (6.47 KiB) 閲覧数: 3698 回
最後に編集したユーザー 月宮りお on 2016年12月24日(土) 22:36 [ 編集 1 回目 ]
Re: forEachの使い方が間違っているでしょうか?
月宮りお様
お世話になります。
良く分かりませんがforEach内では
エラー内容に出ている通りthis._dataがundefinedになるようです。
良く分かりませんが(2回目)
this._actorが真のときに以下を実行したらいったぽいので載せておきます。
var kari = [8,9,10];
var kari2 = this._data;
kari.forEach(function(number){
//ここでthis._dataがundefinedになる。
kari2.push($dataSkills[number]);
})
this._data = kari2;
お世話になります。
良く分かりませんがforEach内では
エラー内容に出ている通りthis._dataがundefinedになるようです。
良く分かりませんが(2回目)
this._actorが真のときに以下を実行したらいったぽいので載せておきます。
var kari = [8,9,10];
var kari2 = this._data;
kari.forEach(function(number){
//ここでthis._dataがundefinedになる。
kari2.push($dataSkills[number]);
})
this._data = kari2;
RPGで笑顔を・・・
ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup
github
https://github.com/mattuup/RPGMakerMZ
ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup
github
https://github.com/mattuup/RPGMakerMZ
Re: forEachの使い方が間違っているでしょうか?
forEach文に渡したコールバック関数(function(number){~)の中で「this」が指す先は、
forEachを実行したオブジェクトではなくグローバルオブジェクトです。
コールバック関数の中のthisが指す先をforEachを実行したオブジェクトにしたいなら、
こうしてください(三行目に注目)。
forEachを実行したオブジェクトではなくグローバルオブジェクトです。
コールバック関数の中のthisが指す先をforEachを実行したオブジェクトにしたいなら、
コード: 全て選択
kari.forEach(function(number){
this._data.push($dataSkills[number]);
}, this);
こうしてください(三行目に注目)。
Re: forEachの使い方が間違っているでしょうか?
何かおかしいと思ったら最後にthisがついてなかったんですね。
失礼しました。
失礼しました。
RPGで笑顔を・・・
ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup
github
https://github.com/mattuup/RPGMakerMZ
ツイッター(ツクラーの巣窟)(閲覧は自己責任でお願いします)
https://twitter.com/mattuup
github
https://github.com/mattuup/RPGMakerMZ
Re: forEachの使い方が間違っているでしょうか?
お二方ご回答ありがとうございますm( )m
やはり書き方が間違っていたのですね>_<
外側と内側でthisの中身が違っているとは
思いもしませんでした。
お陰様で無事に意図通りの挙動にできました。
ありがとうございますm( )m
やはり書き方が間違っていたのですね>_<
外側と内側でthisの中身が違っているとは
思いもしませんでした。
お陰様で無事に意図通りの挙動にできました。
ありがとうございますm( )m