ActionScript 3.0 :: Add EventListeners To Shapes?
Feb 7, 2009Can I add eventListeners to shapes ?
View 2 RepliesCan I add eventListeners to shapes ?
View 2 RepliesI have a question about shapes (i mean the flash.display.Shape class). Is it possible to import Shapes directly from the library as Shapes and not as Sprites/MovieClips? Shapes are supposed to be faster than MovieClips/Sprites, right? So why is it only possible to import MCs/Sprites from the library? I understand that generally shapes could be created solely by actionscript, but in my case the shape comprises of many points and is curved - so it's quite infeasible.
Is there maybe some sort of plugin to generate code that would draw the desired shape from a drawn shape in CS4? And a last one: Are there any benchmarks out there for performance comparison between sprites/mcs/shapes? How much performance do i loose by using a sprite instead of a shape?
Let's say I have a global SoundChannel object, and inside a function I am repeatedly creating new instances of the Sound object to play songs one after the other. Each time I do this, I need to add a new eventListener to the SoundChannel to call the function 'onSoundComplete' that will load the next song on completion.Coming from a strict C++ programming background, I often wonder if it's necessary to do some kind of cleanup in Flash, or if it handles it automagically.Here's example code that specifically removes the eventListener from the previous Sound object everytime a new one is created, but I don't want to be doing this if it isn't necessary:
Code:
// Setup sound object buffer
var slc:SoundLoaderContext = new SoundLoaderContext(3000);
[code].....
I have images loading from an array. A slideshow. This works fine, but they pile on top of each other. I cannot figure out how to remove them. what's the simplest way to remove them? How do I say - if pic1 is loaded, before loading pic2, remove pic1?
Code:
var aPics:Array=new Array("pic1.jpg","pic2.jpg","pic3.jpg","pic4.jpg","pic5.jpg");
var threeSeconds:Timer=new Timer(3000,aPics.length);
threeSeconds.start();
[code]....
I'm trying to use an eventlistener in a class, but I can't make it work!
The class is ment to handle a HTTPRequest, so I'm using ResultEvent.RESULT.
public class GetXML
{
public var content:Object;
public var url:String;
[Code].....
Trying to add EventListeners to Bitmaps.Can I add an EventListener directly to a bitmap?If I load an image to a UILoader then addEventListener to the UILoader instance that works just fine, but if I use a Bitmap instead, nada...I could load the Bitmap into a Sprite and add the EventListener to that, but would prefer the direct method...
View 4 RepliesIs there a way to listen for the cursor in the input text field? I am making a form, and when the user clicks on the input box I want text to appear to the right side and than fade when they leave that text field.
the text field is called input_txt;
psuedo code
input_txt.addEventLister(event.MouseEvent, showText);
function showText(evt:MouseEvent):void{
text_mc.visibile = true;
}
I'm working on an image gallery which builds dynamically at runtime, simple enough.imageList is an array loaded with the images to display.
var imageList:Array = _root.images.split(",");var imageArray = new Array();var count = 0;for( var i = 0; i < imageList.length; i++ ){ _root.createEmptyMovieClip("myMC"+i, (i + 1)); _root["tmpMCL"+i] = new MovieClipLoader(); imageArray[i] = new Array(); ima
[code].....
Inside a .fla file I have some buttons and each button will tween a different image to the stage. All the images are outside the stage in the same x and y position and I just need to tween the x coordinate.
Now I'm working with an external document class where I'm trying to hold all my functions and I'm stucked with the Tweens. I'm willing to stay away from the flash tween engine and I'm trying to work with tweenLite.
Is it possible to pass parameters through eventListeners so I can use something like this inside my docClass?
public function animeThis (e:MouseEvent, mc:MovieClip, ep:int):void { //ep stands for endPoint.
TweenLite.to(mc, 2, {x:ep});
}
If this is possible, how am I supposed to write the listeners so it will pass the event to be listened for AND those parameters? And how to build the function so it will receive those parameters and the event?
I've got a few MouseEvent listeners outside of a function that contains nested functions that need to use the functions attached to the listeners.
button1.addEventListener(MouseEvent.ROLL_OVER, buttonOver);
function navigation (): void {
if statements;
[code]....
I keep getting an "1120:Access of undefined property buttonOver" error. I know it's because the EventListener is outside of the function "navigation" but I need it to be accessed by other functions later.
im trying find out a value of a var from a mc called from an eventlistener.
//////////// as2 oldSchool ////////////
function loadPlayer() {
trace("myScene: "+this.myScene)
[code]...
I have main.swf and content.swf. I load content into main. When I try to unload it gives me error, due to the fact that in my content.swf I have MouseMove event and this event is causing this error:
ActionScript Code:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at content_fla::MainTimeline/onLoop()
How to properly kill all eventListeners?
My main.swf code:
ActionScript Code:
var holder:Sprite = new Sprite();
addChild(holder);
[Code].....
I did some research and it seems quite an issue - especially when trying to remove, enterFrame, mouseMove or stage listeners. Im using CS3.
I tried using a .enabled = false; when I already had a click event on that movie clip. I found that you need to remove the eventlistener instead of making enabled false.Why doesn't enabled work when you have event listeners?I'm really more curious than in need of an answer since removeEventListener worked fine.
View 2 RepliesI have this code (for now, but there will be much more eventListeners) and i want to generate them dynamically.
Code:
s1.addEventListener(MouseEvent.CLICK, function1);
s2.addEventListener(MouseEvent.CLICK, function1);
[code]........
I have a menu with buttons on the stage that when clicked load external swf but the problem, although i can remove them from the stage, is that they are still playing which gives my site performance problems. I gave weak references to the Event Listeners but i didn�t remove them.Here�s the code:
Code:
import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
[code]...
How can i remove each the listeners from each swf so that the site doesn�t perform so slow?
Say I have this code:
Code:stage.addEventListener(KeyboardEvent.KEY_UP, reloader);
function reloader(e:KeyboardEvent):void {[code].....
and this:
Code: var reloadT:Timer = new Timer(2000, 2);
reloadT.addEventListener(TimerEvent.TIMER, on_timer);
reloadT.start();[code].........
So I have a code that tracks Key_UP and one for a timer. However, I want to somehow use them together, like inside each other: ex. Run the timer function in Key_UP.I want to trigger the timer only if Key_UP is found. How would I do this?
I got a pickle for you: I have a function that is currently connected to an event listener like this:
Code:
loginButton.addEventListener(MouseEvent.CLICK, loginOnClick, false, 0, true);
function loginOnClick(event:MouseEvent):void{
// Login code.
}
Right now I'd also like to call that same function using the ENTER from a keyboard since loginOnClick doesn't use the parameter received (event:MouseEvent). So I did this:
Code:
function keyboardListener(event:KeyboardEvent):void{
if (loginButton){
if (event.keyCode == Keyboard.ENTER && loginButton.enabled) {
loginOnClick(); // Generates an error because it doesn't have a parameter.
}
}
usernameTextField.addEventListener(KeyboardEvent.KEY_DOWN,keyboardListener);
Problem is, of course, AS3 doesn't let you call a function with the incorrect number of parameters or types. I tried following senocula's tutorials on functions and parameters but they don't seem to work on this very specific issue considering the parameter is an event reference.
I am creating a small image gallery and I am creating the actual images dynamically. The images are stored via json and I am listing them underneath each other. No I can get all to work and they all load and position each other correctly underneath. What I would like to do is assign each image a addEventListener so that when clicked they pass the necessary details onto another function which will then display a larger image simple and basic but I am having trouble with adding the eventlistener. each one gets an eventlistener to it but when clicking on each one they all show the details from the last one. The code is attached to the main gallery container is as follows:
[code]....
I want to know if there's a 'correct method' in removing a MovieClip off the stage. I am currently programming in simple OOP and I have 2 classes, for now lets relate them to Tree and Fruit. The fruit is the child of the tree.
When the fruit is being clicked on. the tree AND the fruit will fade off and I will perform a removechild only on the tree. So I'm now puzzled if just removing the tree would automatically remove everything including the fruit(without performing a proper tree.removeChild(fruit)) and all the eventlisteners attached to fruit?
If not, must I perform remove child on every single MC/Sprite I have added onto tree/fruit for the best performance? Would like to find out how you go about doing it the 'correct way'.
i need to attach an event listener, and have its handler have a variable passed into it ..this possible?
Code:
mc.addEventListener(Mouse.Event.ROLL_OVER, over(obj) );
function(e:MouseEvent,obj:Object):void{
e.removeEventListener(....);
trace(obj);
}
.. sommint like that .. as3 says function is static, missing argument etc .. there may be other ways about it - but it is crucial to my setup, as when the EL is added, the object passed is only obtainable at that point.
Is there anyway through which we can know that which event listeners are currently active and we can remove them at runtime? I am trying to create drawing board which have different shapes to draw. But I have to add event listener with for every shape and have to remove previous listeners. I want to remove the all active listeners in one go. Is it possible.??
View 3 RepliesI have created 4 classic text objects and called them Butt1 thru Butt4.This is so I can change the text in code from time to time.I want to create an event listener to pick up when the user;
a) mouses over Butt1, etc.
b) mouses out of Butt1, etc.
c) clicks on Butt1, etc.
In each case I will define a function to perform actions when the button is moused over, moused out or clicked.AddEventListener(MouseEvent.CLICK, clickHandler); does not seem to have parameters(as far as I can tell)to point to Butt1, etc.
I've got a presentation that continually reads an XML and displays content based on that. It works fine for 2-3 hours then just stops. No errors, just stops.
What I'm doing is adding and removing eventListeners throughout the process using two alternative loader objects.
For example:
PHP Code:
slideLoader1.contentLoaderInfo.addEventListener(Event.COMPLETE,loadJPG, false, 0, true );
I started using the "weak" listener based on what I've been reading about garbage collection, but actually this works better:
PHP Code:
slideLoader1.contentLoaderInfo.addEventListener(Event.COMPLETE,loadJPG);
The presentation runs much longer with the second listener type. In both cases I'm removing it this way:
PHP Code:
slideLoader1.contentLoaderInfo.removeEventListener(Event.COMPLETE,loadJPG);
Is there a problem constantly adding/removing eventListeners this way?
First shortly about how my site works: When a link is clicked it checks if something is already displayed in either the Left or Right side of the screen (the website looks like a book, so I have a left page I want to display information on and a right page). If there is already something showing it hides it and displays the new object, together with this it enables all the buttons within that object (I have separate functions to set up each object).
An example of such an EventListener would be:
pathTo.Button1.addEventListener(MouseEvent.CLICK, function():void {showText(side, object)});
What I'm trying to do is to remove all the previous set EventListeners without having to create separate functions for removing the links inside every object as well.
How do I remove all EventListeners on all objects inside another object? The only variable I want to store is the object containing everything. There are however not always EventListeners within the objects.
I am trying to remove an event listener on a FileReference object by calling a function, but it seems not to be removed, and I do not understand why.
Here is the code:
private function clearFileUploadListeners(file:FileReference, index:String):void {
var dispatchEvent:Function = function(event:Event):void {
dispatch(event.type, event, index); };
file.removeEventListener(Event.COMPLETE, dispatchEvent);
var bool:Boolean = file.hasEventListener(Event.COMPLETE);
if (bool)
trace("ERROR");
}
When I run this code, the trace actually happens. I don't understand why this boolean returns true, when I just tried to remove the eventListener just above! I believe it has to do with the fact that the dispatchEvent function is defined inside another function when I add the listener:
private function upload(file:FileReference, index:String):void {
var dispatchEvent:Function = function(event:Event):void {
dispatch(event.type, event, index); };
file.addEventListener(Event.COMPLETE, dispatchEvent);
}
The problem is that I need to access this "index" variable from the listener, and I can't set it as a global variable as each file has it's own index and it's a burden if I have to extend each event class to keep track of the index (Event, ProgressEvent, ..). I actually found a temporary solution, I am not sure if it is the best! I put my removeListener method actually inside the upload method, but made it a variable. As AS3 allows dynamic object, I attached this method to one of my object, and so I just call the reference to the method when necessary. The event is actually removed.
public function doAddItem(itemConcepto:int):void{
modalCfd = new modalCFDItems();
modalCfd.addEventListener(Event.CLOSE, closeHandler);
modalCfd.addEventListener("addItemResult", addItem_resultHandler);
modalCfd.addEventListener("addItemResize", addItemResize_resultHandler);
[Code] .....
Does that do it, or do I have to removeEventListener explicitly?
I'm in the very early steps of creating a game. I have a character on the stage and have it so that the user clicks the character to select him and then clicks else were on the stage to set a path. The second click in the same spot makes the character walk to that spot and resets the whole thing to do it again.
The selecting the character was the last thing I added in and has caused this error to come up somewhat randomly:
[Code]....
I've been thinking about how the garbage collection work for a while now and have to ask if its necessary to removeEventListeners before you null a class like this:
ActionScript Code:
var _nc:NetConnection;
function init():void
{
[Code]....
Obviously I can skip the removeEventListener but will it affect the memory usage if I don't remove it?
I'm trying to assign Event Listeners to buttons in an array and increment the function referenced in those listeners by 1 so the functions have unique names, is this possible?
ActionScript Code:
//ROLLOVERS FOR MENU
var btnsAry:Array = [hs1_mc, hs2_mc, hs3_mc, hs4_mc, hs5_mc, hs6_mc];
function setButtons():void {
for (var i:int=0; i<btnsAry.length; i++){
btnsAry[i].id = i;
[Code] .....
Memory leaks eventlisteners and new sounds. I have written up a media player code, which does what it is supposed to do, but the System.totalMemory steadily increases with time.My code essentially consists of nested calls using EvenListeners that trigger initiation of new sounds. I call up mp3 files that load and start play and on EventCOMPLETE load the next file Example of code snippet:
ActionScript Code:
function LoadNextTheme(e:Event = null):void // set next theme
{
if (A_play) {
[code]....
What parts of this kind of code keeps adding to total system memory?And how can I best stop that leak?