これは、私が取り組んでいる大規模な UI の問題で発生している問題のいくつかを解決することを願っているアーキテクチャの問題です。
背景: Scaleform で使用するゲーム内 UI を Flash (Flash CC を使用) で構築しています。私はヌードと適度な知識の間のどこかにいます。おそらく、後者は十分に危険です。
私の現在のアーキテクチャは次のとおりです。
- 親: UI のすべてのインスタンスを管理および作成します。独自の FLA/SWF ファイルがあります。
- コンポーネント 1: これは親のコンポーネントの 1 つで、独自の FLA/SWF ファイルがあります
- コンポーネント 2: これは親の別のコンポーネントで、独自の FLA/SWF ファイルがあります
- 共有 HUD アセット: これには、すべての要素 (独自の FLA/SWF ファイル) 間の共通要素が含まれます。すべてのシンボルをエクスポートし、これらは適切なコンポーネントのライブラリにインポートされます
- 共有アセット: これはすべての UI (ボタン、背景など) で共通です。また、HUD アセットのようにエクスポート/インポートします。
ここでの目的は、複数のタイプのコンポーネントを各コンポーネント ファイルに保存できるようにすることです。HUD は使用するコンポーネントを選択し、HUD を「組み立て」ます。アーティストは、より大きな HUD ファイルに触れたり、コードをいじったりすることなく、コンポーネント ファイルとアセット ファイルで作業することができます。
最初はすべてのアセットをメインの親に保存しようとしましたが、Flash は... 複数のレイアウトのインポートされたシンボルを管理するのは少し面倒です。フォントが重複したり、リンクが壊れたりすることになります。
次に、純粋な AS を使用してインスタンスを作成しようとしました。つまり、インポートされた AS ファイルから "component = new component()" を使用しましたが、Flash IDE で作成されたレイアウト (AS だけで作成されたものではない) が作成されないという問題に遭遇したようです。親がアクセスできます。(これは問題だと思います。このサイトや他のサイトで同様の問題を経験している一部の人々を誤解している可能性があります。)
ここで、SWF ファイルをロードすることでこの問題に対処できると判断しましたが、これらのロードされた SWF ファイルで「TypeError: エラー #1009」が多数発生しています。具体的には、別の Scaleform コンポーネント (ButtonBar) によって参照されるボタン (AnimatedToggleButton)。それと ButtonBar の両方が共有アセットから HUD コンポーネントにインポートされますが、AnimatedToggleButton は他の場所では使用されません。適切にエクスポートおよびインポートされ、コンポーネント SWF でコンパイルされたときから機能しますが、SWF がロードされると、親で欠落しているクラス/null として表示されます。いつもの裏技を全部試したり、ステージを待ったり。
これは、この種のものに適したアーキテクチャですか? もしそうなら、インポートされたシンボルはどうなりますか? 使わないと存在しないの?