I am creating a library in AS3. Inside the library I make use of a bunch of classes/packages that need not be exposed to the end user of my lib. I want to only expose one of these classes.
I guess my questions are:
1) How are libraries commonly distributed in AS3?
2) Is there a .jar equivalent in AS3 that developers can include, but will only have access/knowledge of the classes I've declared as public?
There is a Shell and a Module. The Shell loads the Module. Module is never run without the Shell. Because there will be more modules, I decided to put common classes to Shell.
1. Compiled Shell with -link-report objShell_Extern.xml
2. Compiled Module with -load-externs obj<ShellProject>_Extern.xml Module size shrank from 90 KB to 2,05 KB.
3. Added 5 filters to Module:
import flash.filters.*; tf.filters = [new GlowFilter(), new GradientGlowFilter(), new DropShadowFilter(), new BevelFilter(), new BlurFilter() ];
Module size grew to 2,15 KB.
4. Added 5 filters to Shell (same code as above), recompiled it, then recompiled Module.Module size still at 2,15 KB.
5. Tried getDefinitionByName //import flash.filters.*; commented out var GlowFilter:Class = Class(getDefinitionByName("GlowFilter")); var GradientGlowFilter:Class = Class(getDefinitionByName("GradientGlowFilter"));
[code]....
Error #1065 GlowFilter not initialized, Module size grew to 2,19 KB. Deleting some, but not all filters is decreasing size, so it's not the getDefinitonByName that takes 0,14 KB (2,19 - 2,05 without filters).
1. Do I understand the idea of load externs, or does it work only with specific classes? Why it doesn't work with filters?
2. What did I screw up with getDefinitionByName and is it a new feature because of it's use like in link below?
I'm new to as3 and although I am able to build classes that don't error but also don't put anything on the stage. I have Starter_1.as file stored in a folder called com...this is the script for that file:
Code: package com { import flash.display.Sprite; import flash.text.TextField; public class Starter_1 extends Sprite { private var tField:TextField; public function Starter_1 () { [Code] .....
From what I can see the problem is because the addChild(tField) is not referencing the stage in anyway because the script is in an external .as file and not on the timeline (good coding practice I read somewhere?) I use this on the timeline to try put the text field on the stage: Code: import com.Starter_1; var f1:Starter_1 = new Starter_1(); How do I get this working?
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 have a small framework that I would like to put out there. I would love to export these classes as a single file. I know there is a SWC format, but there is not much recent information on how to export build this and I have a feeling this format might be outdated.
Before starting an class or code, you should put all your import statements..
Now I have flash application, which offers a search feature which relies on some pretty huge classes. The user is unlikely to use this feature. However, importing those classes anyway adds some pretty large kbs to my application. Is there a way to import these classes at runtime ONLY IF the user chooses to use this feature?
I'm trying to re-organize my classes into folders, currently they're all just in the same directory and it's very messy, so I've tested this out in one feature, being the bullets. So bullet.as is in the directory: [main source]/Classes/Turrets/Ammo
I so in the bullet.as file I have coded as follows: Code: package Classes.Turrets.Ammo { import flash.display.MovieClip; import flash.events.* public class Bullet extends MovieClip {
Now this works, the bullet is fired on to the stage, however it behaves profoundly. For some reason it does not move at all or behave how it does when it is fired from the turret object, the bullets behave perfectly though when I just simply put them in the same directory as the source .fla. What can I do to easily re-organize my classes into folders without turning my objects into malfunctioning pieces of junk?
I'm building Action Script project in Flash Builder. No flex, no third party libs. Pure actionscript - hierarchy of packages and classes. How do I include a plain external .as file, which is not a package or class, but just a set of statements?
A lot of people have .com websites & put all their classes & packages inside a com folder & then their website name to avoid any possible naming conflicts when using other peoples classes - all very sensible. I have a .co.uk website however - is there an equivelant naming standard?
An unashamedly naive question, I'm afraid, from someone trying to get to grips with as3 classes... I have a movie clip (a car) on the stage that's linked, through the 'Class' field in the symbol properties dialogue box, to a class which allows it to move. This works fine, until I attempt to set up collision detection for a movieclip representing the track, by importing a CollisionDetection class; then, the car movement class does not appear to be imported at all. Neither does it appear to work when I include any import statement on the main movie's timeline.
I am trying to create a new flash movie. I am using CS4, for publishing movie -> flash 8 - AS-> 3.0. My issue is if I publish the movie I receive the following complier errors - > ActionScript 2.0 class scripts may only define class or interface constructs. Attribute used outside class. The class or interface 'flash.net.URLVariables' could not be loaded. The class or interface 'flash.net.URLRequest' could not be loaded. The class or interface 'flash.net.URLLoader' could not be loaded. The class or interface 'flash.events.Event' could not be loaded. The class or interface 'flash.net.URLVariables' could not be loaded. ActionScript 2.0 class scripts may only define class or interface constructs. The class or interface 'URLVariables' could not be loaded. [Code] .....
Is it necessary to import the classes that an ancestor has already imported?Is there a keyword I could use so that the imports are implicit when I create an inherited class?
a few days ago i have started running across various errors and glitches in the app i am developing, and after a lot of time found out the following fact:
just as the title reads, flash started ignoring changes i make to classes i use, as if it has an internal cache of imported classes and refuses to check for changes. it notices when i remove class from directory, it notices when i comment out a whole function, BUT if i comment out the contents of all of the functions, leaving just their declarations, flash executes them "perfectly" well. where does it takes their contents from? how to delete the cache?
while trying to save a class at a certain point when i was dealing with this, i got a "sharing violation" error, that told me i cant save it.
I've been having this really annoying thing happen the past few days, that has happened before but not as frequently. I create a project in Flash Builder, import some classes, and then on occasion it keeps erasing those classes. So then I get errors in a lot of my datatypes, have to go back through my document and retype the datatype so that it reimports the class.
I am having an issue getting my custom made classes imported to the flash movie. It seems to ave a problem importing (or using) the class. Here is the as code I am attempting to use to import and call to a function inside of a class:[code]
There are a few things regarding best practices in ActionScript that I would like to know about:1. When a class uses other classes located in the same package, I know that it is not necessary to import them.But what is the best practice ? Should they be imported, just for the sake of clarity and order or is it recommended not to import them ?2. Is there a recommended order in which to arrange the imported classes ? I am just interested if there is a general idea regarding the order.Maybe display object classes before event classes, maybe event classes before component classes, and so on.3. Is there a recommended order in which to arrange the class properties and methods Regarding the properties, private, public, protected, constants. Regarding the methods, private, public, protected, getters, setters.Again, I am simply looking for best practices and recommended practices regarding these issues, I am aware that they are not essential to the code and that each person can choose to do different things.
I am a novice in ActionScript 3.0. I am trying to use the sample code from AS 3.0 tutorial but it return me an error "Packages cannot be nested". How can I fix it? Here's the sample code: fla file format.
I want to set them up with packages but tried before and failed.At the moment, I've made a folder,
C:/flash/mbl
In there, I have all my classes that I want to reuse. what do I do next? I'm using Flash CS3, would also be useful to know how to do the same in Flex Builder 3.
I almost have it, ( I think) but whenever I try to use a package with more than one class in it -- even the standard ones supplied in the ActionScript references, they don't work.And, if I have anything in the flash file other than an empty single frame, it breaks. So this precludes the use of library objects, which, if you CAN use them, saves a lot of coding time..
In the Below action script file there is an error saying cannot import mx.controls.Label, I am compiling this through command line on,linux and the environment variable path is set where flex is installed ,how to resolve this
package { import mx.controls.Label; public class Test
how to get this to work. So I have 2 .as files (ImageMain and FullScreenImage)And in the fla file I have a movieclip on stage called menu and this fla is linked to the ImageMain.as
ImageMain.as (part of the code):
Code: package { import com.gfxcomplex.display.FullScreenImage; public class ImageMain extends Sprite { public static var menuIn:Number=-113;
[code]....
When I run the " red" code I get the next error:1120: Access of undefined property menu. It looks like the imported FullScreenImage.as cannot acces the menu movieclip on the stage.