ActionScript 3.0 :: Referencing Stage Within Custom "Global" Class
Jan 25, 2010
I haven't gotten a handle on coding classes and the appropriate syntax with all the "public" "private" "static" keywords, etc. Anyway, one thing I miss in AS3.0 is having "out-of-the-box" global variables and functions. I've read a lot of forums and articles about making a simple "MyGlobal" class that could hold variables and functions which could be called from the timeline as "MyGlobal.doSomething()" However, I seem to be running into a problem trying to reference "stage" from within one of the global functions... I imagine this is because "stage" is an instance property. I'm basically trying to add/remove an event listener to the stage whenever the global function "MyFunction" is called.
How to access stage elements from within a class. buttonControls.as
Code: package { import flash.display.Sprite; public class buttonControls extends Sprite { // Navigation Hover Color var hover = "0xF1E960"; var normal = "0xFFFFFF"; public function changeColor(object, color){ [Code] .....
I created a custom class in a .as file. I then linked this custom class with a symbol from the library in my .fla file. However, I can't reference stage.stageWidth in my custom class file. I get a null object error.
I think this happens because the custom class file is associated with a symbol on the stage and not the stage itself. For example, if I set the fla file's Document Class to the name of my custom class I can reference stage.stageWidth in the custom class. But I don't do this because I am creating multiple instances of the symbol on the stage. In order to do that properly i found I have to set the class in the properties panel of the symbol to the underlying class which then defines how each symbol behaves.
Under this type of linkage, is there a way to reference the stage width from the class? I've tried root.stage.stageWidth and parent.stage.stageWidth to no avail. I also made sure to import flash.display.* in my custom class. Below is the code for my .fla file and my .as file. In the .as file you'll see the line "x = Math.random() * stage.stageWidth;". This is the line giving me problems. I could hard code it, as I do for the y variable on the next line, but I'd prefer not to in order to keep the code flexible.
I'm having problems referencing the stage from an external class. I've tried : Code: stage.addEventListener(MouseEvent.MOUSE_UP, onUp, false,0,true); And also Code: MovieClip(parent).addEventListener(MouseEvent.MOUSE_DOWN, onDown, false,0,true); But no luck. Can I not do this? I'm making a pencil class that I want to be able to reuse. I also tried "this" and while it didn't throw and error, it didn't work either.
I'd like to know how I can reference root stage values from within a movieclip, or even worse, from a class. For example, I have a class called Bground.as. It does stuff, according to current stage size - so if someone were to resize the window/browser, Background updates in real time and does something fancy while it's at it. To do this "fancyness", I need stageheight and stagewidth. However, simply pointing to them does not work.
Here's the simplified ActionScript Code: package klaseFP{ // imports import flash.events.*; import flash.display.*; public class Bground extends MovieClip{ [Code] .....
TypeError: Error #1009: Cannot access a property or method of a null object reference. at klaseFP::Bground() at FullScreen_03_fla::MainTimeline/frame1()
Background works as a document class, works perfectly in fact. However, if I use it as the class of a library object, error 1009 shows up. Same thing happens if I simply put the code into the timeline of the library object - stage referencing simply causes it to break. So, how do I dynamically change the values of variables in Background, according to values in the main movie/app?
I have a media player that I am codging together, one that will play either videos or MP3s depending on the variables it is passed. The video player part works fine. The MP3 player controls are all actual physical MCs on the stage; each one has its own AS class file as part of the package, but there is also a lot of AS that is happening in the main FLA as well. Messy, I know, but it mostly works great.
The MC on the stage in the main FLA is properly linked to the class file via Actionscript linkage, and the control itself works. However, I am trying to make some aspects of the control respond to variables that are set within the AS on the timeline of the main FLA, and I cannot seem to pass values to the control no matter what I do.
i am making a simple game i want to be able to add an keyboard event lisnter within the class constructor. However i am having trouble. i undertsand you have to pass the stage through a listed display object property stage? anyway i am getting errors that do not recognise my event listener keyboard event.
I have a media player that I am codging together, one that will play either videos or MP3s depending on the variables it is passed. The video player part works fine. The MP3 player controls are all actual physical MCs on the stage; each one has its own AS class file as part of the package, but there is also a lot of AS that is happening in the main FLA as well. Messy, I know, but it mostly works great.The MC on the stage in the main FLA is properly linked to the class file via Actionscript linkage, and the control itself worksHowever, I am trying to make some aspects of the control respond to variables that are set within the AS on the timeline of the main FLA, and I cannot seem to pass values to the control no matter what I do.The following variable is set in the main AS:Code:var notPlayedYet:Boolean = true;I also have some flashVars being passed in from the html, and these I can reference with no trouble from the main AS - the relevant one is:
I have a .as file with a load of functions that i include using : include "myFunctions.as".They can be accessed alright.I have a custom class that extends movieclip, and i want to use a function inside that class that is located in my "myFunctions.as" file.How do i do that? Seems like the class loads before the myFunctions.as file so the functions are unavailable at this time. I get that error message :
I'm an old C programmer been away from programming for years. Now we have a project requiring Flash and I've been elected. Just installed CS4. I have 16 panels in 4 sets of 4 that rotate left to right. (Big learning curve on that one - fading transitions in the right order...). Each panel must have a unique url when clicked. (16 urls).I've looked through many solutions, most of which seem unduly complex. I think that the simplest short of going to onRelease() with AS2 (Later I have to add mouseover changes in the graphics) is something like this:[code]I haven't found this solution out there. Is there a gotcha because the a#Link vars are accessed as global within the scope of handleLink? It doesn't feel right, but it works fine and 16 global variables doesn't seem too bad.
I'm intermediate in AS2, and I'm starting work on custom classes. I am making a class called VolcanicIsland and I want it to make a movieclip on the stage when it is called. I do NOT want to make a variable MC that gets put into the arguments when it is called, however. Here is the external AS file (trimmed to the problem area):
ActionScript Code: class VolcanicIsland extends MovieClip { //position private var x:Number;
I have created a custom class called SceneNavagation.as which i use to add my navigation to the stage. I was having problems getting the addChild to display my mc on the stage. So I passed the stage instance into my class and used that to attach my movieclips. _stage.addChild();
This worked but Im new to as3 and just wanted to know if this was a good way to do this below is my code.
I have created a custom class that extends the movie clip on frame 1 of the main timeline I create it var mainBox2:mainBox = new mainBox(); addChild(mainBox2); Now as I understand it you have to cast the parent as a MC so in the constructor of my external class I try this var myStage:MovieClip = MovieClip(this.parent); trace (myStage); I get null. What am I doing wrong?
How do I access Stage Class properties in Custom Class? Class: package { import Main; import flash.events.*; import flash.display.Sprite; import flash.display.Stage; public class Run extends Sprite { [Code] ....
Output: TypeError: Error #1009: Cannot access a property or method of a null object reference.
I'm currently trying to add the resulting XML (xmlResult) to a textbox that is on the stage. I did try using MovieClip(root).[instancename].text = ..... however it didn't work - null object reference?
package { public class ChatHistory extends MovieClip { public function ChatHistory()
I am trying to make a game, I have worked out all the movement, shooting, updating stats techniques, but I have a problem that is not so obvious to me. I need to go to new frame(stages' new frame) every time left mouse button is pressed.
How can I tell stage to do gotoAndStop(); function from a custom class?
tl;dr:Using MTASC, How can I take a MovieClip that exists on stage and interface with it through a custom class? I'm a UI/UX designer and interface engineer, and I've recently been trying to improve my development workflow. I've been trying to achieve the following workflow:Create the UI in Adobe IllustratorImport the UI into Adobe FlashSet up MovieClips to allow interactivity on the stageExport the finalized design as an .swfWrite code to interface with the various parts of the UIInject the code into the precompiled .swf using MTASCI can do all of the above, but I've been having problems when it comes to writing the code. I'd like to write object-oriented code as much as possible, but I can't seem to link my custom classes to anything that starts on the stage. How can I take a MovieClip that exists on stage and interface with it through a custom class using the MTASC?
I have extended a RadioButton into a custom class in order to store some extra info. I want to dynamically add these RadioButtons to the stage to create a dynamic menu box. So I started simple in order to make sure I knew how to do this.Here's the error (I love Flash IDE error reporting):
Code: TypeError: Error #1009: Cannot access a property or method of a null object reference. at fl.controls::RadioButton/drawLayout() at fl.controls::LabelButton/draw()
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?
I've done a class to be able to listen to the event for a CLASS not on an instance.
Code: class net.webbymx.events.XClassEventListener {[code]....
why did I do this.It cames with my rugby game.I have player in two teams. When a player throw the ball I want the other teammate to act like "wait for ball" and the opponent like "seek for ball". Plus I'm lazy (and I don't want to register the listener for each instance of the player I'm creating). So this class is made to be able to handle as many instance of a class I want without adding a listener on each of them. I'm just creating a global listener on the class and then I will be able to receive dispatched event for any instance of this class .so in my team I can do
I finally got the variable referencing between classes and custom event problems sorted out. Now I got a question regarding the Error #2044 and Error #2035. The error reads like this:
Error #2044: Unhandled IOErrorEvent:. text=Error #2035: URL Not Found.
I've put all the swf in the same directory, so I don't think that is the problem. Could it be that my XML file is in another directory that's causing the problem? I also heard having quotes in the URL in the XML file could also be problematic. Is that true? Here are my AS and my XML file. [code]......
I am new to AS3, as well as Flash in general, so forgive me if this seems highly elementary. All I am trying to do is create a custom class that extends the MovieClip class and contains a custom property of "marker". I want to be able to use and change the value of this custom property on the timeline for an instance of this class and have it behave just like any other (Ex: this.x ==> this.marker).
I need to increment an integer variable in a function within the document class upon transpiring event in another class. I can't seem to figure out how to call the function and reference the variable.
I have a custom class being constructed from my main class. In the custom class it has another custom class that is passed in as a parameter. I would like to strictly type the parameter variable but when I do, 'the type is not a compile type constant etc'.This, I understand, is because the custom class used as a parameter has not yet been constructed.It all works when I use the variable type ( * ) to type the parameter.I suspect this is a design flaw, in that I am using an incorrect design pattern.It is actually hand-me-down code, having received a large project from someone else who is not entirely familiar with oop concepts and design patterns.
I have considered using a dummy constructor for the parametered class in my main class but the passed in class also takes a custom class (itself with a parametered constructor). I am considering using ... (rest) so that the custom classes' parameters are optional.Is there any other way to control the order of construction of classes? Would the rest variables work?edit)in main.as within the constructor or another function
var parameter1:customclass2; customclass1(parameter1); in customclass1 constructor:
I have an enemy on the stage that reads whether it's being hit by a bullet by a hittest. There's a for loop inside the enemy's class that looks for all the bullets and names the bullet that's hitting it "hitBullet". What I'd like to do have an easy way of seeing what type of bullet is hitting the enemy. I'm basically looking for something like
if (hitBullet == RegBullet) { //do regular bullet dying }else if (hitBullet == ClusterBullet) { //do clusterbullet dying }
, where RegBullet and ClusterBullet are classes. But I have no idea what hitBullet is equal to when a ClusterBullet or RegBullet hits it. I traced hitBullet to see what it would return and got "[object ClusterBullet]", but I'm not sure what that would be in the actual code.