Actionscript 3 :: Event Listener That Only Fires Once
Mar 19, 2010
I'm looking for a way to add an EventListener which will automatically removes itself after the first time it fires, but I can't figure a way of doing this the way I want to.[code]
flash is not my area of expertise, but I've inherited a task that deals with AS2 Basically, I have a flash document (a loader?) with the following AS 2.0 code:
[Code]...
Basically, the idea is after the movie finishes playing, you should get redirected to a new page. The problem is that sometimes the page redirects immediately (before the movie is played). The movies are being served up from a media server and this seems to happen more consistently with newly uploaded movies. Sometimes it takes several attempts to actually play the movie all the way through, but over time, the movies generally start to play problem-free.
It doesn't work because "updateNumCsrLoaded" is firing 6 times (twice per image) instead of 3. I could just change the if statement to "if (numCsrLoaded == 6)" but this is not
Tracing the keyCode for the 'a' key (65) only works once for KEY_DOWN events and sometimes KEY_UP behaves in the same way, making development a pain when trying to do things quickly.
Clicking on the stage makes it start working, but why is it just the 'a' key that is affected?
This is on a new MBP running OSX 10.6.5, Flash version MAC 10,1,102,64
[URL]
The issue can be reproduced every time with this code:
I have a block of code that I want to execute directly after a url is known to be valid. What I mean by 'valid' is that the program has checked to see if that filepath actually exists. This could be accomplished by a COMPLETE listener, because after all, a loader couldn't finish loading its content if the referenced file didn't exist, but I want it to happen before any of the bytes begin to get sucked in. I have also tried the HTTPS_STATUS event, with a conditional saying "if the status is this [some non-error status number], then run this block of code." This would have worked great, except that different environments produce different network codes, and some even can't distinguish between errors and non-errors, just returning 0's no matter what. Because of this, I can't write a conditional that works no matter what browser....
I have created a player that loads video FLV files and plays them in a sequence. On loading the videos I retrieve the total video time by stream.client.onMetaData = ns_onMetaData;" and in an EnterFrame event I check whether the video playtime is equal the totaltime. If the video playtime is equal to the totaltime then the player loads the next video. Sometime, even if the video ends, the playtime and total time doesn't match. So to fix the issue, I decided to put an event cue point (END) at end of each video FLV. So whenever the FLV fires the END event, the player removes the current video and loads the next one.
Suppose the video total time is 44:00. The cue point is also at 44:00 in the FLV. So whenever the player gets the END event from the FLV then it loads the next one. Now the issue is, if I pause the video at 42:00 and wait for 2 sec, the player gets the END cue point and jumps to the next video. When I paused the video the timer says "42:00 of 44:00". The timer doesn't increase, that means the video has actually paused. But I still don't understand that why I'm getting the END cue point where the video has not reached the time.
When executing dataprovider.refresh() for a chart component it redraws the chart. How do I determine when the chart is redrawn? I would like to take a png screen shot of the chart when it is fully drawn.
Variable called "switch" has a boolean value of "false".Event.ENTER_FRAME event listener method fires, and calls method "onEnter()".Within the "onEnter()" method, the "switch" variable is set to boolean "true".My question: What is the best way to make sure "switch" variable is called, and set, only once during the ENTER_FRAME event?
Is it as simple as checking if "switch" is false, and then setting it to true... Does it matter that I would be doing the if() for every frame of the Event.ENTER_FRAME?
How can I access to an object who fires an eventListener event?
Let's say I have a mc:
var element = new MovieClip();
which has an eventlistener: element.addEventListener(MouseEvent.CLICK, elementEventHandler);
[Code]....
So that is what I want to achieve... Recover the object who fired the event and then do crazy things with it (in this example, add another object in it).
pd: yes, I know I can directly use the var element in this snippet, but in the real code I'm generating the mcs in a loop, according to a xml file.
I have a Loader class which I'm using to load an image:
Code: var request:URLRequest = new URLRequest('https://some website path to .png'); var loader:Loader = new Loader(); loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, error); loader.contentLoaderInfo.addEventListener(Event.COMPLETE, done);
[Code].....
The code above works when I run it from FlashDevelop but fails when it runs from a website. The domain is protected by a crossdomain file which allows the website I'm calling it from. I've tried other https requests to the same domain using URLLoader and those work fine. This code never calls Event.COMPLETE or IO_ERROR and no alert error comes up.
With the KEY_DOWN event handler, if the user holds the key down it fires the event constantly. I want to create a KEY_DOWN event which only fires once on the initial key press, even if the user holds the key down.
I have an array of loaders loading .jpgs. After the Event.COMPLETE fires, I trace the content at the current page and it tells me the content is null, BUT on testing the images appear just fine. Here's my code:
It seems to be the case that the MOTION_FINISH event fires of prematurely in the Flash Tween class. I've heard that it is not the best tween engine to use, but this seems like a particularly egregious. I am using "Strong.easeOut" for the motion. What are some alternative tween engines that people like?
I added a click event to the stage but this event also fires when i'm clicking a movieclip on the stage.How can i make this event fire only if i click directly on the stage?
TypeError: Error #2007: Parameter listener must be non-null.at flash.events::EventDispatcher/removeEventListener() at project1_fla::MainTimeline/btnName()
I am trying to learn JavaScript and I am wondering whether JavaScript has a event listener just like ActionScript's ENTER_FRAME. Basically, I want this event listener to listen "all the time" not just wait for any particular instance (mouse click, keyboard event) of event.
if I have an event listerner (mouse, keyboard, enterframe,....event) that is being triggered, and when it finishes its event, something that is able to detect the finished event listener and fire out another sets of event.
It works more like MOTION_FINISH in TweenEvent, but it is only available for TweenEvent only, what if I want to detect a mousclick, keyboard, enterframe or even touch event?
My stage has about 25 buttons on it. Each button when pressed to tweens the background to some random x/y coordinates and then loads an external swf file.This is all working, but the timing is off. How can I wait for the initial background tween to end before I make the loader call to the .swf file.Currently each button's behavior is called on the MouseEvent.CLICK event which calls a function that knows its unique filename.swf. I know you can add the MOTION_FINISH even to the tween event but then I would have to call a new function and lose track of the button that initially called it.
I'm moving on to my next massive programming project and I'm trying to decide whether I should code it in as 2.0 or 3.0. I came across the new click event model in 3.0. Right now it's looking like a pain in the butt to me. So now I have to make a function and add it as an event listener? what the hell? What's the benefit? I understand stuff like this makes AS a more complete language but it's kinda annoying.
The title describes the problem: Loader.load() is firing the INIT event, but in my listener it's reporting loader.content as null. The description for INIT event is "Dispatched by the associated LoaderInfo object when the properties and methods of the loaded SWF file are accessible."I'm loading a lot of JPG images, and 95 percent of the time it works fine; the init listener fires and reports valid loader. content.I absolutely need loader.content available because I need to set the bitmap smoothing property to true.I've tried using Event.COMPLETE and it has the exact same problematic behavior.
This is a very basic question but I can't seem to find an answer. I have a mouse over event and have created the buttons with the mouse overs which is working great. I created the actionscript to go to a specific web page when a user clicks the button. Now, I need to add a label to the mouse over so when someone mouse's over any area of the button, it will show them a particular name for the button.
I am sure that this can be done using actionscript in a mouse event roll over command but I can't figure out what I need to show the text. Here is where I am:
how can i access event.target outside event listener method.say for example
my_mc.addEventListener(MouseEvent.CLICK, onC); function onC(e:MouseEvent):void { var m:MovieClip = e.target as MovieClip; } trace(m.totalframes);/// not working
now what if i want to get totalframe property of m instance, in short for every movieClip clicked.
I am doing this inside a module containing viewstacks and their childs.Calling onInit() on creationComplete of module.When I am inside one of the childs of a viewstack of this module and press Enter, it doesnt not invoke the listener function at all (bp inside this does not get hit).
private function onInit():void{ this.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed); }[code]..........
This might be more of a subjective question, but is it generally best practice to have one dedicated method per event-types that you add an event-listener?
Such as:
myButton.addEventListener(MouseEvent.MOUSE_OVER, onMouseOver); myButton.addEventListener(MouseEvent.MOUSE_OUT, onMouseOut); //Somewhere else in the code...
[Code].....
And if you had a MouseEvent.MOUSE_UP, MouseEvent.MOUSE_DOWN and other relevant MouseEvents event-listeners to watch for, you could even set a switch statement to handle all the various MouseEvent types.
I have these buttons in a movie clip and I would like to have only one event listener for the parent, using event.target to point to the children. I have also tried event.currentTarget, and it didn't work.here is the code that works:
I have a code in AS3 that works when you rollover it. I need to use the same code but not with an eventlistener for a mouse event but a frame event when the timeline plays the clip
var coordX:Number = shaker_mc.x;var coordY:Number = shaker_mc.y;var timer:Timer = new Timer(10); shaker_mc.buttonMode = false; shaker_mc.addEventListener(MouseEvent.MOUSE_OVER,startShake);shaker_mc.addEventListener(Mous
printableInvoice.addEventListener(batchGenerated, printableInvoice_batchGeneratedHandler);Results in this error: 1120: Access of undefined property batchGenerated. I have tried it as FlexEvent.batchGenerated and FlashEvent.batchGenerated.
The MetaData and function that dispatches the even in the component printableInvoice is all right. It I instantiate printableInvoice as an mxml component instead of via action-script it well let put a tag into the mxml line: batchGenerated="someFunction()
I made a test where I download a file using URLLoader - something like this:
[Code]....
in the middle of the downloading process I physically disconnect the internet connection. the download stalls - but after aproximately 30 seconds downloadSuccessful is invoked, although only half of the data was downloaded. how can I make sure that the data to be downloaded is complete and correct?