0

swcA.swcとswcB.swcを含むAS3プロジェクトがあります。swcAには、mcAという名前のActionScriptクラスのmcエクスポートがあります。

mcAには子コンボボックスがあります。swcBは、以下に示すように、swcAと同様の状況にあります。

swcA
    mcA (a definition)
       combobox (a child of mcA)

swcB
    mcB (a definition)
      combobox (a child of mcB)

そして私のコードでは:(3つの状況)

  1. var m:MovieClip = new mcA(); // work fine

  2. var m:MovieClip = new mcB(); // work fine

  3. var m1:MovieClip = new mcA();

    var m2:MovieClip = new mcB();  // trace type error:
                                   // it says xxxxMovieClip couldn't convent to xxx.xxx.Combobox;
    

私のswcは非常にシンプルで、MovieClipといくつかのflコントロールが含まれています。このMovieClipには、リンケージ名が付いています。

Flash作成者ではUIレイアウトの設計がより簡単であるため、コーディングするのは好きではありません。

また、1つ以上のflコントロールを含む他のswcファイルがリンケージ名を持つMovieClipでラップされると、コンパイル時にエラーが発生します。

4

1 に答える 1

0

SWC の FLA ファイルを見ないとわかりませんが、私ならこの方法をとったでしょう。でもデザイン次第。

コンボボックス コンポーネントをライブラリに配置し、リンクを確認してから、アセットと呼ばれる単一の SWC をエクスポートします。SWC をプロジェクトにリンクします。

AS3 では、次のことができます。

var mc1:MovieClip = new MovieClip();
var cb1:ComboBox = new ComboBox();
mc1.addChild(cb1);
addChild(mc1);
// Accessible via mc1.cb1. and cb1.

次のこともできます。

var sp1:Sprite = new Sprite();
var cb2:ComboBox = new ComboBox();
sp1.addChild(cb2);
addChild(sp1);
// Accessible via sp1.cb2. and cb2.

最近では、タイムライン ベースまたはグラフィカルに大幅にカスタマイズされている場合を除き、ムービークリップよりもスプライトを使用する傾向があります。

作成後にアセットのタイプを切り替えると、アセットを作成するときにバグが発生することがよくあります。例えば、グラフィックからのムービークリップ。ムービークリップを削除して再作成し、その中にコンボボックスを配置してリンケージを割り当てる傾向があります。これは、必要な数の変数に割り当てても問題ありません。

D

PS。

フラッシュを開いてムービークリップを作成しました (ボックスを選択して F8 キーを押します)。

  1. リンケージ名を「コンテナ」にしました

  2. ムービークリップ内にコンボボックスをドロップし、インスタンス名を付けました (「cb」のプロパティ パネル内)。

次に、このコードはルート タイムラインで正常に機能しました。

import flash.display.MovieClip;

var mc1:MovieClip = new container();
addChild(mc1);

var mc2:MovieClip = new container();
addChild(mc2);

var mc3:MovieClip = new container();
addChild(mc3);

trace(mc1.cb); // Found [object ComboBox]
trace(mc2.cb); // Found [object ComboBox]
trace(mc3.cb); // Found [object ComboBox]
于 2012-09-11T11:45:13.063 に答える