ActionScript 3 :: Class Raising Non Custom Events?
Jan 23, 2012
I'm using ActionScript 3 in Flash Professional and I'd like my class to raise an event, not a custom event but an existing one. I've set up my class so that it extends EventDispatcher. In the documentation [URL] the example declares a custom event by adding a static String variable:
class CustomDispatcher extends EventDispatcher {
public static var ACTION:String = "action";
I assume that enables:
dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler);
Or at least auto-complete when you've typed 'dispatcher.addEventListener(' into the Flash Professional IDE.
But lots of classes that raise events raise a mixture of existing noncustom events. For example if you have an instance of a flash.netFileReference and type
fileRef.addEventListener(
A long list of potential events to listen for is given including DataEvent.UPLOAD_COMPLETE_DATA, Event.SELECT, HTTPStatusEvent.HTTP_STATUS, SecurityErrorEvent.SECURITY_ERROR, etc.
If I want my class to be registered to raise those existing events, what code do I need? Preferably so that the IDE knows instances of my class may raise the event and suggests them in the addEventListener auto-complete/intellisense list.
I have built a Air 2/Flex 4 kiosk application with Flash Builder 4. Currently I am implementing a touch screen browser to enable users to navigate company training videos. In an attempt to improve the usability of the website on the touchscreen I have placed the HTML component in an adaption of Doug McCune's DragScrollingCanvas (updated to use the flex 4 'Scroller' component) to allow users to scroll the webpage by dragging their finger across the screen. The mouseDown event is used to start scrolling the viewport. In addition the webpage was modified to disable text selection with the following css:
[Code]...
As an alternative I also tried adding a group container with the same dimensions as the HTMLLoader to detect the mouseDown events (so that the group container and HTMLLoader have the same Dragable parent container) and was able to capture mouseDown events and scroll the viewport as expected. However as the mouse event is handled by the group container, I am now unable to navigate the webpage.
I have made a site in AS3.0 code and it's working fairly well but theres alot of things i'm trying to update to make the code a little more reusable. For startersI have a function that creates a little pop-up text when I roll over a button. The text is a class that I created in the Flash IDE instead of dynamically drawing it with actionscript.Here is the code for the pop up text instance called "enter_text" as it rolls over the movie clip "preloader_mc"
Code: //add listeners to the preloader_mc movie clip on stage preloader_mc.buttonMode=true;
I have an <mx:Application> which contains a <mx:Module>. This module has several child modules. It also has some an instance of a class I have created. I am trying to have a method of this class dispatch an event that can be "heard" by the module and handled. This isn't happening.To be more clear, I am using 'dispatchEvent' to from inside a class method.There is an instance of this class in: mx.core.Application.myapplication.mymodule.myclassIt is the 'myclass.somefunction' that dispatches the event. I have a listener registered in 'mymodule'. Nothing happens when the function/method runs, however.
I came to some misunderstanding how to use events. LOL. I thought I understand it but as I see I dont.
I've got a Engine document class where Hero is added, and Cannon object too. In body of Hero I need to dispatch event when Hero reaches some point or particularly a pitfall, so I've got static const string to handle it:
[Code]...
but this way I would end up with dozens of handlers in the Engine body class, and I am trying to minimize this class as it is big enough without those handlers. I am stunned and suprised, and I am noob again. Maybe someone will clear out how to get custom events working/... and why only instance of object that dispatches an Event can hear it (my case).
I'm curious about event performance. I have a custom class that downloads files from a server and writes to your local system with AIR. This class has a few custom events that fire during a download process: File starts downloading, files finishes downloading, error occurred, progress, and a few others. This class was built for a specific project, but made coupled so it can be used for anything else wanting to download a file from a server. I'm starting to implement it into a new project, and a few events I'm not listening for, such as when the file starts downloading, or the progress of it, just the complete.
Does it strain overall performance having all the other events still dispatching, when I know they aren't being listened to? Would be be better to comment out the dispatchEvent() for the specifics I know aren't used, or does it even matter? There's obviously events dispatched throughout the SDK that aren't always listened for: Right click, drag, resize, etc. This makes me think it doesn't matter that these events fire but aren't handled, but since code is running and things are happening, that means there is performance going on.
I'm having a problem with a custom subclassed Event class. Or I should say, I'm having trouble receiving events from this custom event class. I'm pretty sure I have everything wired correctly, the event is dispatched properly and my trace shows the Event instance being spawned. However, my eventListener, which is in another class, never fires its handler function.Have any of you run across instances where custom event classes fail to fire? I'm about at my wit's end.
Would it be possible for me to also dispatch non-custom events (like Event.CHANGE) from inside a class? I already did this with custom events which worked fine, but when I try to dispatch a the Event.CHANGE it will tell me that I am trying to convert a String into an Event (??). What I do is:[code]
I'm creating a custom class to retrieve some data using URLoader.My code is below, doing this from memory, plz ignore any minor typos.The challenge I'm encountering: when my custom class calls the loader, the event handler takes over. At which point the context of my code leaves the function and it's not clear to me how I then return the data retrieved by the loader. I sense that I'm breaking the rules of how ActionScript really runs by putting a loader in a separate class; at least, that's my primitive understanding based upon the reading I've done on this.So can I do this? I am trying to create a clean separation of concerns in my program so that my main program doesn't get clogged up with code concerned with retrieving remote data.
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 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:
This is my first time working with a class attached to a movieclip that is nested inside a class attached to a movie clip.I've tested all the properties and methods of PTListItem.as and they work properly but when I try to call them on the list item through PTListTop.as it returns undefined.The end goal is to dynamically load a checklist via a txt file.
I have the following situation:I have an event handler, that displays small messages in my application's statusbar.These messages get passes through by dispatching events from custom components.A simple message could be like "HTTP Error" or so.Now, the main event listener, in the main application file, listens to the event dispatched by any custom component,but seems to refuse listening to events dispatched by custom AS classes.Here is my code for the custom event:
package components { public class templateSelection extends VBox { static public var tempSelectionBag:Dictionary;
[Code]....
I want to have a custom class tempSelection with a Dictionary as a public accessable property of that class. If I use this code, the compiler tells me:
1046: Typ wurde nicht gefunden oder war keine Kompilierungszeit- onstante:Dictionary
Which translates to:
Type was not found or was not a compile-time constant: Dictionary
I have a main class which listens for an event dispatched from another class say class A. Also there are other classes say class B, class C etc.There is a controller class.Classes B, C dispatches events that gets listened by the controller and works well.But the events dispatched by the Class A doesn't get listened by the main class.What might be the problem. Detailed Explanation of the problem.There is a main mxml file.
Class files are in: ProcessInput.as DBController.as ShortMemDB.as ....etc
The main mxml file gets the input from a textArea. Sends the input to the capturedInput (input:String) function using set method which is in the ProcessInput Class.Now I need to dispatch events NORMAL, COMMAND depending on the input obtained after the processing, where I'm having problems. The reason is that if the event NORMAL is dispatched a particular function inside the DBController is to be called. If COMMAND event is dispatched then I need to call another function. This idea doesn't work since the events doesn't get listened.But the events dispatched by the CSDB class when listened by the DBController works well.
I've been running into a billion problems while creating custom events, so I clearly don't understand some of the basics. All the examples I've found online are unnecessarily complicated, so I've gone ahead and created a super simplified version of how I think it should work. The results are in bold...
So heres the issue I'm haveing, my event listener is not being triggered from the parent, and not retrieving my string for each button being clicked on.
Here is the event listener which listens for the subclass to dispatch an event called MenuEvent.LOAD_PAGE and then passes a string to a variable thats called whatPage thats defined within my custom event.
In Actionscript 3, most events use the capture/target/bubble model, which is pretty popular nowadays:
When an event occurs, it moves through the three phases of the event flow: the capture phase, which flows from the top of the display list hierarchy to the node just before the target node; the target phase, which comprises the target node; and the bubbling phase, which flows from the node subsequent to the target node back up the display list hierarchy.
However, some events, such as the Sprite class's enterFrame event, do not capture OR bubble - you must subscribe directly to the target to detect the event. The documentation refers to these as "broadcast events." I assume this is for performance reasons, since these events will be triggered constantly for each sprite on stage and you don't want to have to deal with all that superfluous event propagation.
I want to dispatch my own broadcast events. I know you can prevent an event from bubbling (Event.bubbles = false), but can you get rid of capture as well?
I'm making a game where you build supports under a bridge to keep it up. I'm trying to add some custom events to my game but I cant seem to get them to dispatch. What I'm trying to do is get the repair shop support to fire an event and tell the bridge and the surrounding supports its been built so they can generate a movie clip and start repairing them selves.If I trace the event it gives me all the correct data after the support is built but the listener on in the repair shop support and on the bridge does not receive it.
i have been trying to figure our the dispatchEvent system in as3. But am just not able to wrap my head around it. So can someone please explain and give me an example on how to dispatch custom events?
for eg: Here i just want to disptach event every 100ms and the event should give me the value of "a" .
I'm trying to create a custom multi-touch application that consists of a package containing about 6 classes at the moment. I'm trying to find a way to communicate between the various classes when certain custom events happen but am having a hard time making custom events.
I've tried about 5 different tutorials online for creating custom events and none of them have worked. The code is a bit extensive so I won't attach it but the specific situation I'm dealing with goes like this:
There is a drop down menu system that contains file names from an XML file. When the file name is clicked in the menu I want a custom event to be dispatched that I can pick up in another class file that loads the name of that file into a "status bar" textfield element elsewhere in the app, and later a class that will open the file and add it to the stage.
Can anyone help with this, I've been working on it for hours straight and I'm still having major issues.
Sometimes it works great, sliding each new status update down as it should. Most of the time it seems to have completely random positions set. I am completely at a loss. [URL]..
I think it's an event issue, specifically with line 127 trying to loop through the children and dispatch a custom event to all children. I'm not sure how to best do that.
I think this is a pretty simply problem but I do not seem to be able to pull it off. Basically I have a parent class A, and a child class B.Class A instantiates class B with addChild.There is a shared object which is being updated from a java server (red5) that has an event listener attached to it in class A.I have a function in class A which will pass certain, specific updates from this shared object to class B.The problem occurs is that when class B is instantiated, the event listener from class A doesn't work anymore. I have not removed the event listener from A.?
I'm using one of flash's standard FLV skins but want to modify the code and graphics. Not a problem however, I want an animation running around the outside of my player that can also be controlled by the play button of the movie player..... so..animation on outer skin is running or perhaps starts to run when user mouses over that area... video inside is still.... press play button, video starts, animation stops.... press pause, video stops, animation starts...
The fact is that the "dispatchEvent" method must be placed into the code or timeline where the "event" happens, then it can be trigged and the function associated with the event will be invoked. Ok, it is understood. Nevertheless, my question is: what's the point to create an event to trigger the a function call, if I can simply call the function instead directly???
Code: package{ import flash.events.Event; public class CustomEvent extends Event{ public static const ONSOMETHING:String = "onSomething"; public function CustomEvent(type:String){ super(type); [Code] .....
If I can do simply: Code: DoIt(); function DoIt(){ trace ("Done!"); } What I mean is that custom events doesn't look like as REAL events for me, but more like a delegate way to call a function. Differently from Flash native events that are controlled by an internal engine that keep checking if the event happened, in the custom events they must triggered 'manually', and it seems to lose the event main characteristic.
I'm trapping keyboard events on the stage and dispatching custom events through a framework (Mate, though I don't know that this is an important issue), but I'm pretty confused by the scope. The structure is:application (traps keyboard events and dispatches custom event mainPanel (receives dispatched events but mainCalendar (a child element) is null on debugging. Obviously if I try to call a public method on mainCalendar it errors out, even though it's a child of mainPanel. However, mainCalendar is NOT null IF I use FlexGlobals.topLevelApplication.mainPanel.mainCalendar. Outerdocument and parentDocument do not expose mainCalendar either, BTW mainCalendar (a custom component inside mainPanel with public methods. Creation policy is 'all' and it's visible and exists long before I trap any keystrokes at the top level)Could someone take a minute and explain why the mainCalendar is out of scope when mainPanel receives a custom event, even though mainCalendar is a child of mainPanel. Is there a better way to manage the events so I don't have to always address the component via the topLevelApplication?