There is code in the first frame of main.swf:

stop();
Stage.scaleMode = "noScale";
BrandTest.main(this);

So "root" in the BrandTest movie is the same as "_root".  I just don't
like using the "_root" variable.  Global vars make me feel dirty
(unless they're singletons accessed with getInstance() methods). :)

I had other test stuff in place to verify that brand.swf actually
loaded (I added a couple vars and test functions to brand.swf and
tried calling them), but I took them out when posting my code to
shorten it.

  -Andy

On 1/22/07, Francis Chary <[EMAIL PROTECTED]> wrote:
Ok, that code all looks good, but I have a couple of questions. In initUI()
function, what do you get if you also put in:

trace(root);

I only ask, because it looks like the brand.swf is loading in correctly.
What I'm curious about is, what's going on with the 'root' mc? I notice that
in your main method, you're sending in the rootMC movieclip. Can I see what
the call to that looks like?

I don't think you need to concern yourself with runtime sharing at this
stage, really.

Ok, try what Martin said ;-)

Francis

On 1/22/07, Andy Herrman < [EMAIL PROTECTED]> wrote:
>
> That's actually exactly what I'm trying, yet it doesn't seem to be
> working.  Here's my code:
>
> ------
>
> import mx.utils.Delegate;
>
> class BrandTest {
>
>   private var root:MovieClip;
>   private var uiResources:MovieClip = null;;
>
>   public static function main(rootMC:MovieClip):Void {
>     new BrandTest(rootMC);
>   }
>
>   function BrandTest(rootMC:MovieClip) {
>     this.root = rootMC;
>     loadUIResources("brand.swf");
>   }
>
>   private function loadUIResources(path:String):Void {
>     trace("Loading " + path);
>     if(uiResources != null) {
>       uiResources.removeMovieClip();
>     }
>     root.createEmptyMovieClip("uiResources", root.getNextHighestDepth());
>     uiResources = root['uiResources'];
>
>     var uiLoader:MovieClipLoader = new MovieClipLoader();
>
>     var loadListener:Object = new Object();
>     loadListener.onLoadInit = Delegate.create(this, function
> (oEvent:Object) { this.initUI(); });
>     loadListener.onLoadProgress = Delegate.create(this, function
> (target:Object, loaded:Number, total:Number):Void { trace(loaded + "/"
> + total); });
>
>     uiLoader.addListener(loadListener);
>     uiLoader.loadClip (path, uiResources);
>   }
>
>   private function initUI():Void {
>     trace("Initing UI");
>     var img:MovieClip = root.attachMovie("asImage", "asImageMC",
> root.getNextHighestDepth ());
>     trace(img);
>   }
> }
>
> ------
>
> I get the following output when I run:
>
> Loading brand.swf
> 8860/8860
> Initing UI
> undefined
>
> attachMovie doesn't seem to be working.  I have the movie clip in
> Brand.swf exported as 'asImage' with 'Export for ActionScript" and
> "Export in first frame" selected.  Is there anything else I might be
> missing?
>
> There's an "Export for runtime sharing" option that's unchecked, but
> if I select it it wants a URL and I don't know what to put there.
>
>    -Andy
>
> On 1/22/07, Francis Chary <[EMAIL PROTECTED]> wrote:
> > Let me have a crack at this one, Andy.. ;)
> >
> > Basically, linkages are just a way of telling the code how to identify a
> > particular item in the library. When you right-click one of your buttons
> in
> > the Brand.fla library and click 'Linkage...', you'll see the Linkage
> dialog
> > box. Now, click on the checkbox marked: 'Export for Actionscript'.
> >
> > Flash will automatically fill in the linkage Id for you, it usually just
> > takes the name of your swf. (eg. "fancy_button"). You can change this to
>
> > whatever you want, just try and make sure that each movie clip has a
> > different id from the others. Otherwise you could create problems. Now,
> go
> > ahead and publish that movie to create Brand.swf.
> >
> > So now you have a movieclip with a linkage id inside your Brand.swf. So
> how
> > do you get it to appear in the Main.swf? Firstly, you'll have to load
> the
> > Brand.swf into the Main.swf. This is most easily done with the loadMovie
>
> > function. If you want to be fancy, you can use MovieClipLoader instead,
> but
> > that's another topic.
> >
> > Once you've loaded Brand.swf into Main.swf, you want to get at the
> button,
> > or whatever mc you created a linkage id for. Happily, by creating a
> linkage
> > id, you gave the flash player a name by which to identify the button.
> Now,
> > the code to attach this to the stage is:
> >
> > _root.attachMovie("linkageId", "newButtonMCName", 0);
> >
> > as you may have guessed, the arguments there are as follows:
> > "linkageId" == the linkage id that was generated in the Brand.fla file
> > "newButtonMCName" == the name you want for your button on the stage
> > 0 == the depth of the new button.
> >
> > This will drop the movieclip onto the stage at coordinates 0, 0.
> >
> > So that's how you use linkage id. The neat thing is that if you have
> say,
> > five Brand.fla files, with different art assets, you can give the
> elements
> > in each one the same linkage id, then compile Main.fla once for each
> > Brand.swf you've got. That way, you can 'skin' your Main.swf.
> >
> > I hope this helps, and I hope someone will correct me if I've made any
> silly
> > mistakes!
> >
> > - Francis
> >
> > On 1/22/07, Andy Herrman < [EMAIL PROTECTED]> wrote:
> > >
> > > Unfortunately I'm stuck using the Flash IDE only (no MTASC). :(
> > >
> > > I don't really understand how linkages work.  Is there a way to do
> > > something similar using just the Flash IDE?  I have a feeling that's
> > > the way I'm going to have to do it.
> > >
> > >    -Andy
> > >
> > > On 1/22/07, Trevor Burton < [EMAIL PROTECTED]> wrote:
> > > > ok, i work on a setup that sounds like it's what you're aiming
> for...
> > > i've
> > > > recently started working with MTASC and swfmill in order to get file
>
> > > sizes
> > > > down to a minimum and streamline the build process - what i do at
> the
> > > moment
> > > > is this (simplified)
> > > >
> > > > 1 - all code is compiled into a library using mtasc
> > > > 2 - all assets are compiled into 'skin' swf using the flash ide
> > > >
> > > > 3 - for each skin swf i use swfmill to create a linkage between an
> empty
> > > > movieclip in the skin's library and a base class for the UI
> component
> > > i'll
> > > > want to use. This means that when the skin is compiled in the flash
> ide
> > > it
> > > > doesn't automatically drag in all the other classes that are
> referenced
> > > and
> > > > i don't have to create exclude.xml files.
> > > >
> > > > 4 - i have a 'core' class which loads all the necessary library and
> skin
> > > > files and instantiates things where necessary to get the app going.
> > > >
> > > > This is probably a little bit over the top for what you're
> describing
> > > above
> > > > but for a large-scale application such as this it works very well
> and
> > > > prevents unnecessary duplicate importing of classes.
> > > >
> > > > I went down the same path trying to get attachMovie to work using
> all
> > > sorts
> > > > of approaches and had no luck - this seems to me to be the cleanest
> > > approach
> > > > for what i need.
> > > >
> > > > t
> > > >
> > > > On 1/22/07, Andy Herrman <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > I'm beginning work on a new project that will need to have a
> brandable
> > > > > UI and I'm looking for suggestions on how to proceed.  I'm pretty
> new
> > > > > to Flash development, so I don't really know if there's a standard
> way
> > > > > of doing this.
> > > > >
> > > > > What I would like to do is have the main application's SWF load a
> > > > > second SWF which contains all of the UI components (images,
> > > > > animations, buttons, etc).  This way I could allow branding by
> just
> > > > > providing an SWF with different UI components.  However, I can't
> > > > > figure out if there's a way to access the library of one SWF in
> > > > > another SWF.
> > > > >
> > > > > For example, I have my main.swf and brand.swf.   Main.swf has
> nothing
> > > > > except some AS code.  Brand.swf has a button in its library called
> > > > > "testButton", which is exported for AS use.
> > > > >
> > > > > What I want to do is create an instance of "testButton" within
> > > > > Main.swf, but attachMovie doesn't work (I'm guessing it can't see
> > > > > library items from the other SWF).  Is there a way to do
> attachMovie
> > > > > on clips in another SWF's library?
> > > > >
> > > > > The other option I've heard about is to have the default
> "branding"
> > > > > stuff defined in the main.swf, and then you can somehow have an
> > > > > external SWF override the ones you want to override.  I'm not sure
> I
> > > > > like doing this as it require things to be defined in the main
> SWF's
> > > > > FLA, which I like to keep to a minimum (since the FLA is binary
> it's
> > > > > hard to manage it in source control for things like merging, so
> I'd
> > > > > like to have as little in the FLA as possible).
> > > > >
> > > > > Is there any way to do what I'm trying (use clips in another SWF's
> > > > > library), or any other ways to do branding like this?  Thanks!
> > > > >
> > > > >    -Andy
> > > > > _______________________________________________
> > > > > Flashcoders@chattyfig.figleaf.com
> > > > > To change your subscription options or search the archive:
> > > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > > > >
> > > > > Brought to you by Fig Leaf Software
> > > > > Premier Authorized Adobe Consulting and Training
> > > > > http://www.figleaf.com
> > > > > http://training.figleaf.com
> > > > >
> > > > _______________________________________________
> > > > Flashcoders@chattyfig.figleaf.com
> > > > To change your subscription options or search the archive:
> > > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > > >
> > > > Brought to you by Fig Leaf Software
> > > > Premier Authorized Adobe Consulting and Training
> > > > http://www.figleaf.com
> > > > http://training.figleaf.com
> > > >
> > > _______________________________________________
> > > Flashcoders@chattyfig.figleaf.com
> > > To change your subscription options or search the archive:
> > > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> > >
> > > Brought to you by Fig Leaf Software
> > > Premier Authorized Adobe Consulting and Training
> > > http://www.figleaf.com
> > > http://training.figleaf.com
> > >
> > _______________________________________________
> > Flashcoders@chattyfig.figleaf.com
> > To change your subscription options or search the archive:
> > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
> >
> > Brought to you by Fig Leaf Software
> > Premier Authorized Adobe Consulting and Training
> > http://www.figleaf.com
> > http://training.figleaf.com
> >
> _______________________________________________
> Flashcoders@chattyfig.figleaf.com
> To change your subscription options or search the archive:
> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
>
> Brought to you by Fig Leaf Software
> Premier Authorized Adobe Consulting and Training
> http://www.figleaf.com
> http://training.figleaf.com
>
_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

_______________________________________________
Flashcoders@chattyfig.figleaf.com
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com

Reply via email to