ActionScript 3.0 :: Accessing Stage Instances From Within The Main Constructor Class?
Oct 26, 2009
my movie is linked to an external class called game, and in the game cosntructor I am trying to access instances on my stage. I have tried MovieClip(root).instancename, root.instancename and even tried adding an event listener to listen when the movie is done loading because I thought maybe it was because the instances on the stage weren't created before the constructor is ran. This is the main class, shouldn't it be easy?
I wanted to remove an event listener from main class stage, but i get the error 1120: Access of undefined property stage. How do I actually access the stage?
custom class:
import main; main.disableVcam();
main class:
public static function disableVcam():void { trace("disable"); stage.removeEventListener(MouseEvent.MOUSE_MOVE, movevC); }
I've made it this way1. I made clip and it's main class (eg. timeline.as) - at this point it works2. I put code from main class to another class (eg. timeline_template.as) and in main class (timeline.as) I inherit it by :public dynamic class timeline extends timeline_template {3. I added stage items declarations in timeline_template.as because without that any code couldn't reach target an I got 1120: Access of undefined property xxx after these steps whole clip works but items on stage ( buttons, etc. ) are not affected by code. That's logical because code references to properties declared in timeline_template but not in timeline.fla. But how to get around that - I need several usage of timeline_template and I would like to avoid code redundancy
I have flash application with main document class, components which are on the scene are instancied at runtime, contrustor of these components are call before main class, but i'd like to execute code before main class and components instanciation, how can i do this ? i tried to create an actionscript layer at frame 1 but still not work.
I'm writing an Air application using only Actionscript, and Flex3 SDK as the compiler. Everything compiles and runs fine under adl, but when the final air file is built and installed, the main class is never initialized.[code]When run under ADL, "Init" will be output to the console, but when installed and run, nothing happens (the constructor for class main is never called).
I modified an Adobe Flash CS5 sample to create a swf with a preloader. In my FLA I've two stopped frames:In the first frame I only put this code (and a textfield showing percentage):[code]When I test the Adobe sample (it has no main class on frame 2, only a large image) anything works fine, but when I compile the modified version I get strange errors. In the Main class constructor I reference three movieclips, eg. this way: myClip.alpha=0, but it seems now Flash can't see them anymore (they are null). Why?
I've been having a problem that I have not found a good solution for. I think this is a problem related to the Flash Player's architecture so an experienced eye here would be welcome.
Imagine you've got 3 symbols in the Library and create instances of them by dragging them onto the stage. Each object is linked to a class. Let's say the object classes are named ObjectA, ObjectB, ObjectC. Their stage instance names are objectA, objectB and objectC.
The classes of these objects reference stage instances. For example, ObjectA might have a reference to ObjectC, like this:
var _objectC = MovieClip(root).objectC;
ObjectC might have a reference to ObjectA, like this:
var _objectA = MovieClip(root).objectA;
It sounds like this should work but it doesn't. When the SWF is published, objects on the stage are instantiated in the order that they were dragged from the Library. This means if objectA is instantiated before objectC, it's reference to objectC will return null and the code will fail.
I know there are ways around this, but I'm trying to come up with a solution that doesn't involve the document class, a helper class like a singleton, or instatiating objects with addChild().
It seems that the only way you can be absolutely certain that all the objects have been instantiated is on the first frame of the movie. So I've been using a system that adds an enterFrame event listener to just get references of stage objects when the first frame runs, like this:
function findStageInstances(event:Event):void { var _objectA = MovieClip(root).objectA; var _objectB = MovieClip(root).objectB;
[code]....
(Note: The ADDED_TO_STAGE event won't help in this case because objects are added to the stage by the SWF based on the order they were dragged onto the stage from the Library.)
I have programmed a game using the Flash authoring tool and a document class. I'm trying to graphically add instances and add functionality in the document class. Suppose I have a main timeline with 3 frames, each frame reperesents a different level of the game. In frame 1 I have an instance of the MovieClip class named tree1 on the stage and in frame 3 I have an instance of the MovieClip class named tree3 on the stage. In my document class, after an initial stop() command, I want some logic like: tree3.scaleX = tree1.scaleX; But tree3 is unknown to the runtime since we are not of frame 3 yet. Any way to access all the instances on all frames declared in the authoring tool from the document class?
I have mutliple instances on the stage of a custom ThumbNail class. As you click on a particular instance an associated enlarged external image will load. As this is happening I want to make sure that the ThumbNail class animations are inactive for all instances.
I was thinking of using a Boolean variable that would get set right before the image is loading. Using event.currentTarget should help with the instance that was clicked but how do I gain access to the instances that were not clicked?
I have a movie clip on the root which contains my menu. And another movie clip which plays my video. Basically when i click a menu item it calls a function which i want to able to send a command to my video player to play another video.
This is code inside my video player movie clip (i've missed out the including of the class and various config stuff - below is just so you see the name of the class instance)
var MDVideo:MD_VideoPlayer; var videoPath:String = "assets/ski_video.flv"; MDVideo = new MD_VideoPlayer(videoPath, local_config_obj);
[Code]....
How do i access the MDVideo instance from my menu movie clip?
i know its probably been answered here before but I havent been able to find exactly what i need to make it work. Plus this is my first time doing AS3 so
i've been all afternoon trying to figure out a solution to my problem, and I can't seem to find it, or cannot implement it. Let me lay it out for you: I have an actionscript file linked to a movieclip. (movieclip:skate class linked: generic_skate).I have it set up that way so I can create an array of skates easily (i'm using a for loop to create them), and each skate has its own attributes (name, description, price and the image that is supposed to go on the deck)In the stage, i have three text boxes, one for the price, other for the name, and another one for the description.In the generic_skate class, I'm handling all the mouse events (in this case mouseOver and mouseOut.
What i want to accomplish is: when the user hovers over a skate, the info shows up in the text fields and when he hovers out, the info goes away. My problem: Since I'm doing all the mouse interaction in the class file, my guess is that I have to access the stage to get to the text boxes that are placed there to change its info or somehow create a "middle" man to do all the handling.
when to use this in a classes?is there any specific rule?is it wrong to use this when you want to just access the stage that way?or is it better to pass the reference to the stage in the class constructor?
i created lil bit complex button (for me ) and i want to use that button lets say 6 times, but what i want is every other button have different text.i tried everything and i failed, ill attach my .FLA a quick explanation:i have master mc_homeContainer,when u enter there is a label called btn text,when u enter in that button text u r now in sprite 58.in that sprite i want to but 6 keframes and each to contain different text. lets say keyframe 1 is home, keyframe 2 is about us etc.and then how can i call that text when i put 6 instances of mc_homecontainer to main stage.WOW i complicated all
I'm slightly new to Flash CS3 + AS3 combo, so its more of a lack of practice question. My question stems from the problem described here http:[url].... . Note, its not the same problem, its a new one.The Problem ,So I have multiple library assets (which are on teh stage) and I want to assign similar functionality to all of them.
Attempt 1: So I create the n assets, create a custom class in AS3, link them to Flash CS3 and obviously enough it gives me the error that multiple assets can't be linked to the same class.Obvious enough to understand (well not completely, because from a programmers background it doesn't make sense).
Attempt 2: Same as attempt 1, but instead of linking all the assets to the same class I make the base class the same class, and let the derived class be dynamically created by Flash on compile time.So the linking works, but the problem is, in my base class I have a method which does something (say an tween) on a child of the library asset. So if the assets on the stage/library are called asset1, asset2, asset3 (same name for asset name, class name, id name), each of them has a sub-movieclip called ... say 'foo'. now if I manually wrote a class for each asset, I could do 'this.foo' to play with the sub-movieclip. However since this functionality is in the parent class, I'm unable to do it.
P.S. If you're form a programming/OOP background, its basically a abstract class problem. My Base class knows how to doSomething(), but it needs aSomething, which is defined in the Derived classes. However I found out that AS3 classes don't support virtual(C++ )/abstract (Java) in the true sense of the word (unless I missed some obvious documentation).
From within a movie clip, I'm trying to update variables on my main timeline. I tried both _parent.variablename and _root.variablename, but neither worked.
How can I call a MC from a class other than my main. I am making a side scroller and I when the player hits certain parts of the level I want the floor to fall out from under him (think Mario). I created a new class to attach to the different MC of the floor but I cant figure out how to access the player MC from the class. The MC name is playerMC that was exported for actionscript, and the instance name is player_mc. This is the class.
I have created a class, call it Class1, that has various objects drawn on the stage (drawn in the IDE). It also has a function, called setColour, for changing the colour of those objects. The function works fine if I call it from within Class1.
Now I have another class, call it testClass1, that imports Class1 and calls the setColour function. First of all, none of the stage objects from Class1 are visible. Secondly, when setColour tries to modify the colour of an object, I get the error:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
There is a library component represented by Class A. But constructor of this class requires some parameters. When the component needs to be added dynamically, it's fine because of code :
var abc:A = new A(param1,param2)
But what if my movieclip is already present on the stage. I notice it gives out error, that the parameters are null.
Is their any way to insert constructor parameters for movieclips already on stage.
I have a class, the relevant parts of which are defined as follows:
class myClass extends MovieClip { public function myfunc() { trace( "mainVar: " + _root.mainVar ); } }
As you can see, I want to access the variable "mainVar", which exists in the main movie, from within the class. This works fine, if I have only one instance of the class. But, if I have more than one instance, within separate movie clips, the value of mainVar is always taken from the first instance. How do I refer to the actual instance from within the class?
Basically the class waits for the callback variable (my_msg). The problem is: I need to set the dynamic textbox text to my_msg variable.
How can I access it? I know I can access a public var in the timeline with functioname.variable but I can't define a public var inside a function, right?
I'm was getting good with as2 but recently made the mind switch from, I'll learn as3 tomorrow to as3 is awesome. The problem for me is that I don't understand the scope for classes. I know I can trace a variable on the main time line when the var is declared in the class. But how do you access a main time line var from a class? Here's an example - main time line Monkey.fla
Code: var cagedMonkies:int = 10; var monkeyTransport:MovieClip = new CarTrunk();
I'm being really dumb today and I know this should be simple.....How do i access the stage from a class which isn't the Document Class? For instance, I want to create a tween which takes in the parameters of the stage's width? So I've written.....
ActionScript Code: var myTweenX:Tween = new Tween(this, "x", Regular.easeOut, this.x, stage.stageWidth, 60, true);
I have a MovieClip, that I'm going to add to the display list with my document class at runtime beacuase there will be many instances of it. The MoviClip "box" has 3 more MovieClip instances inside it,and each of those three have two more.It looks like this:
in the timeline I have a dynamic text box named my_textbox: var my_test:main = new main(); my_test.check_DVBViewer(); my_textbox.text = ??Basically the class waits for the callback variable (my_msg). The problem is: I need to set the dynamic textbox text to my_msg variable. How can I access it? I know I can access a public var in the timeline with functioname.variable but I can't define a public var inside a function, right?
I'm new to this OOP stuff, and I'm having a hard time understanding all of this.I'm trying to recreate in AS3.0 with classes a simple whack-a-mole game I created in AS2.0 using timeline coding.I've read through a lot of forums, but I still don't understand what exactly I'm doing wrong.Heres my setup:I have a movie clip named mrBunny (my girlfriend told me to change it to bunnies as moles were too ugly.). Now there are 6 instances of mrBunny on the stage, each named mrBunny0-5.The mrBunny symbol is linked to the com.mrBunny class.The class has a method called randomPlay(); which I use to randomize the animation times of mrBunny.I also have a button on the stage with the class stageBtn.
I'm writing a series of Search windows for an application. I create the FLA files on the stage, each has 3 simple buttons: next_btn, prev_btn, and close_btn. Those all have event listeners which call findNext(), findPrev() and closeWin() respectively. Each search window looks for different things, some with a text box and some with a combo, etc.
So I have a base class com.search that extends Sprite and adds the eventListeners at startup (actually, on addedToStage). Like this:
function isAddedToStage(evt:Event){ next_btn.addEventListener("click",findNext); prev_btn.addEventListener("click",findPrev); close_btn.addEventListener("click",closeWin);}
[Code]....
If I add the event listeners in the derived class rather than the base, it works fine. But that seems to defeat the purpose of inheritance, plus it infers that I won't be able to derive new classes/swfs from those derived classes.
how does one reference objects created on the stage from a base class of that document's class?
How do i access the stage from a class which isn't the Document Class? For instance, I want to create a tween which takes in the parameters of the stage's width?[code]