i'm a beginner at scripting and i'd love some help. i have a movie clip called "box" which i want to duplicate into 30 instances arranged in a 5x6 column. how do i do these (duplicate AND arrange)? please please please help. thanks!
Printable View
i'm a beginner at scripting and i'd love some help. i have a movie clip called "box" which i want to duplicate into 30 instances arranged in a 5x6 column. how do i do these (duplicate AND arrange)? please please please help. thanks!
Create 2 'for loops', one inside the other.
'i' for rows, 'x' for columns, 'z' will increment from 1 to 30:
code:
for (i=1;i<6;i++) {
for(x=1;x<7;x++){
z=z+1;
duplicateMovieClip (_root.box, "box"+z, z);
_root["box"+z]._x = i*50; // where 50 is the horizontal spacing you want
_root["box"+z]._y = x*50; // where 50 is the vertical spacing you want
}
}
Here's the method I was writing simultaneously as the above post. Essentially the same, except I'm putting some stuff in constants at the beginning, and I'm assuming the clip to duplicate is already in the correct position, and can be used to determine the grid size.
I should point out that I prefer to use attachMovie instead of duplicate clip, keeping the original clip in my library instead of on the stage.Code:// adjust numbers to your taste
NBR_COLUMNS = 5;
NBR_ROWS = 6;
var clipToDupe = _root.myClip;
COL_WIDTH = clipToDupe._width;
ROW_HEIGHT = clipToDupe._height;
LEFT_MARGIN = clipToDupe._x;
TOP_MARGIN = clipToDupe._y;
FIRST_LAYER = 10;
var n = 1;
for (var y = 0; y < NBR_ROWS; ++y)
{
for (var x = 0; x < NBR_COLS; ++x)
{
if (y == 0 && x == 0) {
// first tile is already attached
continue;
}
duplicateMovieClip(clipToDupe, "mc"+n, n+FIRST_LAYER);
var mc = _root["mc"+n];
mc._x = LEFT_MARGIN+x*COL_WIDTH;
mc._y = TOP_MARGIN+y*ROW_HEIGHT;
}
}
This way, I don't have to 'skip' the first tile, as I had to above. In order for this to work, the clip in the library needs to be assigned an export name, such as 'rootClip', which I use below:
- JimCode:// adjust numbers to your taste
NBR_COLUMNS = 5;
NBR_ROWS = 6;
COL_WIDTH = 100;
ROW_HEIGHT = 100;
LEFT_MARGIN = 50;
TOP_MARGIN = 50;
FIRST_LAYER = 10;
var n = 1;
for (var y = 0; y < NBR_ROWS; ++y)
{
for (var x = 0; x < NBR_COLS; ++x)
{
var mc = _root.attachMovie("rootClip", "mc"+n, n+FIRST_LAYER);
mc._x = LEFT_MARGIN+x*COL_WIDTH;
mc._y = TOP_MARGIN+y*ROW_HEIGHT;
}
}
thanks for the help. now i have a variable called "x" that is a random whole number between 1 and 30. if variable x matches the number for one of the boxes, the visitor is shown a msg. i have a feeling that this can be done with an if loop but i'm not sure of the details. can anyone help?
You didn't specify how you intend to assign numbers to the boxes, but yes, you can do that.
Code:
var n = 1;
for (n = 1; n <= NBR_ROWS*NBR_COLUMNS; ++n)
{
var mc = _root["mc"+n];
if (x == mc.number) {
trace("show message here");
break;
}
}
this is kinda what im looking for im looking for a random appearance of each of the movieclips
any ideas?
thanks
ds
am i missing something?
cant get it to work, have a circle in a mc that i want to place in a grid to it randomly forms one circle at a time but not in an ordered fashion.
the circle is set to be exported as the name circle
have change the code to chose this rather than the default rootClip
the code is on the first frame of the movie, not sure where to put it
but nothing happens
any clues?
i am using Flash MX is that helps, pref not to use 2004, am happy with MX for my use
thanks