Adding...Importing it as a package does properly exclude the classes. From my example, obviously why import a class and not use it, but I'm trying to understand the logic of the compiler.
- James -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of James Booth Sent: Thursday, May 25, 2006 3:17 PM To: 'Flashcoders mailing list' Subject: RE: [Flashcoders] OOP 101: Is import really necessary? There is a bit of an anomaly with importing classes... For example you have 3 classes. Let's call them FirstClass, SecondClass and ThirdClass. Within FirstClass you import and create an instance of SecondClass and within SecondClass you import and create an instance of ThirdClass, creating a chain. On the main timeline of the fla, you import FirstClass, but don't create an instance of it. Because you didn't create an instance of it, rightfully it is not compiled. But, both SecondClass AND ThirdClass are compiled. You can check it either by file size or by clicking Debug-->List Variables in the player window. Most likely because there is an instance of SecondClass created within FirstClass and an instance of ThirdClass created within SecondClass. It would make sense though that because an Instance of FirstClass was not created, that the compiler should just stop right there, but that isn't the case. Perhaps that's why there is the flaName_exclude.xml "trick", but even then you have to explicitly exclude each class. It's not really a trick, but may be a little known concept. - James -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Geoff Stearns Sent: Thursday, May 25, 2006 2:36 PM To: Flashcoders mailing list Subject: Re: [Flashcoders] OOP 101: Is import really necessary? import in flash is only used to save you some typing. when you use import com.package.Class; the class is *not* included in the swf until you reference that class in your code somewhere. like var blah:Class; you don't have to use import, you can also use: var blah:com.package.Class; and it will behave exactly the same way, only every time you reference the class, you'll need to type the full path instead of just 'Class' it's just a typing shortcut. On May 25, 2006, at 2:01 PM, j.c.wichman wrote: > Hi, > it is included, but not solely becoz of the import statement. > I might be wrong, but I believe this is even a 'bug'. > > Expected behavior: > import MyClass causes inclusion of MyClass in the swf > > Real behavior: > import MyClass still requires you to use MyClass somewhere in the > code as in > var myClass:MyClass, in order for it to be included. > > Note that we are talking about the Flash IDE here, with mtasc you can > include exclude any class you like whether or not it is referenced > in the > code. > > greetz > Hans > >> -----Original Message----- >> From: [EMAIL PROTECTED] >> [mailto:[EMAIL PROTECTED] On Behalf >> Of Merrill, Jason >> Sent: Thursday, May 25, 2006 7:25 PM >> To: Flashcoders mailing list >> Subject: RE: [Flashcoders] OOP 101: Is import really necessary? >> >>>> The 'import' statement doesn't actually embed a class into >>>> the .swf. >>>> All it does is tell the compiler that when you type (for example) >>>> MyClass, you are actually referring to com.fred.MyClass. >> >> Err...that has not been my understanding at all. If that is >> the case, then why do you NOT need to include your class >> files on the server with the .swf? Since reality is you >> don't, all that code has to be in the .swf upon compiling, >> otherwise, the .swf wouldn't know what to do with >> >> Myvar:MyCoolClass = new MyCoolClass(); >> >> If it's not included with the .swf, how would the .swf know >> what MyCoolClass is otherwise? >> >> >> Jason Merrill >> Bank of America >> Learning Technology Solutions >> >> >> >> >> >> >> >>>> -----Original Message----- >>>> From: [EMAIL PROTECTED] >> [mailto:flashcoders- >>>> [EMAIL PROTECTED] On Behalf Of Ian Thomas >>>> Sent: Thursday, May 25, 2006 12:27 PM >>>> To: Flashcoders mailing list >>>> Subject: Re: [Flashcoders] OOP 101: Is import really necessary? >>>> >>>> Errm - actually that's not such a good reason. >>>> >>>> The 'import' statement doesn't actually embed a class into >>>> the .swf. >>>> All it does is tell the compiler that when you type (for example) >>>> MyClass, you are actually referring to com.fred.MyClass. >>>> >>>> You could just type com.fred.MyClass throughout the body of >> your code >>>> instead of typing import at the top of the file. >>>> >>>> 'import' is simply a disambiguation helper for the >> compiler. It's got >>>> nothing to do with what code actually gets included in the >> resultant >>>> .swf. You can prove this by typing: >>>> import com.fred.* // Replace with some set of classes you're not >>>> using in your current project >>>> >>>> And recompiling. The .swf file size won't go up until you actually >>>> _reference_ an object that belongs to one of those >> packages. As soon >>>> as you typed: >>>> var f:MyClass=new MyClass(); >>>> >>>> or, in fact >>>> var f:com.fred.MyClass=new com.fred.MyClass(); >>>> >>>> The file size would go up. >>>> >>>> So - in answer to RifledCloaca - no, you don't need to type >>>> 'import' >>>> at all, as long as you refer to all your classes by full >> packagename. >>>> >>>> Ian >>>> >>>> On 5/25/06, Merrill, Jason <[EMAIL PROTECTED]> wrote: >>>>> >>>>> Because if Flash imported every class available to it >> automatically, >>>>> then your .swf files would be huge and unnecessarily bloated. Do >> you >>>>> really want the code to all the Remoting classes imported >> into your >> .swf >>>>> if you're not using them? When you include, the actionscript >> cotained in >>>>> the class is embedded in the .swf. >>>>> >>>> _______________________________________________ >>>> 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