ActionScript 3.0 :: Want Functions To Be Called In A Very Specific Order
Mar 4, 2009
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.
I've got a project thats getting a bit big, so Im taking the actionscript out into separate as files. I want all the basic functions to be in BasicFunctions.as and the make a library for more specific functions. I find that a lot of people use the import statement but I cant get that to work with a simple Hello World trace, yet the include statement works fine (see attached). I understand that import/include work differently, but which is the better method? If import, then is that heavier to work with. Any rate, what's the best way to organise code when it gets to the 1000+ lines?
Problem:I want to be able to run functions in a certain order from an array. The code below is a non-fat version of what I want to accomplish. The problem appears when thefunction(scream_name) runs. Flash makes the passed variables into one variabel; sname = "John", "Doe" and lname = undefined.
Code: function run_func(func,vars){ func_ready = func(vars);
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 want to be able to run functions in a certain order from an array. The code below is a non-fat version of what I want to accomplish. The problem appears when the function(scream_name) runs. Flash makes the passed variables into one variabel; sname
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]...........
info2 is a function for a button which contains other functions which need to be performed before the button(infomc) becomes invisible. At the moment, it becomes invisible first before any of the functions on info2 begin.
I have a chicken walking on the screen. The legs are separate movieclips nested. After a while I had the chicken walking rightwards, with hittest(there must be a better way) at the end of the stage he turned to the left and then again to the right after hitting the left barrier. I also got his right leg going up and down for a smoother walk. I did this with Tweener. But then the problems started. I didn't get the left leg also to move up and down.
The chicken got more and more crazy. And now he starts walking backwarsds instead of to the right, as I intended to, after publishing. Who has a better idea of letting this chicken walk or a good hint for functions to be executed when I want? Tweener is good, but maybe not for this? The chicken doesn't have to respond to a mouse action (maybe later), this is the code, for which the walking to the left apparently seems to be executed first....
Imagine I have Class A that is listening to an Event on Class B. This listener will call Method X in the Class A. Inside Method X, "this" refers to the Instance of Class B, I'm not in the context of Class A. Isn't this a bit awkward, or am I getting everything wrong? Is there a way to make the listener call my method in the context of A?
I currently have a class that has a method that creates new duplicates of a clip on the screen, changes some of their properties (such as color, and text display), and then arranges them in a straight column.Inside that method, I have some clipEvent Statements for each button.
I have a gallery set up with three primary images. Clicking a primary image brings up it's specific subset of alternate views for the product.
I've managed to get the loading and placement down as I need it, but the images are not loading in the correct order. I've tried several solutions, the current one is that an array of each Sub Image is processed in order. It looks kinda of sloppy but image 1 loads, and when image 1 is complete, image 2 loads. After each image loads, it is put into another array. This array is used to resize and place the files. However when I do so, instead of the placement order being
item[0] item[1] item[2] item[3] item[4]
it keeps ending up like this:
item[4] item[2] item[1] item[3] item[0]
Here is the relevant code. When the following function starts with sArray, the items are confirmed to be in order.
Code: function loadSubs(e:MouseEvent):void//LOAD SUBD { clearGallery();
I have an issue with my videoplayer i can't seem to fix. When the playVideo functions is called I need to pause the music player.I tried some possibilities but flash keeps giving me an error.what I need to add to pause the music player when the video player starts and let the music continue when the video player closes ?
var my_songs:XMLList; var my_total:Number; var my_sound:Sound;[code]....
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 started making my first complex game and ran into a problem that made me just stop everything I was doing and I have laid the project to rest until I can find out how to fix it.The problem is simple. I have a timer in a public class. The timer is private, but the function to start the timer is public. Only one class calls it. But as soon as the program starts, the timer function executes.Now that aside, why are some public functions being called at the time of the program being executed? The class that executes the function isn't even called until later/instantiated.
I have some code that looks like this: ActionScript Code: level_btn.x = 50 + (i - 1) % 10 * 50; It sets the x location of my level button. But this is in a for loop (that's what the 'i' is for.) I run it and everything works perfectly, as it should, not a single problem. Then I press the auto format button in the flash actionscript editor. (It's the button that adds all of the ; to the end of each line and other stuff)
Well that changes my code to this: ActionScript Code: level_btn.x = 50 + i - 1 % 10 * 50; thinking it's done me a favour but it hasn't. It's got rid of the brackets so it won't do the maths functions in the correct order. I've tried adding more brackets in places and other stuff but I just don't know how to fix it. It's annoying because every time I press the auto format button I have to add the brackets in again.
in my application, I did some trace statements of a file For example if(oldFile.parent.toString()!=file.parent.toString()) There are some other file print statements , and it seems to encounter this error stated below. But the error does not appear every time. For example i ran my application for 20 times, it will encounter this error once. Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful. at Error$/throwError() at flash.filesystem::File/resolveComponents() at flash.filesystem::File/get parent()
The code below adds all the childrens of specific movie clip to the array called arrayBox. The next loop SHOULD loop through all the items inside arrayBox and check if any of those items (those items are all movie clips) is colliding with movie clip which isn't in array called avatar. If so, it should pop up the output and change some variable, but the point is that something with second loop is wrong...
I have some code that is connecting to a radio stream and it playing the music. That much works... I also have a little dropdown box which lets the user switch the stream... Whenever I try to switch the stream, I'm getting this error...
Error: Error #2037: Functions called in incorrect sequence, or earlier call was unsuccessful.at flash.media::Sound/flash.media:Sound::_load().
Code: private function changeStation():void { sound.close();
I have tried to modify that block of code, but I can't seem to get anything to work...
1. A navigation menu that, when a button is clicked, will scroll the site quickly to a specific Y position using swfaddress.
2. The entire site is controlled by a flash scroll bar, which will be scrolling a single movieclip.
2A. The movieclip will load content corresponding to the navigation categories, all which is organized into zipped files (using this to extract the contents of each section, example: about.zip for the about section of the site)
2B. The movieclip will load multiple zipped files one by one that correspond to the navigation, in order, making the site appear to be very tall.
What we are in need of is understanding how to load multiple zipped files into a movie clip, in a specific order, and having them scroll between one another through the navigation. The separate navigation categories can be in movieclips instead of zipped files if that is easier.URL...
We are trying to build a site with these features:
Our site will be built in Actionscript 3.
1. A navigation menu that, when a button is clicked, will scroll the site quickly to a specific Y position using swfaddress.
2. The entire site is controlled by a flash scroll bar, which will be scrolling a single movieclip.
2A. The movieclip will load content corresponding to the navigation categories, all which is organized into zipped files (using this to extract the contents of each section, example: about.zip for the about section of the site)
2B. The movieclip will load multiple zipped files one by one that correspond to the navigation, in order, making the site appear to be very tall.
**What we are in need of is understanding how to load multiple zipped files into a movie clip, in a specific order, and having them scroll between one another through the navigation. The separate navigation categories can be in movieclips instead of zipped files if that is easier.
In my case, some user interaction produces new values for the bindable variables "someDataProvider", and "someSelectedItem". However, when flex renders the DropDownList, the control's selected value is empty.
The reason for this is that the DropDownList's "selectedItem" property gets bound before the "dataProvider" property. The "dataProvider" needs to be bound first for "selectedItem" to be valid, this is because the new "selectedItem" points into the new "dataProvider".
what is the best practice for updating bindable properties in a specific order? I've come up with a few ways (e.g. using a valueCommit handler), but I wanted to see what the community had to say.
I have 35 movie clips named mcMyObject1, mcMyObject2, etc. to mcMyObject35Each time the playhead enters the frame this code sits on, I want all of these 35 movie clips to be placed on the stage in random orderI want each one of these 35 movie clips to land on one of these X coordinates: 57, 187, 317, 447, 577, 707, 837 and on one of these Y coordinates: 53, 183, 131, 443, 573. (It's a 7 x 5 grid)Movie size is 1024 x 768Here's my code, which doesn't work:
stop(); var myXArray=[57, 187, 317, 447, 577, 707, 837]; //cordordinates for x var myYArray=[53, 183, 313, 443, 573, 573, 573]; //cordordinates for y
I'm creating a Flash file which pulls in external SWFs onto a container. The main SWF which has the container clip is called Main.swf then we have external swf's.
So basically, we have Main.swf, English.swf, French.swf, More.swf
More.swf has a load of buttons on it (contact.swf, about,swf etc etc)
To make things neater, I wanted to put all of my button code in the Main.swf, and I've got it sorted so that English.swf, French.swf and More.swf load correctly into holder_MC which is on Main.swf
Now, to get the buttons working, I can either have the code situated in More.swf (in which case, can I change the contents of holder_MC which is located in Main.swf from within More.swf? If so, how?)
Or, I can have an event listener to say that when Main.swf is loaded, create these functions to link to contact.swf, about,swf etc etc)
Road - extends MovieClip Car - extends Road Controller - extends Car
And I want to incorporate some common Mathematical functions in them all to make them faster e.g.(replacing Math classes with some speedy bitwise versions).
What is the best way to incorporate these functions into all of them without writing the functions in the classes or extending from class of the functions. Is importing the class into each the fastest way or is their a better way?
Is there a way I can find out all the classes that are related specifically to the iphone in CS5? (ie Accelerometer, Gestures...ec)
What I want to do specifically is try to access the camera and then if there is none (say it is an old ipod touch) then go to a photos/camera roll folder and show those. Apparently in the help files, in the Air 2.5 runtime there is a "browseForImage" function that allows you to go to said cameraRoll but it will not compile if I publish under the iphone OS option (does not have specific stuff I am importing from an example flash.media.MediaType, flash.events.MediaEvent, flash.media.MediaPromise). Upon looking up the errors, there is no mention whether it is for a specific device.
The code I'm building creates two MovieClips on the stage, in one it instantiates several text boxes and in the other some buttons.
What I can't do is access data from the text boxes (e.g. textField.text) for use in the functions called by the eventListeners attached the buttons. I had the system all working nicely before I placed the text boxes and the buttons on separate movie clips.but this structure makes it much tidier to refresh the text I'm using.The button functions are fine with variables created prior to the building of the text boxes.
Am I failing to address the text boxes correctly (because they're on another movie clip) or is there a stage / movie clip property I need to set so they can see each other ... or is this something else altogether?Could it be that the buttons are created before the text boxes?
I have a component called a TableDataViewer that contains the following pieces of data and their associated set functions:[code]This component is nested in another component as follows:[code]Looking at the trace in the logs, the call to set table is coming before the call to set dataSetLoader. Which is a real shame because set table() needs dataSetLoader to already be set in order to call its load() function.So my question is, is there a way to enforce an order on the calls to the set functions when declaring a component?
I want to load an external swf called 'signs.swf' into an empty mc called 'signholder'.
var loadit2 = new Loader(); loadit2.load(new URLRequest("signs.swf")); signholder.addChild(loadit2);
Everything works. Cool. But, I now want to target something within the signs.swf. How do I do it though? What is the path? Do I have to give the child of signholder an instance name? Everything I try fails.
If I wanted the root timeline of the external swf to gotoAndPlay(2) for example,...would i say...
signholder.loadit2.gotoAndPlay(2) ??? var wow:MovieClip = loadit2.content as MovieClip; wow.gotoAndPlay(2) ????