フォーラム一覧   -   トピック一覧
   Flex Builder 2.0
     itemRendererを使用した際のワーニングについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
malulun
投稿日時: 2007-2-8 1:33
やや 常連さん
登録日: 2007-1-7
居住地:
投稿: 26
itemRendererを使用した際のワーニングについて
以下のようなコードを実行した際に、出力されるワーニングが消せずに悩んでおります。

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">    
    <mx:Script>
        <![CDATA[
            [Bindable]
            public var initDG:Array = [
                {Artist:'Pavement', Album:'Slanted and Enchanted'},
                {Artist:'Pavement', Album:'Brighten the Corners'}
            ];
        ]]>
    </mx:Script>
    <mx:DataGrid id="myGrid" dataProvider="{initDG}" variableRowHeight="true">    
        <mx:columns>
                <mx:DataGridColumn dataField="Artist"/>
                <mx:DataGridColumn dataField="Album">
                    <mx:itemRenderer>
                        <mx:Component>
                           mx:Text width="100%" selectable="false" text="{data.Album}"/>
                        </mx:Component>
                    </mx:itemRenderer>
                </mx:DataGridColumn>    
        </mx:columns>        
    </mx:DataGrid>         
</mx:Application>

以上のようなMXアプリケーションを実行すると、以下のようなワーニングが出力されます。

warning: unable to bind to property 'Album' on class 'Object' (class is not an IEventDispatcher)
warning: unable to bind to property 'Album' on class 'Object' (class is not an IEventDispatcher)
warning: unable to bind to property 'Album' on class 'Object' (class is not an IEventDispatcher)
warning: unable to bind to property 'Album' on class 'Object' (class is not an IEventDispatcher)
warning: unable to bind to property 'Album' on class 'Object' (class is not an IEventDispatcher)

どうやったらこのワーニングを解消できるのでしょうか?
例自体は、ほとんどFlexBuilderのヘルプ内容そのままなのですが、それでもワーニングって・・・?
nobu
投稿日時: 2007-2-8 2:00
ご主人様
登録日: 2006-6-17
居住地:
投稿: 588
Re: itemRendererを使用した際のワーニングについて
私の環境でソースをコンパイルしてみましたが問題なく動作しま
した

私の環境は次のとおりです。

OS:Windows XP Professional SP2
Eclipse 3.2.1
Flex2.0.1(英語)
Tomcat5.5.20
JavaSE6

一度プロジェクトを新規で作り直してみてはいかがでしょうか?
また、Flex2をインストールしなおせるのであれば2.0.1を試され
てはいかがでしょうか?
malulun
投稿日時: 2007-2-9 2:05
やや 常連さん
登録日: 2007-1-7
居住地:
投稿: 26
Re: itemRendererを使用した際のワーニングについて
ご返答ありがとうございます。
当方の環境は、
 WindowsXP Pro SP2
 Flex Builder 2.0.147081
となっております。
一点記述し忘れていたこととして、デバッグ実行した時に、コンソール画面にワーニングが出力されているということです。
プロジェクトを作り直したり、実行の構成をSWFにしたりしても改善しませんでした
いったい何なのでしょう??
wolf
投稿日時: 2007-2-13 9:24
ご主人様
登録日: 2007-1-26
居住地: 千葉
投稿: 199
Re: itemRendererを使用した際のワーニングについて
text="{data.Album}"をdata.Album as String
に明示的にキャストしてもダメですか?

kodewriter
投稿日時: 2007-2-13 10:41
ご主人様
登録日: 2006-10-17
居住地:
投稿: 67
Re: itemRendererを使用した際のワーニングについて
malulunさん,

動的プロパティはバインディングの対象にすることはできません。
バインドするためには、データ用のクラスを作ります。

MyData.as

package {

    public class MyData {
        
        [Bindable]
        public var Artist : String;

        [Bindable]
        public var Album : String;

        public function MyData(Artist : String = "", Album : String = "") {
            this.Artist = Artist;    
            this.Album = Album;    
        }
    }
}



            [Bindable]
            public var initDG:Array = [
                new MyData('Pavement', 'Slanted and Enchanted'),
                new MyData('Pavement', 'Brighten the Corners')
            ];

malulun
投稿日時: 2007-2-14 2:24
やや 常連さん
登録日: 2007-1-7
居住地:
投稿: 26
Re: itemRendererを使用した際のワーニングについて
kodewriter さんありがとうございます。

ご指摘のように変更することでワーニングは解消することができました。
動的プロパティについての認識が甘かったです・・・。

しかし、FlexBuilder2のヘルプに同じような例があがっていたような気もするので余計混乱してしまっていました・・・。
ron606060
投稿日時: 2007-8-31 12:24
ご主人様
登録日: 2007-7-11
居住地:
投稿: 214
Re: itemRendererを使用した際のワーニングについて
割り込み失礼します。

malulun さんの場合、mxml内でArrayにデータをセットしていますが、asファイルから(別ファイルから)データプロバイダにデータをセットするときは、どのようにすれば警告を解除できますでしょうか???
neworder
投稿日時: 2007-9-1 1:28
ご主人様
登録日: 2007-7-14
居住地: 東京
投稿: 176
Re: itemRendererを使用した際のワーニングについて
やり方は同じでいいと思います。

ワーニングを消すには
1. data binding をきちんと設定する。
2. data binding を使わない。

1 のやり方としては、上のように型付けされたクラスを定義し [Bindable] タグをつけるか、
もしくは ObjectProxy を使う方法が考えられます。
各 data を
new ObjectProxy( { ... } )
のように包んでから配列に格納したものを、dataProvider にセットします。

2 は単に初期化だけが必要な場合です。data binding は必要ないのですが、
{ } を使うと data binding が設定されてしまいます。
そこで、itemRenderer が Text で id="t1" だとして、
 dataChange="t1.text = data.name" 

などとします。こうすると data binding は設定されなくなるので
ワーニングもなくなります。
もしくは
 text="{setText(data)}"

として、
 private function setText(value:Object):void
{
   t1.text = data.name;
}

などとします。data にのみ data binding が設定されるため、ワーニングは出なくなります。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を