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

Reply via email to