ActionScript 3.0 :: Use Multiple Classes For One Package?
Nov 28, 2009
I'm trying to set up an AS3 project using a single package, that will have multiple classes coded in seperate files.I am looking for examples and tutorials for this kind of project.As I understand it, these files must have the same package, and their class must be public. This will allow the multiple files and various classes to be used in the single package.[code]Either of both of these files could then be imported into the main movie and their classes / functions used in the package.
This is with Flexbuilder 3.2, Eclipse 3.3.2.I am moving my development environment to a new machine. Actionscript classes that compiled in the old environment now get a compile error:
A file found in a source-path must have an externally visible definition. If a definition in the file is meant to be externally visible, please put the definition in a package.I do declare the package in these classes - I think failure to declare the package is the usual reason for this error.To add to the mystery, many classes in this project compile without errors.
I am doing an Actionscript 3.0 project which involves introspection. I am wondering if there is a way to get all the classes within a given package structure.
I have created the following code that pulls data from an external xml file into a datagrid. I have been trying to figure out how to get it to function using classes and/or packages. I'd like to separate the functionality into separate classes for each of the following:1) A class for loading the XML file(s) (there will likely be more datagrids and more xml files)2) A class for "drawing" the datagrid based on the xml.... others you can think of?
Code: /////////////////////////////// BEGIN xml_to_datagrid.fla ///////////////////////////////////////
Im learning about Classes. Simple question for you all. What is the best/standard way to organise my folder/package structure for the classes I write, in particular to placing Main.as for example. Some structures I have seen in other source code are:
I'm posting this since i just lost a half an hour with this. FlashDevelop for some reason doesn't always know code completion for classes in the fl package, to fix this add this to you Global Class path (make sure to select AS3): C:Program FilesFlashDevelopLibraryAS3frameworksFlashIDE
When I create anything in a library, it's basically a class right? Meaning I can do essentially the same thing with use of a package in an AS file? In AS 2.0 this would probably mean I can add specific functions on this class as I can do when I use flash's object interface and add script to the specific class object itself. However, in AS 3.0 you cannot attribute code directly to an object right?
This leads me to my second question. I basically want to create a flash mp3 player (I've coded this already), but make it so that it is an entire package of contents, so I can add it to my website when a mouse event is detected and then take it off the website once it's no longer needed (to conserve memory and assure an overall nice experience). The problem is that I have many objects and subsequent functions (play button, pause button, etc), and want all of this to be contained in one file. Is this even possible?
The examples I'll use don't do anything - they're classes without ANY members - no variables, methods, anything.
Let's say I extends Sprite and call it MySprite.
I save it in test.core
[code]...
Now I create another custom class called MyWindow that extends MySprite.
I save it in test.windows
[code]...
Then I create another class that extends MyWindows (the example I'll use is a document class - but that doesn't matter - I've tested using an instance too).
[code]...
Notice that I'm not even trying to instantiate the helper classes - just having them there throws the error.
If there is only a single helper class, everything runs fine.
Also note that - as far as I can tell - this only happens when extending one class from another package, then extending that class with more than one helper object.I'm pretty sure there's no namespace bumps or typographical errors, as this is a very pared-down version of the original application.
EDIT: seems the problem exists even without the crossing packages - even extending MySprite in the document class with multiple internal classes generates this error.
I have x amount of classes in a package eg. "com.trevorboyle.lotsofclasses" and I keep adding more (These classes will probably all be static and will probably all extend the same class).I wish to create a drop-down list of all these classes, preferably without having to manually create an array myself.
Once a class is selected from the list, I'll be able to use getDefinitionByName to return it, because I will know it's name at this point.The question is, as I believe there is no support in AS3 to list all the classes in a specific package, is there a design pattern that handles this?
The "Programming Adobe ActionScript 3.0" states in chapter 4 "ActionScript Language and Syntax", "Packages and Namespaces", "Creating Packages" that you can declare at the top level of a package multiple variables, functions, and namespaces in addition to a single class as long as only one is declared "public".However, in Flash when I declare a public class and any other variable or function either with the "internal" attribute or no attribute, I get this error:5006: An ActionScript file can not have more than one externally visible definition: test.function1, test.Test
The package code is as follows: package test{ internal function function1():String return "Function1()"; public class Test }}
I am having troubles passing an x and y argument into a package function that creates a projectile on stage at the tank.gun's x and y.I have attached a zip of the code I am working on.[code]
I'm running into this weird thing with ASDoc. It will only document one package function per package.For example.I have these two functions:
gs.util.printf gs.util.ftrace
In these files:
gs/util/printf.as gs/util/ftrace.as
The only function that get's documented in ASDocs is "printf". But I know it can do more than one. As an example, in the livedocs [URL] There are more than one functions documented.
How do you subclass multiple classes. I have a class that subclasses MovieClip. I added a new feature. Now its yelling that my class needs to subclass SimpleButton. I know there both part of the display class. But how do you subclass that?
I'm trying to compile AS files using the mxmlc but the particular class depends on other classes. My command is something like this: mxmlc -includes classA classB -source-path=. com.example.com.classC.
This gave me classC.swf but when I loaded it, it was still looking for classA.swf and classB.swf. Is there anyway I can have just one swf file?
multiple classes and then register each movieclip from the library to a different class? It isnt working for me. I created two different classes and created two entire different movieClips and registered each movie clips to a different class. However, I can only use on movieClip at a time, when I use the duplicateMovieClip. command to create copies of the movieclip, i find that only those movieclips, whose class i declared first, appear on stage
Is there a way I can load an xml-file in a separate as-file and use this for multiple classes? (Or, should I load the xml-file in every class I want to use it in)
for example i set up a basic xml structure
test.xml
Code: <xml> <first>use this data in the first class</first> <second>use this data in the second class</second>
So, what exactly are the rules on several classes inside of one AS file?So far, the only way I have been able to do this is by putting the class outside of the package brackets with no namespace selected (which I believe means 'internal' by default, right?)[code]So, using this notation, I'm wondering if a few things are possible:
1. Putting several 'secret' classes in the same AS file?
2. Making these classes public via the "Main" class, the one that the AS file is actually made for?Both examples applied here. Are these the right ways to do this?:[code]
3. Since these classes are marked as internal, they should be available to classes which extend the Main class AND classes in the same package without any import statements, correct?
4. Does embedding classes like this affect performance in any way?
5. Will these embedded classes always be compiled even if they are never accessed or referenced, similar to Library items or other classes?
I am attempting to use multiple AS3 timers to run a short animation in flash but I'm having a problem with some of the instances running slowly or not being removed when they are supposed to. I found a way to make things work the way I want but in being new to AS3 I believe my runtime issues are due to jumbled code.
I'd have thought this to be simple, but nothing works. I have a game I'm working on, and in it, there will be a speed stat. The fast you are going, the faster everything else has to move to make it look like you are moving faster.The problem is, the speed stat (obviously not called speed) is one of the upgradable stats, and needs to be available for the class handling upgrades for it to be changed, and it needs to be read by the class handling moving objects.The second class however, has absolutely no idea the variable even exists. I've tried for weeks to look up a tutorial on it, but there doesn't seem to be any at all that I can find. (I am using public variables, and have tried various ways of trying to point at the class it's from but apparently I must be using the wrong syntax)
Say if the structure of my game is set up like this:mainMenu- Classes inside the mainMenu package.instructions- MainMenuButtonClass.- Other classes inside the instructions package.game- MainMenuButtonClass.- Other classes inside the game package.The class MainMenuButtonClass is a button that, when clicked, directs the user to the MaiMenu and is identical in both the instructions package and the game package. Would it make sense just to save the same file in two locations or is there a better way to handle it.I'm not trying to access variables between the two classes. I'm not looking for any code either.
I've been searching the internet for how to use scenes in flash games, and from what I understand it got some problems? MY problem is that i cant really understand what the problem is and I cant find i "clean" explanation.
Some say you dont should use scenes in game development, some say you should?? Im confused.
Another thing that i dont understand quite is the document classes. Should i have one document class for every scene or one for all of them?
If i have 2 scenes with it's own document classes, how do i switch between them?
Can you declare multiple classes and then register each movieclip from the library to a different class? It isnt working for me.
I created two different classes and created two entire different movieClips and registered each movie clips to a different class.
However, I can only use on movieClip at a time, when I use the duplicateMovieClip... command to create copies of the movieclip, i find that only those movieclips, whose class i declared first, appear on stage.
How do Static classes work in projects where child swf's use the same Static class as their parent?
For simplicity... lets say we have some older content swf files that are using TweenLite version 8 ( a common enough Static class.) But the parent SWF is being updated and uses a more recent version of TweenLite (version 10). The child SWF's are loaded into the parent SWF. Do the child SWF exist in there own sandbox and have TweenLite version 8 running and the Parent runs it's own copy of TweenLite 10? Or does the parents clips Static class of TweenLite (version 10) overwrite the children Static class using some sort of magical shared memory space when JIT (runtime) compiling?
I have a rather general question regarding OOP. How do constructor functions execute with multiple class extensions? I'm making an orbital physics simulation, and every spatial body is of the class SpaceObject, which extends Sprite. Then, I have all earth-type planets be of the class Earth, which extends SpaceObject. There are certain parameters that I'd like to set for every single SpaceObject (like position and size) in the constructor function, and certain parameters (like density and mass) that I'd like to set in the constructor of class Earth.But from the main timeline, when I create an instance of class Earth, I can only enter the parameters of the Earth constructor, ie
Code: var planet1:Earth = new Earth(density, mass) Or I can create an instance of SpaceObject:
What is the correct way to import 'sub' classes into a main class?What i have is a class (i call it Console) that gives the user info about the swf for debugging, but also gives the user the ability to give their input to dynamically change the swf. Sorta like what games have when you press the "`" key.But it handles more things then just read user input, it also connects to the Database through PHP and connects through the server using Sockets.And there are more of those things that gets added later, so to prevent it gets to big later i want to split it into multiple .as files
Console Class: renders stuff and allows user input.I want that to include the following classes:
ConnectPHP Class (handles php > mysql) ConnectJava Class (handles sockets)
So that the methods in those 2 classes are accessible in the Console class like:
[code]...
I tried importing them but then i had to access them through the Object initialized:
[code]...
But i want to access them as
[code]...
removing the reference of the ConnectJava Object. Is this possible? If you wonder why, id like to keep it as simple as possible because i share the classes with my friends.