6

解決:

同じ問題が発生した場合は、addChild()ではなくaddElement()が問題を解決しました。


mxmlからactionsctiptに移行しようとしています。プロパティを<s:Rect>作成して設定したものがありますが、追加に問題があります。

var aRect:Rect = new Rect();
//set properties like aRect.x, aRect.y, aRect.width, aRect.height

//tried adding it various ways
addChild(aRect);
Application.addChild(aRect);
Application.application.addChild(aRect);
stage.addChild(aRect);

しかし、私はエラー 1067を受け取り続けます:タイプspark.primitives:Rectの値の暗黙の強制は無関係のタイプflash.display:DisplayObjectになります

元々はmxmlにありましたが、内部に<s:Application>ネストされておらず、内部にありました。

<s:Application>

    <s:Rect id="aRect" x="10" y="10" width="15%" height="15%">
         //then fill code here, removed for readability
    </s:Rect>

</s:Application>

どうしたのか、actionscriptはmxmlよりも優れていると思いました。

4

5 に答える 5

2

に変更addChild(aRect);してみましたaddElement(aRect);が、うまくいきました。

于 2010-03-19T17:08:57.473 に答える
1

これは、Flex 4 によって、MXML ベースのアプリケーションで表示階層が機能する方法が大幅に変更されたためです。addChild() はもはやあなたが望むように単純に機能しなくなったので、これは少し混乱します - データプロバイダに要素を追加し、次にそれらの要素を表示するロジック (どの要素をどこに追加し、どのようにスキンを適用するか) を行う必要があります。等)は他で取り扱っております。ただし、非常に具体的な方法で懸念事項を分離する必要があるため、これは一種の便利な変更です。要素をすべて dataProvider に追加したら、レイアウト オブジェクトを自由に (実行時でも) 交換して、アプリケーションの外観を変更できます。

編集: 技術的には、変更されたのは displayList 自体ではありません。Flex で使用される基本単位が「グループ」になったという事実です。s:Application でさえグループを拡張します。コンテンツをグループ (または最上位のアプリケーション) に追加し、グループにレイアウトを割り当てて、追加したアイテムを表示する方法を指定します。

于 2010-03-19T17:12:11.527 に答える
0

はい、DisplayObject が必要です。私は spark.primitives.Rect に慣れていませんが、新しい Sprite を作成し、その Graphics オブジェクトでメソッドを呼び出して四角形を描画することはできますか?

于 2010-03-19T16:57:24.680 に答える
0

厄介なことに、addElement を使用してフラッシュ アセット ( swf swc ) (表示オブジェクト) を追加するのに苦労することがよくあります。

私は今これを行う方法に取り組んでいます:(より多くのフープとジャンプ

また、私の swc はパッケージ エクスプローラーで表示できません (なぜですか?)

于 2010-05-12T00:36:54.613 に答える
0

ライブ ドキュメントによると、Application クラスの addChild メソッドでは、それが displayObject である必要があります。

于 2010-03-19T16:58:24.810 に答える