0

Flex SDK 4.6 を使用しています。ステージにスパーク チェックボックスを追加しようとすると、非常に奇妙なエラーが発生します。

var cb:CheckBox = new CheckBox();
optionsList.addElement(cb);

TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。spark.skins.mobile::CheckBoxSkin/drawBackground()[E:\dev\4.y\frameworks\projects\mobiletheme\src\spark\skins\mobile\CheckBoxSkin.as:162] で spark.skins.mobile で。 supportClasses::MobileSkin/updateDisplayList()[E:\dev\4.y\frameworks\projects\mobiletheme\src\spark\skins\mobile\supportClasses\MobileSkin.as:313] at mx.core::UIComponent/validateDisplayList( )[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:8999] mx.managers::LayoutManager/validateDisplayList()[E:\dev\4.y\ Frameworks\projects\framework\src\mx\managers\LayoutManager.as:736] mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers \LayoutManager.as:819] mx.managers::

チェックボックスが MXML で作成されている場合は問題ありませんが、AS で複数のインスタンスを作成し、それらをステージに追加する必要があります。

誰が私が間違っているのか手がかりを持っていますか?

4

1 に答える 1

1

コメントにあった誤解を解消するために投稿していますが、それがエラーの原因だと思います。引用するには:

creationComplete にチェックボックスを追加するときにチェックしましたが、私の場合、 updateDisplayList が呼び出されたときに creationComplete 後にチェックボックスが追加されます。

updateDisplayList() は、コンポーネントのライフサイクル中に頻繁に呼び出される可能性があります。画面上の何かを更新する必要があるたびに呼び出されます。updateDisplayList() は、creationComplete イベントがディスパッチされる前に少なくとも 1 回呼び出されますが、状況によっては、コンポーネントによっては、複数回呼び出される可能性があります。

あなたが共有したコードは文脈から少し外れていますが、そのままでは多くのチェックボックスができてしまいます。updateDisplayList() の繰り返しごとに新しいチェックボックスが作成されるためです。子の作成を updateDisplayList() ではなく createChildren() メソッドに移動することを強くお勧めします。

Spark Flex Component LifeCycleに関するドキュメントとMX Component LifeCycleに関するドキュメントがあります。

于 2012-05-14T15:41:14.963 に答える