ActionScript 3.0 :: Passing Variable Into Different Functions Called By Event Listeners
Jun 30, 2011
I have 2 functions. Each one is being called by a different event listener. Both event listeners work because I am able to trace strings in both of them.. my problem is that i am trying to create a variable that is local to both functions. The first function "working" adds a number to the variable and when the second event listener triggers function "notworking" which retrieves this same variable called "counting" both functions are called automatically by event listeners.. how do I do this? i am stomped!
I have made an event listener:text0_mc.addEventListener(MouseEvent.CLICK, showMe);showMe is a function, but I need it to call more than 1 function at once i.e. -ext0_mc.addEventListener(MouseEvent.CLICK, showMe1, showMe2, showMe3, showMe4, showMe5, showMe6, showMe7);Each function contains an if statment as below.
function showMe1(event:MouseEvent):void { if (shuffledArray[1]==orderArray[1]){
What I am trying to do is, if a user presses keyboard (key 1), picture 1 should FadeIn and if a user presses keyboard (key 2) picture one should FadeOut and picture 2 FadeIn and vice-versa. With the code mentioned below it works fine sometimes if I am not pressing any other key while it is performing one action but sometimes it behaves weird also. What I want AS3 to do is not to take any action or in other words it should not listen to keyboard until it finishes the opening or closing animation of a picture or any other object assigned to the key.
stage.addEventListener (KeyboardEvent.KEY_DOWN, KeyDownHandler); /**///keyboard keycode for 1 & 2var key1:uint = 49; var key2:uint = 50; var BG1:Image1 = new Image1(); var BG2:Image2 = new Image2(); [Code] .....
I've had this glitch for a long time, and I've tried several ways to get rid of it, and now that I just recoded everything to see if it was something I did, it's back again! basically, whenever I press space (regardless of whether or not I am listening for a space press [or any key press]), the last function fired by an event listener will run itself again, with the exact same arguments supplied to it in the first time.
For example, if I make a simple button to trace("text"); and take you to another frame. Once you get to that frame you can press Space and it'll trace "text" again! I really have no idea what's causing this, and it doesn't seem to be happening to me in new files. and there's too much code to show you, but I just want to know if anyone has heard of this before or if they have any theories to what's going on.
I am fairly new to AS3. vancouverMC.dotsBttn.addEventListener(MouseEvent.M OUSE_OVER, mcIn(vancouverMC)); vancouverMC.dotsBttn.addEventListener(MouseEvent.M OUSE_OUT, mcOut(vancouverMC)); function mcIn(mcName:MovieClip):void{ mcName.gotoAndPlay("in"); mcName.ringMC.gotoAndPlay("on"); } function mcOut(mcName:MovieClip):void{ mcName.gotoAndPlay("out"); mcName.ringMC.gotoAndPlay("off"); } Why this is Not Working?
I'm currently working on a nav bar but I've run into a questionable situation. There are several links in the menu, and for each i'd like a mouse event on over and on out. Do I have to specify both of these events for each link, or is there an easier way to do it that I don't know about? Can you apply event listeners to multiple objects/functions?
I have a 16x16 grid of buttons, and want to add an event listener to each of them so when clicked it will return its unique grid position number (anything between 0-255);
What I have so far: public static const GRID_SIZE:Number = 16; private var i:int; private var j:int; // Constructor public function Grid() [Code] .....
Unfortunately every time the listener function is called by each button, it uses the last two values of i and j, which in this case return 255 for every button.
I've managed to create a button which on MOUSE_DOWN scales its parent object- it works just like windows in your OS, where you grab the corner and can change the scale of the window.
Here's how I've done it, (minus the MOUSE_DOWN listener)
Code: function scaleDragHandler(event:Event):void { var mcWidth:Number = event.target.parent.width; var mcHeight:Number = event.target.parent.height;
[Code].....
However, it throws the error, "Access to undefined property 'scaleMC'" on the removeEventListener line. My thought was to put another listener for mouse up inside the first, but that sounds wrong
fileReference.addEventListener(Event.COMPLETE, uploadCompleteHandler); private function uploadCompleteHandler(event:Event):void {}
Above is one way to add an event listener in Actionscript. By default the callback function needs to have an argument with name event and type Event. Is there a way to declare this function without any arguments :
private function uploadCompleteHandler():void {}
Edit : It's possible to add an event handler without any arguments in mxml. So one student wanted to know, why isn't it possible to do the same in actionscript?
I like reusing functions repeatedly so I pass the object to the function (blur, drop shadow, etc.) but if an Event or MousEvent function is involved, I have to do things I don't like. In my example, I had to put the TimerEvent.TIMER_COMPLETE function as a sub function of the setTimer function. I would rather keep the functions apart but I don't know how to pass a parameter to the event function to tell it what movieclip(timerObject) to fade in. Is there a better way to do this?
Is it possible to pass variable as arguments for a function? I wish to update a boolean variable via a function, by passing the name of the variable to the function, like so:
Code: function ENVSegment(curSegment:Boolean, nextSegment:Boolean) { curSegment = false; nextSegment = true; } var attackSegmentIsRunning:Boolean = false; var releaseSegmentIsRunning:Boolean = false; [Code] .....
Much shorter, and easier to understand. Also, less repetition of the same blocks of code over and over...
I used to actuate the painter function by using a MouseEvent although I'm prefering to do it this way, but I'm having issues with an error "1120: Access of undefined property thisMouse." Error in Bold I've attempted to pass the Mouse Event to the painter function but had no luck. A simple solution (even potentially dangerous and WRONG) would be fine here, as this is part of University Coursework and I haven't been taught Classes etc. Its basically an introduction to scripting but im trying to do things slightly out of my depth
I'm trying to write code so that when the variable p_bw is greater than 0, an event is called. I've read that I need to use dispatchEvent but I can't seem to get it working .Here is my code....
I am trying to add a Paypal Buy-It-Now button to my Flash site.The basics are simple enough:
this.cmd = "_s-xclick";this.hosted_button_id = "1234567"; this.getURL( "https://www.paypal.com/cgi-bin/webscr", "_blank", "POST" ); ...however, one of the button parameters to post is called 'return'.
This has been driving me nuts. The short of it is that I have a main movie that loads smaller swfs. In the main movie, there is a textbox that holds descriptions of the smaller clips.What I am trying to do is this: When the user clicks a button in the loaded swf, a string variable "feedback" replaces the text in the description text in the parent clip.Here is the code I have. I have been searching this for a while now and have tried various things, so this may be way off base. The clips load fine and everything, I just can't figure this one piece out.I am only showing the relevant code because there is a LOT of other working code. If anyone needs more info, let me know.Main Clip
Code: clipLoader.contentLoaderInfo.addEventListener( Event.INIT, onLoaderInit ); function onLoaderInit( e:Event ):void {
I added this code to make a movie clip (gFP) popup when rolled over and shrink back when rolled off:
gFP.addEventListener (MouseEvent.MOUSE_OVER, goToGFPOver); private function goToGFPOver(e:MouseEvent):void { gFP.scaleX = 1.4;
[code].....
It works, but I have 45 movie clips I want to add this to - way too much code. Is there a way to have the event listeners for all the movie clips go to the same "Over" and "Out" functions?
Let's I have a class Square that has a several functions. I want to call it from a class Grid, which is a group of Squares.So in the class file for Grid, how would I do this:
Code: public function doSquareFunction(thisFunction:Function):void{ square1.thisFunction();
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?
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?
However, why does dataset.generateComplete(); get called before onFileLoaded(event:Event)?I can only assume that this is the case, as var pointList:Array = myHandler.getPointList(); returns Null, and when I run some tests with trace statements,I can see that onFileLoaded (event:Event) is seemingly called after generateComplete() Is the URLLoader process running in parallel to the rest of the application?
This probably is not possible however its worth a try! Would there be anyway to trace out the functions that are being called by the SWF? for example.[code]I know you could simply add a trace into the actual functions but thats not an option!
I am adding a different listener to each button in the menu and there are several menus as well, then each one of those functions adds a different child depending on the button and also pushes several values to the Array list, in this example called objectsOnStage. I will be running this structure function 40 times with each of the highlighted elements changing accordingly.
//Listener and function for Button01 menu01.button01( MouseEvent.MOUSE_DOWN, button01Function); function button01Function(event:MouseEvent):void {
[code]....
My original thought was to keep all those changing values in an Array list and run a loop for the function/listener, but I just cant make it go.
Is there a way to do that without using a bunch of "if" or "switch" statements, like shoving them all in an array?I have a rough idea of how it would work, but I have no idea how it would look in code.And just to clarify,I mean an order than can be changed.Otherwise I wouldn't need to think about this at all.
How would I go about evaluating an array of strings as function calls?Something like this:
ActionScript Code: var my_mc:MovieClip; var myArray:Array = new Array("function1()", "function2()", "function3()");[code]....
I get an error "Instantiation attempted on a non-constructor".In this case, I'm trying to dynamically add linked movie symbols from the library. Perhaps I'm going about this the wrong way... ?
I have a function that I want called when different mc's are rolled over.
img_hover = function (n){ _root.icap = _root.i+(eval(n))+_caption;[code].....
The "n" is an interger (ex. 1-200) that I need passed to this function with the rollover of an mc:
on (rollOver) { _root.img_hover.apply('1'); }
I can't get this to work. I'm not sure of the proper way to pass the n value to the function in the img_hover.apply() code.The function should produce the following (ex. with n=23):
img_hover = function (n){ _root.icap = _root.i23_caption; _root.idate = _root.i23_date;[code]...........