2011-01-04 6 views
0

でのFlexチェックボックスが私はコンポーネントのチェックボックスを持っています。私はもともとmain.mxmlにすべてのコードを持っていましたが、実際には長くなっていました。コードをコンポーネントに分解する方が良いと考えました。また、同じコンセプトが適用される他のプロジェクトもありますので、実際にこれを理解したいと思います。アドレスは、コンポーネント

私は、次の機能があります。

myComponent.myCB_1.selected 

動作しません:のように、

private function checkAlarms(currentTime:Date):void 
{ 
    if (!breakfastAlarmSounded) 
    { 
     if ((currentTime.hours > breakfastTime.hours) || ((currentTime.hours == breakfastTime.hours) && (currentTime.minutes >= breakfastTime.minutes))) 
     { 
      if (myCB_1.selected) 
      { 
       playBreakfastAudioAlarm(); 
      } 
      if (myCB_2.selected) 
      { 
       playBreakfastVisualAlarm(); 
      } 

      breakfastAlarmSounded = true; 
     } 
    } 
... 

は、単にコンポーネントに対処します。誰かがチェックボックスのid(myCB_1)を参照するコンポーネント内に変数を作成する必要があると言いましたが、私は実際にそのことを理解していないか、やり方を知っていません。

main.mxml内のコンポーネントのCheckBox "myCB_1"のステータスをテストするにはどうすればよいですか?非常に少ない情報で

多くのおかげで、

マーク

(初心者)

+0

なぜこれは機能しませんか? main.mxmlからどのように呼び出すのか教えてください。メインにカスタムコンポーネントはどのように含まれていますか? – bedwyr

+0

main.mxmlの内容を完全に投稿してください。mainに新しいカスタムコンポーネントを組み込んだ方法を確認する必要があります。 – bedwyr

答えて

0

、私はあなたが最初のCheckBoxがmain.mxmlに含まれており、カスタムにそれを移動していた疑いがあるつもりです成分。その場合は、カスタムコンポーネントのIDを使用してCheckBoxのIDに対処する必要があります。このようなもの(main.mxmlから):

これが当てはまらない場合は、あなたの投稿を編集してください。


EDIT

あなたが新しいカスタムコンポーネントを作成し、その中にチェックボックスを移動すると述べました。グレート、それは役に立ちスタートだ:)あなたはmain.mxmlファイル内の新しいコンポーネントが含まれていた場合、それはこのような何かなります。もちろん

<component:YourNewComponent /> 

を、しかし、あなたはそれを命名(そしてどの名前空間が使用されていますそれを参照する)は私の例とは異なりますが、その原則はまだ適用されます。

<component:YourNewComponent id="myComponent" /> 

ここでからは、あなたがコンポーネントを参照することができるはず、とその中の任意の公共の要素:あなたがメインの中でそれを参照できるようにmain.mxmlでは、カスタム・コンポーネントのユニークなIDの文字列を与える必要があります:myComponent.myCB_1

0

コンポーネントのチェックボックスを参照する必要があります。スクリプトで

<local:MyComponent id="myComponent" /> 

、あなたはそれを参照したい:

if(myComponent.myCB_1.selected) { // do something } 
0

コンテキストに関する詳細を提供することは有用であるあなたは、このようなあなたのメインであなたのコンポーネントを使用することを言うことができますこのスクリプトを使用しています。それでも、私は助けるかもしれないいくつかの情報を捨てるつもりです。

スクリプトがコンポーネントにアクセスするには、コンポーネントのスコープ内にある必要があります。通常は、次のいずれかを意味します。

  • <script>タグがMXMLにあり、その中に同じMXMLファイル内のコンポーネントを参照するコードがあります。
  • <script source='external.as'/>タグがMXMLにあります。external.asは、MXMLファイル内のコンポーネントを参照しています。
  • スクリプト内にコンポーネントを作成していて、ActionScript内のコンポーネントの定義があります(例:var myCB_1:CheckBox;はクラス定義内にあります)。

スクリプトとコンポーネントが同じスコープ内にない場合、スクリプトとコンポーネントは互いに見えません。

0

奇妙にも動作します。ドット表記(myComponent.myCB_1.selected)および1120エラー(説明1120)のコンポーネントを参照すると、1119エラーが発生しました(説明1119:静的型クラスの参照を使用して未定義のプロパティmyCB_1にアクセスする可能性があります) :未定義のプロパティmyCB_1へのアクセス)myComponent経由でアドレス指定しない場合。

これらのエラーで私は事を実行しようとは思わなかった。長い話が短い - それは、コンポーネント(???)に行くアドレスの有無にかかわらず実行されます!

すべての入力に感謝し、他のコメントを聞くのが大好きです。

MCE