ActionScript 3.0 :: Creating Accessible MovieClip From Within Class
Dec 19, 2009
I am trying to make a class that extends the movie clip class. I want to essentially have a movie clip class that has a "handle" by which I mean a settable reg point by referring to a parent container movie clip. I have many parts of it working. I have functions that can move the handle/parent to any location on the screen, one that centers, and a move method that moves the movie clip by moving the parent so it is being moved by the origin you specify etc.
But one thing I would like to have the handledMovieClip class to do is to make the handled movie clip and then automatically generate the parent movie clip with the same name appended with "h" and put the handledMovieClip into the parent MovieClip. The parent movie clip should then be accessible by actions on the main timeline. Suppose that the movieclip name is MC so then the parent would be called MCh. I do this by making a new movie clip and then changing the name to "MCh".
But when I try to use the dot syntax from the main time-line it doesn't seem to know the object. So I can't do something like "trace(MCh.width);". I can get what I want by creating the handled movie clip and then the parent and then putting the handledMovieClip into the parent with addChild. It works if I do it from the main time line, but not if I try to do the exact same thing within the class constructor. I thought it would be a nice feature if the user only had to make the handledMovieClip and if the parent was generated by the class constructor automatically.
How can I achieve this ? I tried MovieClip(root), MovieClip(parent), stage,mytextfield.text = ... etc. They all throw an null object reference problem.
Assume I know practically nothing about AS3! I'm using Flash Pro CS5. I'm trying to reassociate a flash file I've been given with its external assets and classes. In the library I have a movieclip with linkage to a class called 'StaticMap' using the base class 'flash.display.MovieClip'. am I missing a custom class file called 'StaticMap.as' that was originally located in the same folder as the fla, or is this a generic class accessible to all movieClips from within Flash?
I'm trying to create a function that I can access throughout the program without having to rewrite the entire code each time. I know how to do this in Java, but I'm unfamiliar with the syntax in actionscript.
For those that know Java, I'm looking for something similar to using
I am creating a custom Flash component with AS3. My component's main class imports a class with a static variable. How can I make this class accessible by the user of my component from a flash-level? This is the example:
my component's main class: package { import flash.display.MovieClip; import MyStaticClass;
[Code]....
The thing is I don't want to provide the user with the MyStaticClass source. I would like it to be automatically imported and accessible after dragging the component to the stage.
I created a custom class (no arguments needed for constructor) and I wanted to create an instance of that class that can be accessed by AS from aywhere inside the SWF (i.e. globally from any function or class).So far the only way I can think of doing that is to create the custom class with an associated MovieClip Symbol, drag an instance of that MovieClip Symbol to the stage, and then give it an instance name. It seems like I can then use the instance name to access that class instance anywhere.
I would like to declare in my class a set of events that get dispatched by it and then use this information from controller class to automate addition of the event listeners. Is there a language structure for this in Action Script 3?
I would like to make a new instance of a MovieClip within my library from code written in my keyframe. I relise that you can do this by making a class and using the codeCode:var instancename:movieclipname = new movieclipname(); and with the MovieClips class I would need to extend MovieClip and nothing else. I am unsure if you put in the name of the MovieClip or the name of the MovieClip class in the code above so feel free to correct me. But instead of doing this can I just add a MovieClip to my stage with doing this
When you initialize a new object, how can that class have access to a variable from the parent?In this case Blob needs to be able to access scale?[code]
I am making a Thumbnail class which is part of my Photo Gallery Package that I am building with the intent of automatically generating my thumbnails. I do not want to limit myself to just AS3 animations, I would also like the ability to use timeline animations. I have a system using "in" and "out" for frame labels which I find very efficient and I get stuff done quickly. So I created the thumbnails holder MovieClip with the animations and have it linked in my Library, however, when I try to pass it to my Thumbnail Class, I only get one instance and I need to create several instances.
Document Class ActionScript Code: var thumbCont:mcThumb = new mcThumb(); thumbNails = new Thumbnails(thumbCont);
Thumbnails Class ActionScript Code: var thumbContainer:MovieClip; public function Thumbnails(thumbCont:MovieClip,) { thumbContainer = thumbCont; }private function createThumbs():void { for (var i:int = 0; i < aThumbs.length; i++) { [Code] .....
I eliminated most of the additional stuff. What this does is that it doesn't create several thumbContainers, rather it just uses the one. So how would I be able to generate several of them? I can obviously create an Array with them and create them in my document class, but if I can avoid that and have my thumbnail class do it by itself, that would be perfect.
I have recently started out with flash oop concepts and was wondering how to do create an instance of an extended movie class without dragging and dropping the clip from the library ....I have figured out this method..
In Flash Professional, I have a MovieClip and that clip has children. Let's say the parent clip is a night sky and the children are different instances of a star MovieClip that animates in a loop. This whole thing compiles down to a NightSky.swc which I use in Flash Builder as part of a larger project.
In Flash Pro, I position the child clips with a high level of precision. From there, I want to assign properties to these "stars." Say, I want to assign "galaxyId" and "isRedGiant" but (and this is key) I want to edit those properties in Flash Professional and have those value accessible in Flex.[code]...
i placed a movieclip inside a movieclip A_Mc ( representing ClassA) . Now if i place another movieclip ( without naming, and making sure that automatic instance naming is Off via the flash IDE ), everything runs fine. But when i provide an instance name say b_Mc , then it MUST be able to be publically accessible. What is the logic behind this setup. Why while designing i cannot make a sub-movieclip which is private and inaccessible to others?
Is there a way to generate an instance of a class that implements an interface based on the name of the class?
I am trying:
var ClassReference:Object = getDefinitionByName("movement.OuterSpaceMovement") as IMovement; var m:IMovement = new ClassReference as IMovement; trace("startup..." + m);
-But I am getting an error message ReferenceError: Error #1065 (OuterSpaceMovement) not defined.
I have several classes that implement the same interface (IMovement) but I need to be able to generate new instances of these classes and then pass these instances as a datatype (IMovement datatype) to other classes...
So then I tried:
var ClassReference:Class = getDefinitionByName("OuterSpaceMovement") as Class; var m:IMovement = new ClassReference() as IMovement; and this doesn't seem to work...but the following var m:IMovement = new OuterSpaceMovement();
I'm trying to create a new instance of a MovieClip when the original one has been used. Would sound easy enough. Just use: var
instanceName:ClassName = new ClassName();
the class name/mc in the library im trying to duplicate is MCg1 so
var instanceName:MCg1 = new MCg1(); right?
However, the particular object in the library i'm trying to duplicate has a base class that is an external class file (just to control it's drag drop functionality)... i.e baseclass is not set to the standard flash.display.MovieClip, or whatever the case maybe. So i end out with a: TypeError: Error #1009: Cannot access a property or method of a null object reference.
I'm creating a slideshow where each slide can have:- a video or a still- 1 audio track or many (up to 3)- 1 button or many (up to 3)I was thinking that each slide can be it's own object, and then I would pass the video, audio, buttons, etc., into it as parameters:
I have a class that represents a turret in the center of my screen.When I hold down SPACE, I want it to create a "bullet"-object that moves in the direction of the turrets cannon, every frame the SPACE key is held down. I am having problems with this cause I am getting this error when I am trying to create the object:
Error #1009: Cannot access a property or method of a null object reference.
This is where the error occurs:
ActionScript Code: public function chaingun(x_:int, y_:int, rot:int, cd:Number, spd:Number, sprd:Number, life:Number) { this.Cooldown = cd; this.Speed = spd;
[code]....
PS: What happens is that when I press the SPACE key, the "turret" class event handler runs the function "Shoot_Chaingun" and that function creates a new Chaingun-object (which actually is a bullet), that inherits the x, y, and rotation of the turret, along with some additional varaibles, including lifetime. Then upon creation, I use "addChild(this)" to add it to the main stage, and "removeChild(this)" once it's lifetime is up.
EDIT: And also, I just realized I don't have a MovieClip linked to this chaingun class. How do I make sure that every time a chaingun object is made, the MovieClip is also loaded?
I want to create a movieclip class that subclasses another movieclip class and inherits all its properties (rather than having to rely on the include statement). In my project I'm using:An abstract parent class that extends a movieClip: "infantryDroid".[code]However everytime I try this, flash acts as though nothing was imported from the parent movieclip class.If I was to try the above code I would get the message that _root and speed (which were defined in the parent class) "are undefined".
I'm creating a menu bar that is a movieclip and inside the movieclip consists of the buttons.Now the menu bar is twice as WIDE as what is visible on the stage.The only part you can see is the text 'menu' on a bar.Then when the mouse hits the bar, it flies across the screen to the otherside of the bar where the menu buttons are.Now the menu bar does its animation over 20 frames - the last frame being the frame where the menu buttons are now visible.
A can't seem to get this creating movieclip thing, or attach movieclip. What I want is when a certain button is pressed, a MC in the library is created on the work area, at the mouse location and will continue to follow the mouse untill it is clicked. Once clicked, it stops dragging, but if clicked again, another MC on the screen will gotoAndStop(2); and so on. I have most of the script idea down. But I can't seem to get the create new MC to work.
Iv'e got a problem, when creating a movieclip inside a movieclip. I create 5 movieclips dynamically... I want a clickable tag/box on each of these moviclips...
I want to create a rectangular box and add it to the stage. Easy enough.
At the moment I create custom classes and attach them to movie clips in the library via linkage, but in my example there is nothing to attach it to as it does not exist. How can I create a "generating class" like this?
I just want to call it with a call like
createRectangle() or possibly have some parameters createRectangle("200", "400")
If I have a Document class that extends MovieClip, and I want to use it as the basis for another Document class, is it possible to create a subclass that extends the main document class and use that for a different FLA?
For example,
fla1.fla has a document class of MyMainClass: public class MyMainClass extends MovieClip fla2.fla has a document class of MySubClass: public class MySubClass extends MyMainClass
I've tried, but now I'm getting errors that all of my variables that reference stage instances aren't being found.
Ok, this is one of those walls that I know once I can jump over it, I will be a much happier developer again.
I've done tons of reading, and think I have a firm understanding that the general consensus is that if you want to reference something, it needs to be added to the display list, using addChild().
I hate to be defiant, but what if I don't want to?
Or at the very least, what if I want to add a movieclip class to the stage using addChild, and then reference objects inside it?
It is much easier this way than what most people recommend - adding 15 objects via addChild, then setting the x and y for the, etc.
That said, I'm all about using classes and using as3 the way it was meant to be used. So what this is, is a best practices question I guess.
HERE ARE THE STEPS I'M TRYING:
- Create new flash document
- Draw graphic symbol bg, with text field over it, select them, convert to movieclip symbol, and export class name "box", then delete it from stage
- Add document class .as file, which simply adds that class "box" from the library, to the display list using a simple addChild()
- Set a name for that box using box.name = "test" let's say
- Do a simple trace like the following - "getChildByName('test').textFieldName" - it shows up great
- So then, I'll now try to set the text by doing this - getChildByName('test').textFieldName.text = "yo";
That last line above, is what doesn't work. I know I'm referencing wrong, but how would a pro as3 developer, reference something on the stage within a movieclip class, from the document class?
How can I run function of the main document class from a class of a MovieClip? I usually just used MovieClip(parent).function(), but now my MovieClip has another parent. Or what do I have to pass to the MovieClip class when creating the MovieClip to acess the main document class?
Is it possible to dispatch event from class that isnt extended class of MovieClip? I created my own class and put import flash.events.Event; import flash.events.*; but when i call dispatchEvent compiler throws error:"1180: Call to a possibly undefined method dispatchEvent."