Well, I entered the two related issues as:

https://bugs.adobe.com/jira/browse/SDK-21100
https://bugs.adobe.com/jira/browse/SDK-21101

Maybe someone at Adobe can manage to reproduce them.  I'm not really sure
how much harm is being done, since the code appears to work right in the
end.  But someone weird and unexpected seems to be going on under the hood.


On Tue, May 12, 2009 at 2:39 PM, Pan Troglodytes <chimpathe...@gmail.com>wrote:

> Thanks for giving me some confirmation.  Now if we could just figure out
> what Alex/Adobe need to do to replicate our tests.
>
> The reason it doesn't give a warning on "y" is due to what I referenced
> (perhaps unclearly) above.  Notice in the warning it tells you it can't bind
> to that value on the *itemRenderer *(GenericTest_inlineComponent1 in my
> test), not on the *TestObject* instance.  The itemRenderer has an x and y
> object, so that's why it doesn't complain.  It doesn't make any sense that
> it should be looking at binding to the itemRenderer instead of the
> TestObject instance, though.
>
>
> On Tue, May 12, 2009 at 12:24 PM, valdhor <valdhorli...@embarqmail.com>wrote:
>
>>
>>
>> Jason
>>
>> As a sanity check I tried it and I get the exact same error. I am using
>> Flex SDK 3.3.0 and Flash Player WIN 9,0,159,0 Debug.
>>
>> Strangely enough, changing b to y fixes it and the error goes away. Other
>> variable identifiers I have tried (Very small sample) gives the error as
>> well.
>>
>> It's got me beat.
>>
>> Why would the posted code give an error at all?
>>
>> Why would y work and everything else not?
>>
>>
>> --- In flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>, Pan
>> Troglodytes <chimpathe...@...> wrote:
>> >
>> > I wonder if I wasn't clear enough on this - these are run-time warnings
>> that
>> > output to the console. You don't get those?
>> >
>> >
>> > On Mon, May 11, 2009 at 5:27 PM, Alex Harui <aha...@...> wrote:
>> >
>> > >
>> > >
>> > > I didn't get any warnings like you did so I couldn't investigate
>> further.
>> > >
>> > >
>> > >
>> > > Alex Harui
>> > >
>> > > Flex SDK Developer
>> > >
>> > > Adobe Systems Inc. <http://www.adobe.com/>
>> > >
>> > > Blog: http://blogs.adobe.com/aharui
>> > >
>> > >
>> > >
>> > > *From:* flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>[mailto:
>> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>] *On
>> > > Behalf Of *Pan Troglodytes
>> > > *Sent:* Saturday, May 09, 2009 10:38 PM
>> > > *To:* flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>
>> > > *Subject:* Re: [flexcoders] using "as" breaks data binding?
>> > >
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > 3.3.0. I also get it with 4.0.0.6137. Just downloaded and got it in
>> > > 6772, too. I'm using player version 10,0,12,36. Do you need to know
>> > > anything about my Flex Builder version? Let me know anything else I
>> can
>> > > provide.
>> > >
>> > > When you say you don't get it with the soon-to-be 3.4, what exactly do
>> you
>> > > mean? You just don't get the run-time warning? Did you track down why
>> it
>> > > would be okay with "x" and see if that's still doing whatever weird
>> thing it
>> > > is in 3.4?
>> > >
>> > > On Sat, May 9, 2009 at 4:11 PM, Alex Harui <aha...@...> wrote:
>> > >
>> > >
>> > >
>> > > Which version of Flex? I don't get it on the latest builds that will
>> ship
>> > > as 3.4
>> > >
>> > >
>> > >
>> > > Alex Harui
>> > >
>> > > Flex SDK Developer
>> > >
>> > > Adobe Systems Inc. <http://www.adobe.com/>
>>
>> > >
>> > > Blog: http://blogs.adobe.com/aharui
>> > >
>> > >
>> > >
>> > > *From:* flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>[mailto:
>> flexcoders@yahoogroups.com <flexcoders%40yahoogroups.com>] *On
>> > > Behalf Of *Pan Troglodytes
>> > > *Sent:* Friday, May 08, 2009 11:06 PM
>> > > *To:* flexcoders
>> > > *Subject:* [flexcoders] using "as" breaks data binding?
>> > >
>> > >
>> > >
>> > >
>> > >
>> > > I've run across some peculiar behavior and I am trying to figure out
>> if I
>> > > should report it and if so, how exactly to explain it. Given these two
>> bits
>> > > of code:
>> > >
>> > > *TestObject.as:*
>> > > package
>> > > {
>> > > public class TestObject
>> > > {
>> > > [Bindable] public var a:uint = 2;
>> > > [Bindable] public var b:uint = 3;
>> > > [Bindable] public var x:uint = 1;
>> > > }
>> > > }
>> > >
>> > > *Main Application:*
>> > > <?xml version="1.0" encoding="utf-8"?>
>> > > <Application
>> > > xmlns="http://www.adobe.com/2006/mxml";
>> > > >
>> > > <Script>
>> > > <![CDATA[
>> > > import mx.collections.ArrayCollection;
>> > > [Bindable] public var d:ArrayCollection = new ArrayCollection([
>> > > new TestObject,
>> > > new TestObject,
>> > > new TestObject
>> > > ]);
>> > > ]]>
>> > > </Script>
>> > > <List dataProvider="{d}">
>> > > <itemRenderer>
>> > > <Component>
>> > > <HBox>
>> > > <Label text="{TestObject(data).a}"/>
>> > > <Label text="{(data as TestObject).b}"/>
>> > > <Label text="{(data as TestObject).x}"/>
>> > > </HBox>
>> > > </Component>
>> > > </itemRenderer>
>> > > </List>
>> > > <Button click="for each (var o:TestObject in d) { o.x++; o.a++; o.b++
>> > > }"/>
>> > > </Application>
>> > >
>> > > If you run this application, you get the following warnings:
>> > > warning: unable to bind to property 'b' on class
>> > > 'GenericTest_inlineComponent1'
>> > > warning: unable to bind to property 'b' on class
>> > > 'GenericTest_inlineComponent1'
>> > > warning: unable to bind to property 'b' on class
>> > > 'GenericTest_inlineComponent1'
>> > > warning: unable to bind to property 'b' on class
>> > > 'GenericTest_inlineComponent1'
>> > > warning: unable to bind to property 'b' on class
>> > > 'GenericTest_inlineComponent1'
>> > > warning: unable to bind to property 'b' on class
>> > > 'GenericTest_inlineComponent1'
>> > >
>> > > There's a couple of things that stand out here. First, it doesn't
>> complain
>> > > about properties "x" or "a". The reason it doesn't complain about
>> property
>> > > "a" is that I used "TestObject(data).a" instead of "(data as
>> > > TestObject).a". If you change it to the other way around, you will get
>> a
>> > > warning on "a" as well. I find this rather bizarre, as I thought there
>> was
>> > > no functional difference to the two, other than "as" returning null if
>> the
>> > > object wasn't of the appropriate type rather than just erroring out
>> like
>> > > straight type coercion does. But type coercion/as are very (ahem)
>> "lightly"
>> > > documented so I admit I don't know a lot. But I don't think it's
>> because of
>> > > the null problem, since you can replace it with "TestObject(null).b"
>> and it
>> > > stops giving the warning.
>> > >
>> > > The second weird thing is that it doesn't complain about "x" when
>> using
>> > > "(data as TestObject).x" like it does with a. As you can see, it's
>> claiming
>> > > this error is on GenericTest_inlineComponent1. This is significant
>> > > because it appears that it's instead doing some binding to the "x"
>> property
>> > > on the item renderer, which is *very* odd. You can try this yourself
>> by
>> > > changing "x" to other strings. Ones where there is a property of HBox
>> named
>> > > the same thing won't give you a warning. Others will.
>> > >
>> > > Yet for all this griping, it seems the data binding IS working. If you
>> > > click on the button, you'll see all the labels in the list change as
>> the
>> > > data is being changed.
>> > >
>> > > So, anyone want to shed some light on these two behaviors?
>> > >
>> > > --
>> > > Jason
>> > >
>> > >
>> > >
>> > >
>> > > --
>> > > Jason
>> > >
>> > >
>> > >
>> >
>> >
>> >
>> > --
>> > Jason
>> >
>>
>>  
>>
>
>
>
> --
> Jason
>



-- 
Jason

Reply via email to