MXML からコンポーネントを使おうとしたところ、「don't know how to parse…」というエラーが表示されました。
コンパイラで SWC ファイルが見つからないか、SWC ファイルの内容にコンポーネントがリストされていません。Flex が検索するディレクトリに SWC ファイルがあることを確認し、xmlns プロパティが正しい場所を参照しているかを調べる必要があります。SWC ファイルを MXML ファイルと同じディレクトリに移動し、次の例のように名前空間を「*」に設定してみてください。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*">
詳しくは、Flex コンパイラの使用を参照してください。
MXML からコンポーネントを使おうとしたところ、「xxx is not a valid attribute…」というエラーが表示されました。
属性が正しく入力されているか確認してください。また、属性がプライベートになっていないか確認してください。
コンポーネントがインスタンス化されていることを確認します。確認するには、Button コントロールと TextArea コントロールを MXML アプリケーションに配置し、text プロパティに対して、ボタンがクリックされたときのコンポーネントの ID を設定する方法があります。次の例を参考にしてください。
<!-- This verifies whether a component was instantiated. --> <zz:mycomponent id="foo"/> <mx:TextArea id="output"/> <mx:Button label="Print Output" click="output.text = foo.id;"/>
コンポーネントは適切にインスタンス化されていますが、表示されません(1)。
場合によっては、コンポーネントでヘルパークラスが必要になったときに、ヘルパークラスがまだ使用可能になっていない可能性があります。Flex では、初期化が必要となる順にクラスをアプリケーションに追加します(まず基本クラス、次に子クラスというように)。ただし、クラスの初期化中に呼び出される静的メソッドに依存クラスがある場合、Flex はその静的メソッドがいつ呼び出されるかわからないので、依存クラスを他のクラスの前に配置する必要があることを認識できません。
解決法としては、クラス定義に静的変数の依存関係を追加する方法が考えられます。Flex では、クラスを初期化する前に静的変数の依存関係をすべて解決することの必要性が認識されるので、これを利用すれば適切な順序でクラスをロードできます。
次の例では、クラス A をクラス B の前に初期化する必要性をリンカーに伝えるために静的変数を追加しています。
public class A {
static function foo():Number {
return 5;
}
}
public class B {
static function bar():Number {
return mx.example.A.foo();
}
static var z = B.bar();
// Dependency
static var ADependency:mx.example.A = mx.example.A;
}
コンポーネントは適切にインスタンス化されていますが、表示されません(2)。
measuredWidth プロパティと measuredHeight プロパティがゼロ以外に設定されているか確認します。ゼロか NaN の場合は、measure() メソッドが正しく実装されているか確認してください。
また、visible プロパティが true に設定されているか確認してください。visible が false の場合は、コンポーネントが invalidateDisplayList() メソッドを呼び出しているか確認してください。
コンポーネントは適切にインスタンス化されていますが、表示されません(3)。
コンポーネントで使用されているカスタムクラスまたはシンボルが、別のクラスまたは SWC ファイルによってオーバーライドされている可能性があります。名前の競合がないか確認してください。
このページに新しいコメントが追加された場合に、電子メールでの通知を希望する。 | コメントレポート