I tested locally. But shouldn't his SWFs eventually appear?
 
- Gordon

________________________________

From: [email protected] [mailto:[EMAIL PROTECTED] On
Behalf Of Alex Harui
Sent: Thursday, June 14, 2007 10:57 AM
To: [email protected]
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:[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>
>

 

Reply via email to