■吉里吉里/KAG/TJS雑談質問スレ■その27at GAMEDEV■吉里吉里/KAG/TJS雑談質問スレ■その27 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト254:名前は開発中のものです。 13/03/20 20:09:31.17 WmrxifiJ TJSにnamespaceって仕様にないよね? やろうとすると内部クラス化していくしかないと思うんだけど 一つのクラスを分割されたファイルで定義する方法がいまいち わからん 下記で出来ることは分かったんだけど もうちっとうまい方法ないかな? // A.tjsの内容 class Anonymousness { class A { class X { } } } Namespace.A = Anonymousness.A; // B.tjsの内容 class Anonymousness { class B extends Namespace.A {} } Namespace.B = Anonymousness.B; // startup.tjsの内容 class Namespace { } Scripts.execStorage("A.tjs"); Scripts.execStorage("B.tjs"); var x = new Namespace.A.X(); // 動く var b = new Namespace.B(); // 動く 255:名前は開発中のものです。 13/03/20 20:37:40.22 rIX/D4xq >>254 class A { class X { } } Namespace.A = global.A; delete global.A; class B extends Namespace.A {} Namespace.B = global.B; delete global.B; とか? グローバル空間を一瞬でも汚すのは諦めるしかないかなぁ。 あと、クラス内クラス使う場合はinstanceofやScripts.getClassNames()の運用も注意のこと。 上の例の場合、当たり前だけど x instanceof "A.X" = (int)0 x instanceof "X" = (int)1 Scripts.getClassNames(x).join(",") = (string)"X" Scripts.getClassNames(b).join(",") = (string)"B,A" みたいに空間名が完全に失われる いっそ、class Namespace_A { var A = global.Namespace_A; } みたいに 名前付けの運用でカバーするという手も検討してみては? 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch