下記のプロジェクトでFeatherがこの警告を出します。
W GM2016 Instance variable 'myname' declared outside of Create event, declare with 'var' or move to Create event. obj_test : Global Left Pressed 1:1
mynameがCreateイベントで定義されてないという警告です。
ためしにobj_testのCreateイベントで定義してみると警告は消えます。
しかし、mynameはStruct MyDataの変数でありobj_testの変数ではありません。
なんでこの警告が出るんでしょうか?
私がStructのことをちゃんと理解してないのかもしれないですが、Structで使う変数ってそれを持つオブジェクトで定義するべきなんでしょうか?
object obj_test
Createイベント
mydata = undefined;
test = function()
{
var _data = {
name1 : "taro",
}
mydata = new MyData(_data);
}
GlobalLeft Releasedイベント
test(); // ← ★ここに警告が出ます
script MyData
/// @param {struct} data
function MyData(_data) constructor
{
myname = _data.name1;
}
じぶんのところで再現してみましたが、警告はでませんでしたね。
バージョンは次の通りです。
IDE v2023.4.084
Runtime v2023.4.0113
検証ありがとうございます!
私のバージョンも同じで
IDE v2023.4.084
Runtime v2023.4.0113
です。
PCの環境が関係してるんでしょうかね?
再度同じ条件で試してみましたが、たしかにその警告でました!
ただ、これに関しては確かに謎ですね...
単純なバグっぽいきがしますけれど
出ましたか!
再現性があることが分かっただけでもちょっともやもやが晴れました
ありがとうございます!
構造体の引数にある_dataを別の名前にして、test()を消してから、またtest()を入れるとどうなるでしょうか?
こちらだと、上記の方法で警告は消えました。
Featherの警告の認識が微妙という気がします。
検証ありがとうございます!
構造体MyDataの_dataを別の名前にしましたが私の環境では消えませんでした。
一回警告が消えた後でo_testのCreateイベントを適当にいじって更新させるとどうなるでしょうか。また警告出ませんか?
Featherのスキャンのタイミングの関係で消えたり出たりするようなので。
Createイベントを編集してみたら、見事に警告が復活しました。
なんとも謎と思える動きですね。
謎ですね。
たぶんこれと同じ原因のFeatherの問題をバグ報告しましたので、今後の修正を待ちたいと思います。