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