Actionscript 3 :: What's The Difference Between Looping Through An Array And Using Array.every()
Jan 31, 2011What's the difference between looping through an array or using array.every() to assign a callback to each array element?
View 3 RepliesWhat's the difference between looping through an array or using array.every() to assign a callback to each array element?
View 3 Repliesflash knows this is a 2d array, correct? Code: var arr:Array= new Array([1,0,6],[4,3,7]); i see it treats it as one. My question, is there any difference to declare each array as such, before pushing them to the main array? trace(arr[0]);// i know it traces the arrays contents, but if it could, would it tell me this is data type Array , exactly the same as if i had declared it?
View 2 RepliesWhile making my choice b/n Array and Arraycollection I get confused why whould I use one and why not another. I have read the theory in langref but apart from that is there some general advantages/disadvantages of one over the another that you have learned from your experience.
View 4 RepliesWhat the difference between an object and an array is?
View 14 RepliesDifference between the Array and ArrayCollection in Flex?
View 2 RepliesPremesis:I am using actionscript with two arraycollection containing object with value to be matched...Let's assume I have two list of elements A and B (no duplicate values) and I need to compare them and remove all the elements present in both, so at the end I should have
in A all the elements that are in A but not in B
in B all the elements that are in B but not in A
now I do something like that:
for (var i:int = 0 ; i < a.length ;)
{
var isFound:Boolean = false;[code].....
I cycle both the array and if I found a match I remove the items from both of the array (and don't increase the loop value so the for cycle progress in a correct way).I was wondering if (and i'm sure there is) there is a better (and less CPU consuming) way to do it...
I'm making an activity that involves measuring the depth of a fictitious river at various points. I have an array containing those depths at the various points and a slider for traversing through the depths and outputting to a textfield.
As the user moves the slider up and down, they can see the depth of the river at that point and plot it onto a graph. What I would like to do is be able to figure out the depths inbetween the explicitly defined values.
here is the code, it's pretty simple:
[Code].....
How would I go about figuring out the values inbetween?
Why doesn't AS2 interpret these variable as it steps through? Everything works if I write it out longhand and do not use a loop, but if I try to condense things by using an array, variables such as _root.myTargets[i]._x are not interpreted properly.
Code:
myTargets = new Array('shoot','shoot2');
for (var i:Number=0; i<myTargets.length; i++) {
if ((_root._xmouse > (_root.myTargets[i]._x - 30)) and
(_root._xmouse < (_root.myTargets[i]._x + 50)) and
[Code]....
I have an XML document that loading into Flash. I have a dynamic text box on the stage that I am writing the XML to. My problem is, I have 6 group names that I am pulling from my XML file and I want to write each one of them to the text box and add a line break to the end. This is my code:
var group= this.firstChild.firstChild.childNodes;
for (var i=2; i<group.length; i++){
divBox['divInfoLinks'].htmlText =
[Code].....
When I trace [i] it lists all 6 names, however my text box only shows the last name in the array.
I am attempting to build an array of arrays that will with the following syntax. My output is definitely not what I am trying to achieve. Here is my code:
[Code]...
My output is coming out as 6 references to "Set3". There is obviously something wrong with my for loops, but I can't figure it out.
So my question is:"how do you stop looping?"
I tried implementing a Counter and every time flash goes to another variable in array, i would increment that Counter and i would see if Counter == Array.length.[code]...
I am trying to download 3 files from a website by defining an array and looping through the urlloader commands I am using urlloader so that the user doesn't have to confirm each download, my code is:
[Code]...
I have two arrays. One is used for button names and the other is used for the links for the buttons. The buttons are generated dynamically with attachMovie and the names are also modified via AS. My problem comes in at looping through the links array and applying them to the buttons.[code]
View 3 RepliesHow can i stop this array from looping. I just want the images to fade in once then stop after theyre done.
import mx.transitions.Tween;
import mx.transitions.easing.*;
var mc_arr = [num_mc1,num_mc2,num_mc3];
var counter = 0;
[code]....
I'm looping through an array and checking the elements to see if an element contains this text. the array is as following
[Code]...
i've narrowed down the problem to being the variable 'current'. If I replace the dynamic part to the string '_A_1' it works. That is why I entered the trace just above to see what its is checking against. I can see that they are both the same, but flash thinks otherwise.
I've got no idea how to phrase this, but is there a simple/efficient way to do something like this that doesn't feel hacky:?
[Code]...
I realize I can just trade the index number in the brackets for a function that returns the corrected index (after it works through the end of beginning of the loop as needed), but what's the best or most efficient way to do this? The damn 0 as the first position in an array really confuses me sometimes when trying to work these things out.
I am trying to loop my function through my array values continuously. I'm only able to get it to loop through one array value as intended. The long term goal here is the create a grid of movie clips that continuously change colors in random order (from preselected values). I'm new to actionscript and I have been racking my brain trying to figure this out. I'm unsure of how to send the function to all items in the array, and loop them all continuously, yet with random color patterns for each.
[Code]...
I would like to repeat a block of code within a function in Flex, which is the best way to do this, I would like to do this without making a new function?
The code currently is:
Code:
for each (var rawPhoto:Object in event.data)
{
logger.info("Photos.getPhotos: Photo[{0}] downloaded", rawPhoto.pid);
[Code].....
Hey guys, thanks in advance for any help, I'd be stuck all the time without these forums.
I have a custom class(Ball) and a .FLA. Ignore the custom class, it works fine, having a problem within my main FLA.
I'm getting repeated "Error #1009: Cannot access a property or method of a null object reference. at Environment_fla::MainTimeline/hitTest()".
I understand that this error means I'm asking it to reference something that's no longer there. I just can't figure out why I'm getting it, and how better to hitTest many objects in an array.
My game involves creating a bunch of balls that will fall into buckets. I need to keep track of how many touched the buckets, how many fell off the screen, and remove each accordingly.
Thanks again, very much appreciated.
Here is the code from my main FLA
[as]var ballTimer:Timer = new Timer(200);
var changeTimer:Timer = new Timer(50000);
ballTimer.addEventListener(TimerEvent.TIMER, throwBall, false, 0, true);
ballTimer.start();
changeTimer.addEventListener(TimerEvent.TIMER, changeColor);
changeTimer.start();
//Environment variables
var gravity:int = 1.5;
var friction:Number = .85;
var color:int = 2;
//score variables
var YellowScore:int = 0;
var BlackScore:int = 0;
var tBall:Ball = new Ball(new Point(mouseX, mouseY), new Point(Math.random() + Math.random()*5 + Math.random()*8), gravity, friction);
var ballArray:Array = new Array();
function throwBall(e:TimerEvent):void {
var tBall:Ball = new Ball(new Point(mouseX, mouseY), new Point(Math.random() + Math.random()*5 + Math.random()*8), gravity, friction);
tBall.addEventListener(Event.ENTER_FRAME, hitTest);
tBall.gotoAndStop(color);
addChild(tBall);
ballArray.push(tBall);
}
function changeColor(e:TimerEvent):void {
if (color == 1) {
color = 2;
return;
}
if (color == 2) {
color = 1;
}
}
function hitTest(e:Event) {
trace(ballArray.length);
for (var i = 0; i < ballArray.length - 1 ; i++) {
if ((ballArray[i].hitTestObject(YellowBucket1) && ballArray[i].currentFrame == 2)) {
YellowScore += 1; //trace(YellowScore); trace("Space");
ballArray[i].parent.removeChild(ballArray[i]);
ballArray.shift();
break;
}
else if ((ballArray[i].hitTestObject(YellowBucket1) && ballArray[i].currentFrame == 1)) {
YellowScore -= 1;
}
else if ((ballArray[i].hitTestObject(BlackBucket1) && ballArray[i].currentFrame == 2)) {
BlackScore -= 1;
}
else if ((ballArray[i].hitTestObject(BlackBucket1) && ballArray[i].currentFrame == 1)) {
BlackScore += 1; trace("BlackScore");
}
else if (ballArray[i].y > stage.stageHeight || ballArray[i].x > stage.stageWidth) {
trace("cleanUp");
ballArray[i].parent.removeChild(ballArray[i]);
ballArray.shift();
}
}
updateScore();
}
function updateScore() {
BlackBucket_txt.text = String(BlackScore);
YellowBucket_txt.text = String(YellowScore);
}
[/as]
Here is my xml structure:
<question>
<q1> Who coined the term "Clinical Psychology"? </q1>
<answer> Lightner Witmer </answer>
<option1> Stanley Hall </option1>
<option2> Lightner Witmer </option2>
<option3> Henry P. David </option3>
</question>
I can loop through fine and pick out the questions and answers, then throw them into separate arrays. The problem I'm having is looping and pulling the options into a multidimensional array like such:
var one:Array = new Array( 3 );
one[0] = ["Stanley Hall", "Lightner Witmer", "Henry P. David"];
one[1] = ["Stanley Hall", "Lightner Witmer", "Henry P. David"];
one[2] = ["Stanley Hall", "Lightner Witmer", "Henry P. David"];
this is part of an XML file I retrieve using AS3 E4X:
<links>
<link>
<label>Versions</label>
<href>http://mylink1</href>
[Code].....
I want to retrieve the values of labels, so I write:
document.links.link.label.text();
This returns VersionsConfigurations. I need this as Array ([Versions, Configurations]) but I would like not to use a loop. Is there any other way?
I'm trying to make a next button loop through frame labels on the timeline. Here is my current code and it doesn't seem to be returning anything..
ActionScript Code:
var a:Array = ["a", "b", "c", "d"];
var len:Number = a.length;
[code].....
I am preloading multiple mp3's dynamically using a looping array and it is working very well. However, I would like to display the percetage of the last mp3 loaded by the array.Does anyone know how I would modify the code to do this:
Code:
var my_array:Array = new Array();
my_array[0] = "Audio/audio_1.mp3";
[code].....
I'm working off the XML photo gallery tute found here: xml_flash_photogallery.htm. My wish is to have the array loop forward and backwards, so by clicking next you will eventually get back to the first value, and if you keep clicking previous you will eventually see the last value in the array.
I found some Scotty code (first line in the nextImage function) that enabled this function with the next button, but I can't figure out how to use it for the previous button.Here's the code:
previous_btn.onRelease = function() {
prevImage();
};[code]....
I want to do a for loop that grabs values from different variables. This function works nicely without the eval() statement (using the commented line below it) but not with it.
function saveData ()
{
saveUrl = "savedata.php?";
for (count=1; count<=numberOfVariables; count++)
[Code].....
On the PHP site it was advised to do for loops in a certain way that I have not seen on any recommendations for AS3. I think I found about a 10 times speed increase and I thought I better check that I was not missing something (?) before going through my code and changing it. Very simple and fairly self explanatory (in the faster one the array.length is not calculated every time I think):
Code:
import flash.utils.getTimer;
var time:Number;
var myarray:Array = new Array();
myarray.length=2000000;
time=getTimer();
[Code] .....
Actually, I'm HTML-coder, so I've recently confronted by difficulties with Flash. Its making the text banner. Flash needs to get variables from the following 'vars.htm' file:
myVar01=the_first_textDDDsecond_textDDDand_surely_ the_third_text&myVar02=DDD&myVar03=3
Where 'myVar01' contains the text, 'myVar02' is the text delimiter's look and 'myVar03' is the showing delay of texts. In truth, I've never seen the ActionScript before.
So, what I've done regarding that all:
ActionScript Code:
var data_lv:LoadVars = new LoadVars ();
data_lv.load("vars.htm");
data_lv.onLoad = function() {
[Code] .....
The problem is, the 'trace' shows me correct array looping but in Flash I see there's only one passage through the 'texts' array. But I need the infinite looping in Flash movie, instead of one.
ActionScript Code:
for (var i:uint = 1; i<=10; i++) {
var ball_array:Array = new Array();
var newBall:ball = new ball();
[Code].....
I've attached a zip with a few custom classes and a .FLA. Ignore the custom classes. I'm getting repeated
"Error #1009: Cannot access a property or method of a null object reference. at Environment_fla::MainTimeline/hitTest()".
I understand that this error means I'm asking it to reference something that's no longer there. How better to hitTest many objects in an array. My game involves creating a bunch of balls that will fall into buckets. I need to keep track of how many touched the buckets, how many fell off the screen, and remove each accordingly.
Here is the code from my main FLA
ActionScript Code:
var ballTimer:Timer = new Timer(200);
var changeTimer:Timer = new Timer(50000);
ballTimer.addEventListener(TimerEvent.TIMER, throwBall, false, 0, true);
ballTimer.start();
changeTimer.addEventListener(TimerEvent.TIMER, changeColor);
changeTimer.start();
[Code] .....
i'm looping thru xml nodes and using this to attach clips to an empty mc:Code:item = _root.mainHolder.links.linkHolder.attachMovie("linkClip", "linkClip" + i, i);my question is how can I reference the previously attached clip so I can determine the _y property of the current item(clip).I'd like to do something like this.item._y= previously attached clip._y-previously attached clip.height
View 10 Replies