Actionscript 3 :: Add Event Listeners To Global Stage Via Class?
May 24, 2011
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.
Can event listeners only be added to the class which dispatched the event? I ask because I want to have the logic for the listener on the main class, and the action is dispatched on click from a thumb which is instantiated in a scroller class. Kinda like this:
ActionScript Code: pseudo code: class main { main() {
[code]....
This doesn't work. Why can't the main class listen for an event on the thumb 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 found this code for a contact form at[url]...and it dynamically creates input fields and buttons. I didn't like the dynamically drawn submit and reset buttons, so I added my own MCs(my 'buttons') to the stage.I tried modifying the code and took out the dynamically drawn buttons..However, I cant figure out how to add Event Listeners to the buttons which exist on the stage--Im getting undefined errors...[code]...
As part of a very large project, I want the ability to set stage level event Listeners.
This works very easily with MouseEvent s but I can not seem to get it to run properly with KeyboardEvents. Having google'd this issue I have found very little on the subject. Mostly noobish type questions of syntax and so forth, but I have seen comment of people claiming to have it work for them.
To ensure no issues with any other code, I have made a blank project and blank .as file, with only the event listener code:
[Code]....
Click events are always captured and traced correctly, without fail. Pressing keys appears to do nothing. If however you mash the keyboards very very quickly, one or two key events will trigger sporadically.
I think I have been generating duplicate Event Listeners behind the scenes which is causing me some problems.
I like to find out what Listeners are in existence at a single moment. My code is long so it is hard to go line by line to isolate the issue. It would be faster if I knew what Listeners are were activated.
I'm adding and removing stage event listeners I am relatively new to AS 3 and have been building a liquid layout site unfortunately I do not have a strong grasp of classes and have been doing all of my scripting on the main timeline with encapsulated script within MC's.
basically I am calling on the same functions over and over and those are mostly resize functions which I have added StageEventListeners on the appropriate frames to listen for resize events on that stage now as of now I have literally dozens of these scattered about the site. when testing my site things are running fairly smoothly however I keep getting error messages in my output window that go a little something like this.
I have 22 buttons (each named buttoni where i is a number between 0-21...e.g. button0, button1, button2) that I've created and artfully arranged on the stage in my .fla file. The document class for the .fla file is People.as, and in People I'd like to give each button a rollover and click event listener, but I can't figure out how to refer to them using a loop.
Here's my code, which obviously doesn't work:
ActionScript Code: private function initButtons() : void { for (var i:int = 0; i<numSquares; i++) { var thisButton : String = "button" + i;
I found this code for a contact form at msinghinteractive easy-to-use-flash-as3-contact-us-form-class and it dynamically creates input fields and buttons. I didnt like the dynamically drawn submit and reset buttons, so I added my own MCs(my 'buttons') to the stage. I tried modifying the code and took out the dynamically drawn buttons..However, I cant figure out how to add Event Listeners to the buttons which exist on the stage--Im getting undefined errors...The fla is directly associated to a main.as class which just determines the parameters of the .as class it is tied to -to set the size of the Contact form.This is the entire class:
where btn is the instance name of my submit button MC.My problem is that because my buttons exist on the stage I dont know how to add Event listeners within that class---or rather doing that doesnt work because the listeners are throwing that undefined property errors--I gave them instance names...
I have many buttons in Main.mxml. I'm trying to move the button functionality into a Class and have Event Listeners inside the class respond to Click and call other functions. I have written:
I am creating a site with lots of big scrollable text-boxes in it. Each text-box object contained some text, and two buttons to scroll up/down with. The scroll buttons each had an event listener so the text moved when you clicked them.
These text-boxes were stacked on-top of each other with all except one having an alpha of 0. If I wanted to change which text-box is active I move it to the front and call a small TweenLite animation.
To the left (outside of the text-box objects) I have an object similar to a menu. It also has about 12 or so event-listeners (one for every button).
This turns out cause A LOT of lag an it's very troublesome for my laptop to run it. reduce the number of event-listeners on the stage and also the amount of text-boxes.
What I was thinking was to add the text-boxes using AS so I only have 1 on the stage at a time but I couldn't figure out how to do it. I also thought it might be better to just use 1 big event-listeners and from mouseX and mouseY decide which button the user is trying to push.
I have a movieClip on stage, inside is a dynamic textfield, and I have set mc.scaleY = 0; Code: mc.scaleY = 0; mc.buttonMode = true; mc.mouseChildren = false; And suddenly everything above and below (on the whole stage) where the movieClip actually is receives mouse, I can see by the button mode. But it only happens with dynamic text, not static. I have attached the example:
I'm creating a class for a game, and I'm having a problem removing event listeners from movieclips in that class.In the class file I have an enterFrame event which puts the movieclips into motion - I want to remove that event listener when the movieclip is removed from the stage.I made the function 'public' in the class file and tried to target it as follows (animal is the movieclip)animal.removeEventListener(Event.ENTER_FRAME, animal.onEnterFrameHandler)
how do I use mouse event listeners outside of my document class. I have the following simplified document class:
public class Main extends Sprite { public var realMain:State1 = new State1();
[Code].....
However, this doesn't work in its current state; "State1" isn't outputted. I have seen references to the use of the Event.ADDED_TO_STAGE event, but am not sure if that is what I need to do, or how to use it.
I am working on a Flash demo (all AS3) that requires a scrollbar. I wanted to create my own so on searching I found this Kirupa tutorial. I learned it an incorporated everything (also went well beyond) and the end product works nicely. There is one aspect of the code provided in this tutorial that has me very confused and, although my code includes it and everything works, it bugs me to not understand it. It's this part of the Scrollbar class:
I have a loop which creates a bunch of movieclips and sets them on the stage.As I create each one I attatch an eventListener to it.My problem is that when the eventListener fires, the function it calls always works on the first mc added to the stage, not the one that fired the listener.How do I fix this?Here's a bit of the code:
In AS3 on Android is it bad from a performance perspective to attach mouse event listeners to individual sprites rather than to the stage? I am writing an app for an Android phone using AS3 in Flash Builder. The app has multiple screens that respond to user touch. The screens are arranged in a hierarchy and show list data so that when you click on an item in a list you are presented with a new screen with a new sub list on it.
I have been using an event listener to detect mouse / touch input and based on something I read that indicated that performance is much better if you keep the number of objects you are listening to to a minimum I have attached the mouse listeners from each screen to the stage object.
This all works fine but I am finding that as I move between screens (and they get popped or pushed onto the dislay stack) I have to keep track of alot of adding and removing listeners to the stage object. If I don't then windows higher up the hierarchy than the current screen keep receiving mouse events.
If I used listeners attached to sprites in each window then when the window was removed from the display even though it is kept in memory (ready to be popped back when a child window is closed) it won't receive any mouse events....
Performance doesn't seem to be impacted using listeners directly on sprites when using my HTC phone to test with, however I obviously don't know what it will be like on other phones. Does anyone have any experience either way or a view on the best approach?
I want to make a static function that I can use in all the custom classes.It should be some kill(); function that would remove the object from the stage as well as removing its event listeners. I made it in Document class, and it didn't work. Here's the code:
ActionScript Code: public static function kill(e:DisplayObject) {[code].....
I want to make a little game. What I need is to add event listeners to all of Tank objects inside the Battlefield instance. I just can seem to figure out how.
I have a class file defined in my package as MyGlobals.as.[code] (I have tried adding/removing "static" and "dynamic" to no effect.)I am trying to call a touch event from the main timeline in this way:myObject.addEventListener(TouchEvent.TOUCH_BEGIN, MyGlobals.myFunctionName);(I have tried removing the class name to no effect.)When I compile I get the error 1046: Type was not found or was not a compile-time constant: TouchEvent. This error occurs on function definitions in the class file.What syntax/concept am I getting wrong? The functions were working fine when I was using constants in the timeline, but I need to be able to reuse these functions over and over again, so I wanted them to be able to take touch event variables so that I didn't have to write a different function for every touch event.I tried googling "error 1046" but I can't find anything useful.
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 came in to flash on ActionScript 3 and when I was starting out just over a year ago I realised how much of a bother finding keyCodes was and changing controls was just as long as had to look up the new one I wanted to use. My solution was to (eventually) write a class that handles all of my key presses and event listeners attached to that stuff. instead of using keyCodes, the functions use strings for their arguments making it easier to see what keys you want to do what. Initially the class only worked for letters and numbers but I managed to make it easily customisable and includes the arrow keys, numpad numbers, space, enter, shift and control keys.
The reason why I wrote this thread was because: I plan on making it a public class (available to anyone who wnats to use it) and b) to see if there were any specific functions that people think may be useful. So far there are the standard key-down and onRelease type functions as well as a function that only returns true once for the duration that a key is down - difference between pressing and holding.
Scenario: Up to 50 instances of a display object are arbitrarily positioned on the stage.Is it better to create listeners for each individual instance or create one single global listener and then somehow find out which instance triggered the listener? If the latter is preferred,Will event.currentTarget tell which instance it was? And should I register the listener to the stage?
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.
The problem is I get Error: Error #2094: Event dispatch recursion overflow. Why does removechild keep getting called if this.parent does not exist? Why doesn't removing event listeners work?
If I have a Global Variable Globalvars.vars.noLoaded which is in many classes How do I create an event where i detect to see if it reaches a certain number.