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:[EMAIL PROTECTED] On Behalf Of ibid049 Sent: Thursday, June 14, 2007 9:07 AM To: [email protected] 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> , "Gordon Smith" <[EMAIL PROTECTED]> 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:[email protected] <mailto:flexcoders%40yahoogroups.com> ] On > Behalf Of ibid049 > Sent: Wednesday, June 13, 2007 12:36 PM > To: [email protected] <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> > " > 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> >

