Do you really need to use Repeater? - Gordon ________________________________
From: [email protected] [mailto:[EMAIL PROTECTED] On Behalf Of ibid049 Sent: Thursday, June 14, 2007 1:30 PM To: [email protected] Subject: [flexcoders] Re: Help Request : Deferred Instantiation and Bound SWFLoader Yes, these are still not showing up long after the time it would take to get them from the server. I understand the asynchronous bit. Also, running the swf in debug mode shows that downloadedBytes == totalBytes, so I'm sure it's done loading. Plus, like I said, setting creationPolicy="queued" makes them show up (but not creationPolicy="all"). I'm pretty sure it's some kind of timing issue, like something to do with calling createComponentsFromDescriptors() before the databinding classes have updated the underlying dataprovider. But I might be talking out of my butt. There's a lot of "magic" going on here under the hood that I don't understand. --- In [email protected] <mailto:flexcoders%40yahoogroups.com> , "Alex Harui" <[EMAIL PROTECTED]> wrote: > > Yes, of course, but I'm not sure what's going on with repeater bindings > and async loading. > > > > ________________________________ > > From: [email protected] <mailto:flexcoders%40yahoogroups.com> [mailto:[email protected] <mailto:flexcoders%40yahoogroups.com> ] On > Behalf Of Gordon Smith > Sent: Thursday, June 14, 2007 12:54 PM > To: [email protected] <mailto:flexcoders%40yahoogroups.com> > Subject: RE: [flexcoders] Re: Help Request : Deferred Instantiation and > Bound SWFLoader > > > > I tested locally. But shouldn't his SWFs eventually appear? > > > > - Gordon > > > > ________________________________ > > From: [email protected] <mailto:flexcoders%40yahoogroups.com> [mailto:[email protected] <mailto:flexcoders%40yahoogroups.com> ] On > Behalf Of Alex Harui > Sent: Thursday, June 14, 2007 10:57 AM > To: [email protected] <mailto:flexcoders%40yahoogroups.com> > Subject: RE: [flexcoders] Re: Help Request : Deferred Instantiation and > Bound SWFLoader > > Remember that SWFLoading is asynchronous in server environments. Not > sure Gordon tested locally or remotely. In an asynch environment, the > swf will not complete loading and have its stuff available until much > later, after a COMPLETE event (not creationComplete). > > ________________________________ > > From: [email protected] <mailto:flexcoders%40yahoogroups.com> [mailto:[email protected] <mailto:flexcoders%40yahoogroups.com> ] On > Behalf Of ibid049 > Sent: Thursday, June 14, 2007 9:07 AM > To: [email protected] <mailto:flexcoders%40yahoogroups.com> > Subject: [flexcoders] Re: Help Request : Deferred Instantiation and > Bound SWFLoader > > By the way, I can "fix" the problem by setting > creationPolicy="queued" on the TabNavigator, or by setting it > to "none" and then manually calling createComponentsFromDescriptors > after the array is populated. But that band-aid short-circuits > deffered instantiation, which I don't want to do. > > Also interesting is that creationPolicy="all" does not fix the > problem. This is why I was thinking it had something to do with the > timing of defferred instantiation vs. the bindings or something. It > almost acts like createComponentsFromDescriptors() is getting called > before the array is populated in the init() method, and then future > calls to createComponentsFromDescriptors() don't fire or something. > > --- In [email protected] <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% 40yahoogroups.com> > , "Gordon Smith" <gosmith@> wrote: > > > > Your code worked for me. I pasted it into a new FlexBuilder > project, and > > I made three different SWFs -- screen1.swf, screen2.swf, and > screen3.swf > > -- and put them in the same project folder. When I ran the app I saw > > each SWF as I clicked the tabs. Perhaps all three of your SWFs are > > copies of the same SWF? > > > > BTW, your 10-line init() method can be condensed into > > screens = new ArrayCollection( > > [ { incSWF: "screen1.swf" }, { incSWF: "screen2.swf" }, { > incSWF: > > "screen3.swf" } ]); > > > > - Gordon > > > > ________________________________ > > > > From: [email protected] <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% 40yahoogroups.com> > > [mailto:[email protected] <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% 40yahoogroups.com> > ] On > > Behalf Of ibid049 > > Sent: Wednesday, June 13, 2007 12:36 PM > > To: [email protected] <mailto:flexcoders%40yahoogroups.com> <mailto:flexcoders% 40yahoogroups.com> > > Subject: [flexcoders] Help Request : Deferred Instantiation and > Bound > > SWFLoader > > > > > > > > Please forgive the intrusion of contacting you directly, but I saw > > you post several times on a related topic in the flexcoders mailing > > list, and - after not receiving a response to my own query on the > > list, thought you might be able to save me hours of wall-to-head- > > banging with just a few seconds worth of advice. > > > > It seems that a viewStack component that contains a SWFLoader is > not > > successfully loading the SWF of the second and further panes. > > Frankly, I can't believe that's the case, because surely someone > else > > would have noticed this. I assume it's an elementary error on my > > part. > > > > The following mxml demonstrates the problem. I'm binding the > > repeater to an ArrayCollection of filenames that should be used as > a > > source for SWFLoaders inside the Repeater. This only loads the > first > > pane, even when clicking on the second or third pane. > > > > I must be doing this in either a wrong or non-standard way. Is > there > > any way you could point to an easier way to accomplish what I'm > > trying to do here? > > > > <?xml version="1.0" encoding="utf-8"?> > > <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> > > > <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> <http://www.adobe.com/2006/mxml <http://www.adobe.com/2006/mxml> > > " > > layout="absolute" creationComplete="init()"> > > <mx:Script> > > <![CDATA[ > > import mx.controls.Alert; > > import mx.collections.ArrayCollection; > > > > [Bindable] public var screens:ArrayCollection; > > > > public function init():void { > > screens = new ArrayCollection(); > > var firstScreen:Object = new Object(); > > var secondScreen:Object = new Object > > (); > > var thirdScreen:Object = new Object(); > > firstScreen.incSWF = 'screen1.swf'; > > secondScreen.incSWF = 'screen2.swf'; > > thirdScreen.incSWF = 'screen3.swf'; > > screens.addItem(firstScreen); > > screens.addItem(secondScreen); > > screens.addItem(thirdScreen); > > } > > > > ]]> > > </mx:Script> > > <mx:TabNavigator id="ScreenStack" top="22" left="0" > > right="0" bottom="0"> > > <mx:Repeater id="AppRepeater" > > dataProvider="{screens}"> > > <mx:Canvas id="AppCanvas" > > width="100%" height="100%"> > > <mx:SWFLoader > > id="ScreenLoader" source="{AppRepeater.currentItem.incSWF}" > > width="100%" height="100%"/> > > </mx:Canvas> > > </mx:Repeater> > > </mx:TabNavigator> > > </mx:Application> > > >

