Search Results

Search found 688 results on 28 pages for 'addeventlistener'.

Page 1/28 | 1 2 3 4 5 6 7 8 9 10 11 12  | Next Page >

  • Correct usage of addEventListener() /attachEvent()?

    - by ginny
    Hi guys! I'm wondering how to use "addEventListener" resp. "attachEvent" correctly!? window.onload=function(myFunc1){ // do something } function myFunc2(){ // do something } if (window.addEventListener){ window.addEventListener('load', myFunc2, false); } else if (window.attachEvent){ window.attachEvent('onload', myFunc2); } ... or function myFunc1(){ // do something } if (window.addEventListener){ window.addEventListener('load', myFunc1, false); } else if (window.attachEvent){ window.attachEvent('onload', myFunc1); } function myFunc2(){ // do something } if (window.addEventListener){ window.addEventListener('load', myFunc2, false); } else if (window.attachEvent){ window.attachEvent('onload', myFunc2); } ... ? Is this cross-browser secure or should I better go with sth. like this: function myFunc1(){ // do something } function myFunc2(){ // do something } ... function addOnloadEvent(fnc){ if ( typeof window.addEventListener != "undefined" ) window.addEventListener( "load", fnc, false ); else if ( typeof window.attachEvent != "undefined" ) { window.attachEvent( "onload", fnc ); } else { if ( window.onload != null ) { var oldOnload = window.onload; window.onload = function ( e ) { oldOnload( e ); window[fnc](); }; } else window.onload = fnc; } } addOnloadEvent(myFunc1); addOnloadEvent(myFunc2); ... AND: Say "myfunc2" is for IE 7 only. How to modify the correct/preferred method accordingly? Thank you so much!

    Read the article

  • Calling AddEventListener in a loop with a variable element name

    - by user302209
    Hi, I'm trying to do the following: I have a set of images and select (dropdown) HTML elements, 30 of each one. I'm trying to use AddEventListener on a loop from 1 to 30 so that when I change the value of the select, the image src is updated (and the image changes). The AddEventListener function is this one: function AddEventListener(element, eventType, handler, capture) { if (element.addEventListener) element.addEventListener(eventType, handler, capture); else if (element.attachEvent) element.attachEvent("on" + eventType, handler); } I tried this and it worked: var urlfolderanimalimages = "http://localhost/animalimages/"; var testselect = "sel15"; var testimg = "i15"; AddEventListener(document.getElementById(testselect), "change", function(e) { document.getElementById(testimg).src = urlfolderanimalimages + document.getElementById(testselect).value; document.getElementById(testimg).style.display = 'inline'; if (e.preventDefault) e.preventDefault(); else e.returnResult = false; if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; }, false); But then I tried to call it in a loop and it doesn't work. The event is added, but when I change any select, it will update the last one (the image with id i30). var urlfolderanimalimages = "http://localhost/animalimages/"; for (k=1;k<=30;k++) { var idselect = "sel" + k; var idimage = "i" + k; AddEventListener(document.getElementById(idselect), "change", function(e) { document.getElementById(idimage).src = urlfolderanimalimages + document.getElementById(idselect).value; document.getElementById(idimage).style.display = 'inline'; if (e.preventDefault) e.preventDefault(); else e.returnResult = false; if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true; }, false); } What am I doing wrong? I'm new to JavaScript (and programming in general), so sorry for the vomit-inducing code :(

    Read the article

  • attachEvent inserts events at the begin of the queue while addEventListener appends events to the qu

    - by Marco Demaio
    I use this simple working function to add events: function AppendEvent(html_element, event_name, event_function) { if(html_element) { if(html_element.attachEvent) //IE html_element.attachEvent("on" + event_name, event_function); else if(html_element.addEventListener) //FF html_element.addEventListener(event_name, event_function, false); }; } While doing this simple test: AppendEvent(window, 'load', function(){alert('load 1');}); AppendEvent(window, 'load', function(){alert('load 2');}); I noticed that FF3.6 addEventListener appends each new events at the end of the events' queue, therefor in the above example you would get two alerts saying 'load 1' 'load 2'. On the other side IE7 attachEvent inserts each new events at the begining of the events' queue, therefor in the above example you would get to alerts saying 'load 2' 'load 1'. Is there a way to fix this and make both to work in the same way? Thanks!

    Read the article

  • addEventListener gone after appending innerHTML

    - by Vishal Shah
    Okay, so i have the following html added to a site using javascript/greasemonkey. (just sample) *a id='abc'*HEllo*/a* *a id='xyz'*Hello*/a* (excuse me, i've had to replace the '<' '' with * since hyperlinks for new users aren't allowed!) and i've also added a click event listener for the elements. All works fine up to this point, the click event gets fired when i click the element. But... i have another function in the script, which upon a certain condition, modifies that html, ie it appends it, so it looks like: *a id='abc'*HEllo*/a* *a id='xyz'*Hello*/a* *a id='123'*Hello*/a* but when this is done, it breaks the listeners i added for the first two elements... nothing happens when i click them. if i comment out the call to the function which does the appending, it all starts working again! help please...

    Read the article

  • ActionScript-3 calling addEventListener more than once

    - by mydiscogr
    I've a little problem, I don't really understand if I can use addEventListener more than one time on the same object (and same callback function) if this case can I have a problem of overflow, or simple flex is so smart to not add again in the same stack same function for examples: var t:CServiceObj = _rModel.userGetBoardJoined(); t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk);

    Read the article

  • As3 help about addEventListener

    - by mydiscogr
    Hi, I've a little problem, I don't really understand if I can use addEventListener more than one time on the same object (and same callback function) if this case can I have a problem of overflow, or simple flex is so smart to not add again in the same stack same function for examples: var t:CServiceObj = _rModel.userGetBoardJoined(); t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); t.addEventListener(EDataService.DATA_AVAILABLE,onDataOk); thanks

    Read the article

  • javascript addEventListener onStateChange not working in IE

    - by user347456
    Hi, I have two colorbox popup boxes which show a youtube video in each. When they're finished playing, I'm trying to have them automatically close the colorbox window. This code below works perfect in firefox, but in IE I can't get addEventListener to work. I've tried attachEvent with no success. Can anybody offer any suggestions as to how to solve this? It seems simple but I'm exhausted trying to find a solution. By the way, this is my first time as stackoverflow and it's very impressive. var params = { allowScriptAccess: "always" }; var atts = { id: "ytplayer1" }; swfobject.embedSWF("http://www.youtube.com/v/VIDEO1&rel=0&hl=en_US&fs=0&autoplay=1&enablejsapi=1&playerapiid=ytvideo1", "popupVideoContainer1", "640", "385", "8", null, null, params, atts); var params2 = { allowScriptAccess: "always" }; var atts2 = { id: "ytplayer2" }; swfobject.embedSWF("http://www.youtube.com/v/VIDEO2&rel=0&hl=en_US&fs=0&autoplay=1&enablejsapi=1&playerapiid=ytvideo2", "popupVideoContainer2", "640", "385", "8", null, null, params2, atts2); function onYouTubePlayerReady(playerId) { if(playerId == 'ytvideo1'){ var ytplayer = document.getElementById('ytplayer1'); ytplayer.addEventListener("onStateChange", "onytplayerStateChange", false); } else if(playerId == 'ytvideo2'){ var ytplayer = document.getElementById("ytplayer2"); //ytplayer.addEventListener("onStateChange", "onytplayerStateChange", false); if (ytplayer.addEventListener) { ytplayer.addEventListener("onStateChange", "onytplayerStateChange", false); } else if (ytplayer.attachEvent) { ytplayer.attachEvent("onStateChange", onytplayerStateChange); } } } function onytplayerStateChange(newState) { if(newState == 0){ $.fn.colorbox.close(); } }

    Read the article

  • addEventListener using apply()

    - by Paul
    I'm trying to invoke addEventListener() using apply() method. The code is like: function rewrite(old){ return function(){ console.log( 'add something to ' + old.name ); old.apply(this, arguments); } } addEventListener=rewrite(addEventListener); It doesn't work. The code works for normal JavaScript method, for example, function hello_1(){ console.log("hello world 1!"); } hello_1=rewrite(hello_1); Need help! Thanks!

    Read the article

  • addEventListener() isn't detecting KEY_UP nor KEY_DOWN

    - by Zirenth
    My full code is import flash.events.KeyboardEvent; import flash.events.Event; //init some variables var speedX = 0; var speedY = 0; msg.visible = false; var curLevel = 2; var level = new Array(); var flagVar; var won = false; //Adding level platforms for(var i = 0; i < numChildren; i++) { if(getChildAt(i) is platform) { level.push(getChildAt(i).getRect(this)); } if(getChildAt(i) is flag) { flagVar = getChildAt(i).getRect(this); } } //Checking key presses var kUp = false; var kDown = false; var kLeft = false; var kRight = false; var kSpace = false; stage.addEventListener(KeyboardEvent.KEY_DOWN, kD); stage.addEventListener(KeyboardEvent.KEY_UP, kU); function kD(k:KeyboardEvent) { trace("Key down - " + k.keyCode); if(k.keyCode == 32) { kSpace = true; } if(k.keyCode == 37 ) { kLeft = true; } if(k.keyCode == 38) { kUp = true; } if(k.keyCode == 39) { kRight = true; } } function kU(k:KeyboardEvent) { trace("Key up - " + k.keyCode); if(k.keyCode == 32) { kSpace = false; } if(k.keyCode == 37) { kLeft = false; } if(k.keyCode == 38) { kUp = false; } if(k.keyCode == 39) { kRight = false; } } addEventListener(Event.ENTER_FRAME, loopAround); function loopAround(e:Event) { //horizontal movement if(kLeft) { speedX = -10; } else if(kRight) { speedX = 10; } else { speedX *= 0.5; } player.x += speedX; //horizontal collision checks for(var i = 0; i < level.length; i++) { if(player.getRect(this).intersects(level[i])) { if(speedX > 0) { player.x = level[i].left - player.width; } if(speedX < 0) { player.x = level[i].right; } speedX = 0; } } //vertical movement speedY += 1; player.y += speedY; var jumpable = false; //Vertical collision for(i = 0; i < level.length; i++) { if(player.getRect(this).intersects(level[i])) { if(speedY > 0) { player.y = level[i].top - player.height; speedY = 0; jumpable = true; } if(speedY < 0) { player.y = level[i].bottom; speedY *= -0.5; } } } //JUMP! if((kUp || kSpace) && jumpable) { speedY=-20; } //Moving camera and other this.x = -player.x + (stage.stageWidth/2); this.y = -player.y + (stage.stageHeight/2); msg.x = player.x - (msg.width/2); msg.y = player.y - (msg.height/2); //Checking win if(player.getRect(this).intersects(flagVar)) { msg.visible = true; won = true; } //Check for next level request if(kSpace && won) { curLevel++; gotoAndStop(curLevel); won = false; } } The section in question is //Checking key presses var kUp = false; var kDown = false; var kLeft = false; var kRight = false; var kSpace = false; stage.addEventListener(KeyboardEvent.KEY_DOWN, kD); stage.addEventListener(KeyboardEvent.KEY_UP, kU); function kD(k:KeyboardEvent) { trace("Key down - " + k.keyCode); if(k.keyCode == 32) { kSpace = true; } if(k.keyCode == 37 ) { kLeft = true; } if(k.keyCode == 38) { kUp = true; } if(k.keyCode == 39) { kRight = true; } } function kU(k:KeyboardEvent) { trace("Key up - " + k.keyCode); if(k.keyCode == 32) { kSpace = false; } if(k.keyCode == 37) { kLeft = false; } if(k.keyCode == 38) { kUp = false; } if(k.keyCode == 39) { kRight = false; } } This was working fine last night, but today I moved it to a new keyframe and now it's not working. I'm not getting any errors (even if I debug). It just won't move the character or even show up in output. I'm still quite new to as3, so I don't really know what to do. Thanks in advance. Edit: After playing with it a bit, I've found out that the reason it's not working is due to the menu. The menu has a single button and two text elements, which are fine. The code that I'm using on the menu is this: import flash.events.MouseEvent; stop(); var format:TextFormat = new TextFormat(); format.size = 26; format.bold = true; playGameButton.setStyle("textFormat", format); stage.addEventListener(MouseEvent.CLICK, playGame); function playGame(e:MouseEvent) { if(e.target.name == "playGameButton") { gotoAndStop(2); } } If I use just gotoAndStop(2); it works fine, but with everything else it just goes to the second frame, and nothing else works after that. Edit #2: I've narrowed it down even farther to the if statement itself. if(e.target == playGameButton) if(e.target.name == "playGameButton") Both of those don't work. If I just remove the if statement all together it works perfectly fine.

    Read the article

  • addEventListener pass caller as argument

    - by Ryan
    Hi, I have the following code. And my problem is that when clicking, the event is firing but the argument passed is not the correct one. It is passing the last dynamically created row i.e. dataStructure.length value. Anyone knows a solution how to get around this? var table = document.getElementById('output'); for(i =0; i<dataStructure.length; i++){ var row = document.createElement('tr'); row.setAttribute('id', i); var url = dataStructure[i].url; if(document.addEventListener) row.addEventListener('click', function(){handleRowClick(i);}, false); var obj = dataStructure[i]; var cellCount = 0; for(field in obj){ var cell = document.createElement('td'); cell.setAttribute('id', cellCount++); //cell.addEventListener('click', function(){window.open(dataStructureObj.links[i].url);}, false); cell.innerHTML = obj[field]; row.appendChild(cell); } cellCount = 0; table.appendChild(row); } } function handleRowClick(rowClicked){ var rowHTML = rowClicked.innerHTML; var cells = rowHTML.getElementsByTagName('td'); for(cell in cells) { alert(cell.value); } window.open(cells[1].innerHTML); }

    Read the article

  • FLEX: videoDisplay.addEventListener(VideoEvent.PLAYHEAD_UPDATE) doesn't work

    - by Patrick
    hi, the PLAYHEAD_UPDATE event is not triggered by my videoDisplay component in Flex. If I add the attribute playheadUpdate="playUpdate()" everything works fine. But in the following code, the method "playUpdate()" is not triggered... thanks <?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init()"> <mx:Script><![CDATA[ import mx.events.VideoEvent private function init():void { ... videoD.addEventListener(VideoEvent.PLAYHEAD_UPDATE, playUpdate); } private function thumbPressed():void { videoD.removeEventListener(VideoEvent.PLAYHEAD_UPDATE, playUpdate); } private function thumbReleased():void { videoD.addEventListener(VideoEvent.PLAYHEAD_UPDATE, playUpdate); } private function playUpdate():void { debugF.text = "OK"; slider.value = videoD.playheadTime; } ]]></mx:Script> <mx:VideoDisplay id="videoD" autoPlay="{autoPlayOption}" source="{videoPath}" click="togglePlay()" /> The text OK is not displayed, and the slider is not updated. As I mentioned before, adding the attribute in MXML, works, instead.

    Read the article

  • Actionscript - Adding EventListener to multiple buttons on stage

    - by Chev
    I have a little problem with adding EventListener to multiple objects on stage. I have above 40 buttons on stage named "Button01","Button02" .. "Button40", and i'm looking for easiest way to add EventListener to all of them. Creating something like Button01.addEventListener(MouseEvent.CLICK, doSomething) Button02.addEventListener(MouseEvent.CLICK, doSomething) .. Button40.addEventListener(MouseEvent.Click, doSomething) (Notice the same function). isn't solution i'm looking for :(. Thanks in advice.

    Read the article

  • Adobe Flex Datagrid: addEventListener MouseEvent.CLICK

    - by JonoB
    I have a datagrid with a custom label itemrenderer (basically it makes the label look like a traditional html hyperlink). <mx:DataGridColumn id="itemId"> <mx:itemRenderer> <mx:Component> <controls3:HyperlinkLabel text="{data.doc}" /> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> The above works perfectly. I'd like to try add an event listener to this itemrenderer, but I'm not sure how to do this given that I cant specify an id for the itemrendered itself. I tried the following, but it doesnt seem to work: itemId.addEventListener(MouseEvent.CLICK, onItemSelect);

    Read the article

  • 1180: Call to a possibly undefined method addEventListener

    - by Chris
    I'm going through some AS3 training, but I'm getting a weird error... I'm trying to add an event listener to the end of a motion tween in AS. I've created a tween, highlighted the frames, right clicked and copied the tween as AS and pasted it into the movie clip (I think there's a better way to do this, but I'm not sure what it is...) When I try to add the listener to the end of that code, I get the error. Here's my code. import fl.motion.AnimatorFactory; import fl.motion.MotionBase; import fl.motion.Motion; import flash.filters.*; import flash.geom.Point; import fl.motion.MotionEvent; import fl.events.*; var __motion_Enemy_3:MotionBase; if(__motion_Enemy_3 == null) { __motion_Enemy_3 = new Motion(); __motion_Enemy_3.duration = 30; // Call overrideTargetTransform to prevent the scale, skew, // or rotation values from being made relative to the target // object's original transform. // __motion_Enemy_3.overrideTargetTransform(); // The following calls to addPropertyArray assign data values // for each tweened property. There is one value in the Array // for every frame in the tween, or fewer if the last value // remains the same for the rest of the frames. __motion_Enemy_3.addPropertyArray("x", [0]); __motion_Enemy_3.addPropertyArray("y", [0]); __motion_Enemy_3.addPropertyArray("scaleX", [1.000000,1.048712,1.097424,1.146136,1.194847,1.243559,1.292271,1.340983,1.389695,1.438407,1.487118,1.535830,1.584542,1.633254,1.681966,1.730678,1.779389,1.828101,1.876813,1.925525,1.974237,2.022949,2.071661,2.120372,2.169084,2.217796,2.266508,2.315220,2.363932,2.412643]); __motion_Enemy_3.addPropertyArray("scaleY", [1.000000,1.048712,1.097424,1.146136,1.194847,1.243559,1.292271,1.340983,1.389695,1.438407,1.487118,1.535830,1.584542,1.633254,1.681966,1.730678,1.779389,1.828101,1.876813,1.925525,1.974237,2.022949,2.071661,2.120372,2.169084,2.217796,2.266508,2.315220,2.363932,2.412643]); __motion_Enemy_3.addPropertyArray("skewX", [0]); __motion_Enemy_3.addPropertyArray("skewY", [0]); __motion_Enemy_3.addPropertyArray("rotationConcat", [0]); __motion_Enemy_3.addPropertyArray("blendMode", ["normal"]); __motion_Enemy_3.addPropertyArray("cacheAsBitmap", [false]); __motion_Enemy_3.addEventListener(MotionEvent.MOTION_END, hurtPlayer); // Create an AnimatorFactory instance, which will manage // targets for its corresponding Motion. var __animFactory_Enemy_3:AnimatorFactory = new AnimatorFactory(__motion_Enemy_3); __animFactory_Enemy_3.transformationPoint = new Point(0.499558, 0.500000); // Call the addTarget function on the AnimatorFactory // instance to target a DisplayObject with this Motion. // The second parameter is the number of times the animation // will play - the default value of 0 means it will loop. // __animFactory_Enemy_3.addTarget(<instance name goes here>, 0); } function hurtPlayer(event:MotionEvent):void { this.parent.removeChild(this); } I've tried a few places for it, both with the animFactory_Enemy_3 variable and the motion_Enemy_3 variable - getting the same error both times.

    Read the article

  • Add an event to HTML elements with a specific class.

    - by Juan C. Rois
    Hello everybody, I'm working on a modal window, and I want to make the function as reusable as possible. Said that, I want to set a few anchor tags with a class equals to "modal", and when a particular anchor tag is clicked, get its Id and pass it to a function that will execute another function based on the Id that was passed. This is what I have so far: // this gets an array with all the elements that have a class equals to "modal" var anchorTrigger = document.getElementsByClassName('modal'); Then I tried to set the addEventListener for each item in the array by doing this: var anchorTotal = anchorTrigger.length; for(var i = 0; i < anchorTotal ; i++){ anchorTrigger.addEventListener('click', fireModal, false); } and then run the last function "fireModal" that will open the modal, like so: function fireModal(){ //some more code here ... } My problem is that in the "for" loop, I get an error saying that anchorTrigger.addEvent ... is not a function. I can tell that the error might be related to the fact that I'm trying to set up the "addEventListener" to an array as oppose to individual elements, but I don't know what I'm supposed to do. Any help would be greatly appreciated.

    Read the article

  • AddEvenLister fires off immediately after being attached

    - by Diego
    I want to know how to correctly add an Event Listener like onClick to a dynamic div. Here’s my snippet: var $menu = new Array(2); createDiv('yes'); function createDiv(title) { var $class = 'menuLink'; var $title = 'title'; for(var i=0; i<$menu.length;i++) { $title = 'title'; var newdiv = document.createElement('div'); newdiv.setAttribute('class', $class); newdiv.setAttribute('id', 'item'+i); newdiv.addEventListener('onclick', clickHandle(newdiv.id),false); if (title) { newdiv.innerHTML = $title; } else { newdiv.innerHTML = "No Title"; } document.getElementById('menu').appendChild(newdiv); showMenu(); } } function clickHandle(e) { if(e == 'item0') { alert('Link is' + ' ' + e); }else{ alert('Another Link'); } } Here's my problem, the snippet works fine, It creates my divs, adds id's values and all, but the event fires off as soon as the event is attached, so while the for loop is creating the divs the alert window says: Link is item0, and immediately after this it says: Another Link. Am I misunderstanding this? (I used this method zillions of times in AS3 with the expected result, just attached a function waiting for a click). What I want is that my Divs wait for the user to click on them, not to fire off immediately after of being attached. Thanks for any hint on this one. Greetings. Ps. IE doesn't support addEventListener, but I want to resolve this before cross to the IE sea of madness, but I will appreciate the IE approach as well. - I tried "onclick" and just 'click' into the addEventListener line, both with the same result described above.

    Read the article

  • AS3: Weak Listener References Not Appropriate During Initialization?

    - by TheDarkIn1978
    as i currently understand, if an event listener is added to an object with useWeakReference set to true, then it is eligible for garbage collection and will be removed if and when the garbage collection does a sweep. public function myCustomSpriteClass() //constructor { this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener, false, 0, true); this.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener, false, 0, true); } in this case, is it not appropriate to initialize an object with weak references event listeners, incase the garbage collector does activate a sweep removing the objects event listeners since they were added during initialization of the object? in this case, would it only be appropriate to create a type of deallocate() method which removes the event listeners before the object is nullified?

    Read the article

  • Why can't I add an event to each element in a collection that refers to Itself rather than the last

    - by user311403
    On Window's load, every DD element inside Quote_App should have an onCLick event appended that triggers the function Lorem, however, Lorem returns the nodeName and Id of the last element in the For statement rather than that of the element that trigged the function. I would want Lorem to return the nodeName and Id of the element that triggered the function. .js function Lorem(Control){ /* this.Control=Control; */ this.Amet=function(){ return Control.nodeName+"\n"+Control.id; }; }; function Event(Mode,Function,Event,Element,Capture_or_Bubble){ if(Mode.toLowerCase()!="remove"){ if(Element.addEventListener){ if(!Capture_or_Bubble){ Capture_or_Bubble=false; }else{ if(Capture_or_Bubble.toLowerCase()!="true"){ Capture_or_Bubble=false; }else{ Capture_or_Bubble=true; }; }; Element.addEventListener(Event,Function,Capture_or_Bubble); }else{ Element.attachEvent("on"+Event,Function); }; }; }; function Controls(){ var Controls=document.getElementById("Quote_App").getElementsByTagName("dd"); for(var i=0;i Currently you click on any DD element Lorem always returns the nodeName and Id of the last DD element. Lorem should return the nodeName and Id of the Control (Control[i]) that triggered Lorem. How do I go about making this happen? Thank you!

    Read the article

  • How do I add and remove an event listener using a function with parameters?

    - by Bungle
    Sorry if this is a common question, but I couldn't find any answers that seemed pertinent through searching. If I attach an event listener like this: window.addEventListener('scroll', function() { check_pos(box); }, false); it doesn't seem to work to try to remove it later, like this: window.removeEventListener('scroll', function() { check_pos(box); }, false); I assume this is because the addEventListener and removeEventListener methods want a reference to the same function, while I've provided them with anonymous functions, which, while identical in code, are not literally the same. How can I change my code to get the call to removeEventListener to work? The "box" argument refers to the name of an <iframe> that I'm tracking on the screen; that is, I want to be able to subscribe to the scroll event once for each <iframe> that I have (the quantity varies), and once the check_pos() function measures a certain position, it will call another function and also remove the event listener to free up system resources. My hunch is that the solution will involve a closure and/or naming the anonymous function, but I'm not sure exactly what that looks like, and would appreciate a concrete example. Hope that makes sense. Thanks for any help!

    Read the article

  • Using Event Driven Programming in games, when is it beneficial?

    - by Arthur Wulf White
    I am learning ActionScript 3 and I see the Event flow adheres to the W3C recommendations. From what I learned events can only be captured by the dispatcher unless, the listener capturing the event is a DisplayObject on stage and a parent of the object firing the event. You can capture the events in the capture(before) or bubbling(after) phase depending on Listner and Event setup you use. Does this system lend itself well for game programming? When is this system useful? Could you give an example of a case where using events is a lot better than going without them? Are they somehow better for performance in games? Please do not mention events you must use to get a game running, like Event.ENTER_FRAME Or events that are required to get input from the user like, KeyboardEvent.KEY_DOWN and MouseEvent.CLICK. I am asking if there is any use in firing events that have nothing to do with user input, frame rendering and the likes(that are necessary). I am referring to cases where objects are communicating. Is this used to avoid storing a collection of objects that are on the stage? Thanks Here is some code I wrote as an example of event behavior in ActionScript 3, enjoy. package regression { import flash.display.Shape; import flash.display.Sprite; import flash.events.Event; import flash.events.EventDispatcher; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.events.EventPhase; /** * ... * @author ... */ public class Check_event_listening_1 extends Sprite { public const EVENT_DANCE : String = "dance"; public const EVENT_PLAY : String = "play"; public const EVENT_YELL : String = "yell"; private var baby : Shape = new Shape(); private var mom : Sprite = new Sprite(); private var stranger : EventDispatcher = new EventDispatcher(); public function Check_event_listening_1() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { trace("test begun"); addChild(mom); mom.addChild(baby); stage.addEventListener(EVENT_YELL, onEvent); this.addEventListener(EVENT_YELL, onEvent); mom.addEventListener(EVENT_YELL, onEvent); baby.addEventListener(EVENT_YELL, onEvent); stranger.addEventListener(EVENT_YELL, onEvent); trace("\nTest1 - Stranger yells with no bubbling"); stranger.dispatchEvent(new Event(EVENT_YELL, false)); trace("\nTest2 - Stranger yells with bubbling"); stranger.dispatchEvent(new Event(EVENT_YELL, true)); stage.addEventListener(EVENT_PLAY, onEvent); this.addEventListener(EVENT_PLAY, onEvent); mom.addEventListener(EVENT_PLAY, onEvent); baby.addEventListener(EVENT_PLAY, onEvent); stranger.addEventListener(EVENT_PLAY, onEvent); trace("\nTest3 - baby plays with no bubbling"); baby.dispatchEvent(new Event(EVENT_PLAY, false)); trace("\nTest4 - baby plays with bubbling"); baby.dispatchEvent(new Event(EVENT_PLAY, true)); trace("\nTest5 - baby plays with bubbling but is not a child of mom"); mom.removeChild(baby); baby.dispatchEvent(new Event(EVENT_PLAY, true)); mom.addChild(baby); stage.addEventListener(EVENT_DANCE, onEvent, true); this.addEventListener(EVENT_DANCE, onEvent, true); mom.addEventListener(EVENT_DANCE, onEvent, true); baby.addEventListener(EVENT_DANCE, onEvent); trace("\nTest6 - Mom dances without bubbling - everyone is listening during capture phase(not target and bubble phase)"); mom.dispatchEvent(new Event(EVENT_DANCE, false)); trace("\nTest7 - Mom dances with bubbling - everyone is listening during capture phase(not target and bubble phase)"); mom.dispatchEvent(new Event(EVENT_DANCE, true)); } private function onEvent(e : Event):void { trace("Event was captured"); trace("\nTYPE : ", e.type, "\nTARGET : ", objToName(e.target), "\nCURRENT TARGET : ", objToName(e.currentTarget), "\nPHASE : ", phaseToString(e.eventPhase)); } private function phaseToString(phase : int):String { switch(phase) { case EventPhase.AT_TARGET : return "TARGET"; case EventPhase.BUBBLING_PHASE : return "BUBBLING"; case EventPhase.CAPTURING_PHASE : return "CAPTURE"; default: return "UNKNOWN"; } } private function objToName(obj : Object):String { if (obj == stage) return "STAGE"; else if (obj == this) return "MAIN"; else if (obj == mom) return "Mom"; else if (obj == baby) return "Baby"; else if (obj == stranger) return "Stranger"; else return "Unknown" } } } /*result : test begun Test1 - Stranger yells with no bubbling Event was captured TYPE : yell TARGET : Stranger CURRENT TARGET : Stranger PHASE : TARGET Test2 - Stranger yells with bubbling Event was captured TYPE : yell TARGET : Stranger CURRENT TARGET : Stranger PHASE : TARGET Test3 - baby plays with no bubbling Event was captured TYPE : play TARGET : Baby CURRENT TARGET : Baby PHASE : TARGET Test4 - baby plays with bubbling Event was captured TYPE : play TARGET : Baby CURRENT TARGET : Baby PHASE : TARGET Event was captured TYPE : play TARGET : Baby CURRENT TARGET : Mom PHASE : BUBBLING Event was captured TYPE : play TARGET : Baby CURRENT TARGET : MAIN PHASE : BUBBLING Event was captured TYPE : play TARGET : Baby CURRENT TARGET : STAGE PHASE : BUBBLING Test5 - baby plays with bubbling but is not a child of mom Event was captured TYPE : play TARGET : Baby CURRENT TARGET : Baby PHASE : TARGET Test6 - Mom dances without bubbling - everyone is listening during capture phase(not target and bubble phase) Event was captured TYPE : dance TARGET : Mom CURRENT TARGET : STAGE PHASE : CAPTURE Event was captured TYPE : dance TARGET : Mom CURRENT TARGET : MAIN PHASE : CAPTURE Test7 - Mom dances with bubbling - everyone is listening during capture phase(not target and bubble phase) Event was captured TYPE : dance TARGET : Mom CURRENT TARGET : STAGE PHASE : CAPTURE Event was captured TYPE : dance TARGET : Mom CURRENT TARGET : MAIN PHASE : CAPTURE */

    Read the article

  • AS3 - Event listener that only fires once

    - by Zed-K
    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. I found this function (here) : public class EventUtil { public static function addOnceEventListener(dispatcher:IEventDispatcher,eventType:String,listener:Function):void { var f:Function = function(e:Event):void { dispatcher.removeEventListener(eventType,f); listener(e); } dispatcher.addEventListener(eventType,f); } } But instead of having to write : EventUtil.addOnceEventListener( dispatcher, eventType, listener ); I would like to use it the usual way : dispatcher.addOnceEventListener( eventType, listener ); Has anybody got an idea of how this could be done? Any help would be greatly apprecitated. (I know that Robert Penner's Signals can do this, but I can't use them since it would mean a lot of code rewriting that I can't afford for my current project)

    Read the article

1 2 3 4 5 6 7 8 9 10 11 12  | Next Page >