ActionScript 2.0 :: Dynamically Creating Functions Inside A Loop?
Dec 8, 2011
After loading the movieclips and text boxes dynamically I now need to get the movieclips to perform a unique function when they are pressed, for testing purposes I am using the getURL funciton and linking to the boxNo. This is just so I can see what is going on!At the moment they are all linking to the boxNo that is pulled from the last run of the loop.
for (var i = 0; i < loc.length; i++)
{
var boxNo = loc[i].location_ID;;
I am trying to create functions using a for loop for my buttons' over and out listeners.I would like to stick to a naming convention but it does not seem to work. I am trying to create 10 buttons with function names like btnOver1, btnOver2, etc...
Code: for(var i:int=0;i<=9;i++){ function btnOver[i](e:MouseEvent):void{
I've created a basic function that sets a movieclip to a certain state depending on which mouse cursor is set (determined by a variable called txt_cursor). I can hard code this to work great for the one single movie clip but potentially have to do this for 624 other movie clips so obviously want to create a for loop to reproduce this.
how would i go about dynamically making a function... im making a Tile Based World level editor and when the user is done editing a level, then they hit a button and a couple of for loops runs through all the tiles checking the x,y and tile type. then i want thisinformation to be parameters within sub functions within the main function. so the as would look something like this
I've been trolling through the forum and I've seen similar instances however I can't seem to get my head around how to make scripting work;What I'm trying to make is similar to an interface where users can input data into a list (myArray) should they need to remove information they can click the corresponding button to remove it, the current code is repositioning a button that's already on the field as opposed to creating a duplicate from the library
here's the full code: stop(); //hidden hyperlink to AR
I'm trying to create multiple Functions inside a Loop.[code]I essentially want to make 4 Functions called closeButOut1, closeButOut2, closeButOut3 and closeButOut4.This is the error message I get:
-1084: Synax error: expecting identifier before this.
-1084: Syntax error: expecting leftparen before rightbracket.
I've got clips being attached using attachMovie (clips are in the library with linkage id's).
inside those clips are two functions. I'm trying to access those functions after I attach the clips, but not getting anywhere.
I assume that the methods of my attached clip (the functions) aren't available immediately, but rather after the clip actually 'loads' to the stage they are.
What is the best way to create functions dynamically and store them inside an Array? Obviously the bellow is wrong since the array will always trace the last value of the variable "v" (5)
ActionScript Code: var funcContainer:Array=new Array(); for(var v:uint=0;v<5;v++){
I have two MCs classesThe first one is put on the stage. Then, from the first MC class (inside the class), i put another MC. So i created a MC inside the first MC.I can see both MC when i test my movie.I put the second MC when the mouse cursor is over the first MC, and i remove it when the mouse cursor is out the first MC.My problem is that when the mouse cursor is over the second MC, the movie behaves like the mouse cursor goes out of the first MC, so the second MC is removed, so i can't click on it.
create functions using a loop, like so with just the !HERE! replaced with the method of creating it with the 'i' variable. Both the function name in the event listener and the function's setting need to make use of the i variable
Code: for (var i:int = 0; i <= 5; i++){ this["question"+i].addEventListener(MouseEvent.CLICK, !HERE! );
i am loading several images from an XML path into a flash movie and i want to dynamically create image loader variables for them. Here is my code so far:
Code: var xmlData:XMLList; var myXML:XML; var xmlLoader:URLLoader = new URLLoader();
[Code]....
method and this doesn't work for me either, i'm guessing thats because it is in the AS2 forum.
I am trying to load a group of thumbnails using Moviecliploader within a class function. Only the last image is loaded onto the stage. can anyone point me in the right direction, I have been wrestling with this for a couple of days. I have tried it with a single loader... loaders created in the loop, stored in an array... and loaders as a child of the dynamically created image+x clip (ie. _level0.Gallery.image1.image & _level0.Gallery.image1.mcLoader)
I am reading in collection objects from an XML file. Each collection has an img field that stores a URL to the collection image. So I am trying to load the images of each collection, storing each image in a MovieClip, and add these MovieClips to the stage. However, my problem is that after adding a MovieClip (with the collection image) to the stage, when a new MovieClip is created in my 'for each' loop it overrites the previous MovieClip. So the images I am adding to the stage are being replaced by the following collection's image on each loop iteration. What can I do to avoid this?
Here is my code...
var collXML:XML = IXml(assets.collections).xml; var collNodes:XMLList = collXML.children(); for each (var collInfo:XML in collNodes) {
I using a loop to dynamically create some movieclips and then position them using the ._height and .width values.
When they are created I use a Listener and LoadInit, to check that everything has loaded. I do this because I want to be able to access the ._height properties of the movieclip in order to place them next to each other and centre them vertically.
If I place the following 3 lines outside the function:
inBead._x = currentPosition; //gets the start position currentPosition = currentPosition+Number(mainLoader._width); //gets the position and adds the width of the movieclip
I'm currently creating an app which allows users to select blocks of text from a List and dynamically create a TextField on the stage.I'm calculating the height of the TextField and positioning the next TextField beneath.I'm also recording the total heights of the TextFields so that I know when the total height exceeds the available height, at which point I move the x position and reset to y position to zero.
When the next TextField will exceed the available height I want to split it into two, so I'm calculating the remaining height, making the TextField.height into the remaining height.when I try to get the position of the last visible line.If I have the TextFieldAutoSize as LEFT, then I can dynamically generate the heights of the TextFields.For the final TextField in the column I need to set TextFieldAutoSize to NONE so I can change the height of the TextField. i.e. I don't want it to autosize.However, bottomScrollV returns the total number of lines, not the last visible line.
I can create the required behaviour in a separate doc but when I copy the code into the loop it fails.Here is the code.
Code: public function buildTextFields() { 3 columns (I'm calling them TextBlocks) // so the first is 0;[code]....
Functions embedded inside other functions? In all my years of ActionScript programming, I've never seen this (this is part of legacy code written by someone else which I am adapting):
I have done this same thing in ActionScript 3, but am not familiar with ActionScript 2, which I am forced to use for this project. I am loading products into a SWF via XML and attempting to add a click event to each dynamically-created movieclip. Simply tracing the text from a node in XML will do for now. I'd like to assign a property called "desc" or "description" to each movieclip and have it trace that property's value when clicked. Here is the relevant portion of my code as it stands:
ActionScript Code: var iXML:XML = new XML(); iXML.ignoreWhite = true;
I am trying to create a gallery where each thumb is housed inside of it's own movie clip that will have more data, but it keeps failing because it won't let me refer to the newly created instance of the movie clip. Below is what I am trying to do.
var xml:XML; var xmlReq:URLRequest = new URLRequest("xml.xml"); var xmlLoader:URLLoader = new URLLoader();
I am trying to create a gallery where each thumb is housed inside of it's own movie clip that will have more data, but it keeps failing because it won't let me refer to the newly created instance of the movie clip. Below is what I am trying to do.
var xml:XML; var xmlReq:URLRequest = new URLRequest("xml.xml"); var xmlLoader:URLLoader = new URLLoader();
[Code]....
It dies every time on that last line. How do I refer to that vidThumbn instance so I can add the imageLoader? I don't know what I'm missing. It feels like it should work.
I'm trying to make a matching pairs game. First of all I'm making all the tiles, using a loop inside a loop. How do I get the ID of an item inside that loop? My code looks like follow:
Code: var matches:Array=new Array(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8); makeTiles(); function makeTiles() {
I am working on a page where three differnt buttons effect one movie clips properties, the one movie clip will go to its rollover state when any of the buttons are on rollover, hmm, that sounds about right] i have assigned functions within a loop and the rollovers, rollouts and instance in the loop have been defined for all but the movieClips dont go to the right place. the code i have used is this....
I am working on a page where three differnt buttons effect one movie clips properties, the one movie clip will go to its rollover state when any of the buttons are on rollover,i have assigned functions within a loop and the rollovers, rollouts and instance in the loop have been defined for all but the movieClips dont go to the right place....the code i have used is this....
Code: for (var i:Number = 1; i < 4; i++) { // attaching ALL rollovers to effect the interactive button this["invis"+i+"_btn"].onRollOver = this["chart"+i+"_btn"].onRollOver = this["inter"+i+"_mc"].onRollOver = function() {
[code].....
all the traces show up correct but not the gotoAndStop on the movieClip (inter+i+_mc_)'s.
This has served me well, but I've been designing a new sight and wanted to get more into Action Script to control functions to help improve both my programming and keep my file size down.
So I decided to create an instance of a block (rectangle shape as another movieclip) and have multiple layers. One which controls the actions of two other blocks. The upper most block would not be visable until I ran the cursor over it (increase its Alpha property from 0 to 100 one step at a time in a loop). This would reverse when the cursor ran off (reduce Alpha property from 100 [or less] back to 0 in a loop).
I've read and re-read every flash book I own on the subject and cannot understand why I can't control another instance of a different movieclip.
I have the following code, which should display some square clickable clips over a map. This is done by calling a function (shown below) with arguments. However, when I call this function, only the last box is shown... The clips are drawn on the same level (9000) but that should not be a problem as they wont overlay...functions calls....
I am writing some code that needs to be very efficient, yet flexible. This is in a class and when the class gets initialized a function is setup. I want this function to run straight through without doing any time-consuming things such as calling other functions or routines, or doing any if/else logic/branching. Now I know that you can setup a function at anytime during runtime such as:
Code: var myFunction:Function = function() {trace('HELLO!')}
But what I am trying to do is to try and append code to a function based on logic, yet I don't want the function to be deciding this logic when it is running as it will only need deciding when the function is created.... imagine if it were a string it would be something like myFunction+="do somethingelse;" which would be the same as having initially setup myFunction as such:
Code: var myFunction = function() {do something; do somethingelse;}
With this I seem to be having no luck Here's an example where I setup the most compact/efficient function at runtime depending on what I want the function to do. Now this was fairly simple because when we create the function there are only a few possible variations, but I need someway of doing a function+= as my real code has quite a few variations and it would be a nightmare have a zillion if/else branches. REMEMBER I do not want any logic/decisions in the function itself as it to be the most efficient the function must be as compact as possible and run straight-through.
Code: var dynamicFunction:Function; // // Setup the dynamic function & call it // In this example outputs "Hello Jim" & "Goodbye Jim" dynamicFunction = CrapSetupRoutine(true, true, "Jim");
[code]....
P.S. I knew the += would never work as this is a function and not a string. But at least if you think of the function as a string you'll get what I'm trying to do....