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...@adobe.com> 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 [mailto:flexcod...@yahoogroups.com] *On > Behalf Of *Pan Troglodytes > *Sent:* Saturday, May 09, 2009 10:38 PM > *To:* flexcoders@yahoogroups.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...@adobe.com> 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 [mailto:flexcod...@yahoogroups.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