# Problem with actionscripted gallery and arrays - help!

**URL:** <https://forum.kirupa.com/t/problem-with-actionscripted-gallery-and-arrays-help/224175>\
**Category:** Uncategorized\
**Created:** [April 29, 2007, 4:27pm UTC](https://forum.kirupa.com/t/problem-with-actionscripted-gallery-and-arrays-help/224175 "2007-04-29T16:27:29Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![krghettojuice](https://avatars.discourse-cdn.com/v4/letter/k/eb8c5e/32.png) [@krghettojuice](https://forum.kirupa.com/u/krghettojuice)\
**Post date:** [April 29, 2007, 4:27pm UTC](https://forum.kirupa.com/t/problem-with-actionscripted-gallery-and-arrays-help/224175/1 "2007-04-29T16:27:29Z")

</div>

ok guys, you’re my unique chance.  
i’ve got this scripted gallery.

Actionscript:

// nome foto - tutte le foto devono essere 308x205 px  
var picnames:Array = [  
“1”,  
“2”,  
“3”,  
“4”  
];

// constants  
var PICPATH:String = “gallery/clubnight/”;// folder with jpgs  
var NPICS:Number = picnames.length;// number of pictures to load  
var PICX:Number = 0; // x loc of big picture  
var PICY:Number = 0; // y loc  
var THUMBHOLDERX:Number = 0; // x location of thumbnail holder movieclip  
var THUMBHOLDERY:Number = 248; // y location  
var THUMBW:Number = 74; // width of each thumbnail  
var THUMBH:Number = 50; // height  
var MARGIN:Number = 5; // margin between thumbnails  
var TOTALBYTES:Number = 212000; // approx sum of bytes in all jpgs (x 2)  
var MAXPIXELS:Number = 5; // max number of pixels to move slider per frame

// mask definition; mask is assumed to cover some part of the thumbnail slider (here the numbers  
// were chosen so that there are margins between the mask and the right and left edges of the movie  
// (which is 420 x 290), and enough space above and below the thumbs to show them when they ‘grow’  
// on mouseover  
var MASKX:Number = 0;// start x location of mask  
var MASKW:Number = 308;// mask width  
var MASKY:Number = 240;// start y location of mask  
var MASKH:Number = 70;// mask height

var totalloaded:Number = 0; // running tally of bytes loaded from all pics

// index into pictures array, used for loading  
var ipic:Number;

// set up loader, an instance of MovieClipLoader  
var loader:MovieClipLoader = new MovieClipLoader();

// use the main timeline to listen to and respond to loader’s broadcast events  
loader.addListener(this);

/\*\*\*\*\*\*\*\*\* DEFINE FUNCTIONS, INCLUDING INIT FOR MOVIE SETUP \*\*\*\*\*\*\*\*\*\*/  
// thumbnail rollover handler

function grow() {  
this.onEnterFrame = function() {  
if (this.\_width \< THUMBW \* 1.1) {  
this.\_x -= this.\_width \* .025;  
this.\_y -= this.\_height \* .025;  
this.\_width \*= 1.05;  
this.\_height \*= 1.05;  
} else delete this.onEnterFrame;  
};  
}

// thumbnail rollout handler

function shrink() {  
this.onEnterFrame = function() {  
if (this.\_width \> THUMBW) {  
this.\_width /= 1.05;  
this.\_height /= 1.05;  
this.\_x += this.\_width \* .025;  
this.\_y += this.\_height \* .025;  
} else delete this.onEnterFrame;  
};  
}

// function to move thumbnail slider (“this” = thumbs\_mc)

function sliderControl() {  
var w:Number = this.\_width/2;  
var hw:Number = mask\_mc.\_width/2;  
var npixels:Number;  
// only do when mouse over slider mask  
if (\_ymouse \> mask\_mc.\_y && \_ymouse \< mask\_mc.\_y + mask\_mc.\_height) {  
// mouse over left half of slider:  
if (\_xmouse \> mask\_mc.\_x && \_xmouse \< mask\_mc.\_x + hw) {  
npixels = (hw - \_xmouse) / hw \* MAXPIXELS;  
this.\_x += npixels;  
if (this.\_x \>= 0) this.\_x = this.\_x - w;  
// mouse over right half of slider:  
} else if (\_xmouse \> mask\_mc.\_x + hw && \_xmouse \< mask\_mc.\_x + mask\_mc.\_width) {  
npixels = (\_xmouse - hw) / hw \* MAXPIXELS;  
this.\_x -= npixels;  
if (this.\_x \<= -w) this.\_x = this.\_x + w;  
}  
}  
}

// thumbnail click (onrelease) handler

function openPic() {  
pic\_mc.loadMovie(PICPATH + picnames[this.i] + “.jpg”);  
}

// assign event handlers (called when all jpgs are loaded)

function setupHandlers() {  
pct\_txt.removeTextField();// don’t need loading indicator any more  
thumbs\_mc.onEnterFrame = sliderControl;  
for (var i:Number = 0; i \< NPICS\*2; i++) {  
thumbs\_mc[“mc”+i].onRollOver = grow;  
thumbs\_mc[“mc”+i].onRollOut = shrink;  
thumbs\_mc[“mc”+i].onRelease = openPic;  
}  
}

// listener function for broadcast ‘done’ message (for each pic)  
// onLoadInit gets executed when the movieclip has been loaded into \_mc AND  
// its width and height data are available.  
// (\_mc = the movieclip being loaded into)  
// this routine sets the size and position of each thumbnail clip as its jpg  
// is loaded and starts the next one loading. When all have been loaded,  
// a random picture is loaded into pic\_mc and setupHandlers is called to  
// assign handlers to each thumbnail movieclip

function onLoadInit(\_mc:MovieClip) {  
// this gets done when the jpg is completely loaded:  
\_mc.\_width = THUMBW;  
\_mc.\_height = THUMBH;  
\_mc.\_alpha = 99;// for image clarity  
// give the movieclip a property to remind it who it is  
// (used by openPic to know which big picture to open)  
\_mc.i = (ipic \>= NPICS ? ipic-NPICS : ipic);

```
   // add picture size to totalloaded variable
   totalloaded += loader.getProgress(_mc).bytesTotal;

   // now load the next one (if there are more) or set up handlers if done
   ipic++;
   if (ipic == NPICS * 2) {
          // start with a random photo displayed when all thumbs loaded
          pic_mc.loadMovie(PICPATH + picnames[Math.floor(Math.random()*NPICS)] + ".jpg");
          setupHandlers();
       } else if (ipic &gt;= NPICS) {
          // load jpg into duplicate thumbnail (will already be cached)
          loader.loadClip(PICPATH + picnames[ipic-NPICS] + ".jpg", thumbs_mc["mc"+ipic]);
       } else {
          // load jpg into thumbnail
          loader.loadClip(PICPATH + picnames[ipic] + ".jpg", thumbs_mc["mc"+ipic]);
   }

```

}

// listener function to handle broadcast progress messages  
// make pct\_txt show cumulative loading progress

function onLoadProgress(\_mc:MovieClip, loaded:Number) {  
var loadedsofar:Number = totalloaded + loaded;  
pct\_txt.text = Math.floor(loadedsofar / TOTALBYTES \* 100) + “%”;  
}

function init() {  
// create holder for pictures  
createEmptyMovieClip(“pic\_mc”, 1);  
pic\_mc.\_x = PICX;  
pic\_mc.\_y = PICY;

```
   // create (and draw) holder for thumbnails
   createEmptyMovieClip("thumbs_mc", 2);
   thumbs_mc.beginFill(0xffffff, 10);// black
   thumbs_mc.moveTo(0, 0);
      thumbs_mc.lineTo(2 * (MARGIN + THUMBW) * NPICS, 0);
   thumbs_mc.lineTo(2 * (MARGIN + THUMBW) * NPICS, THUMBH);
   thumbs_mc.lineTo(0, THUMBH);
   thumbs_mc.endFill();
   // drawing the thumb holder at 0, 0 and then moving it makes its reg point = upper left
   thumbs_mc._x = THUMBHOLDERX;
   thumbs_mc._y = THUMBHOLDERY;

   // create, draw and enable mask over thumbs (could use different variables to define mask
   // if desired)
   createEmptyMovieClip("mask_mc", 3);
   mask_mc.beginFill(0xffffff, 100);
   mask_mc.moveTo(0, 0);
   mask_mc.lineTo(MASKW, 0);
   mask_mc.lineTo(MASKW, MASKH);
   mask_mc.lineTo(0, MASKH);
   mask_mc.endFill();
   mask_mc._x = MASKX;
   mask_mc._y = MASKY;
   thumbs_mc.setMask(mask_mc);

   // create loading textfield indicator
   createTextField("pct_txt",4,10,10,40,100);
   var tf:TextFormat = new TextFormat();
   tf.align = "left";
   tf.size = 11;
   tf.font = "Arial";
   tf.color = 0x999999;
   pct_txt.setNewTextFormat(tf);

   // make empty movieclips in thumbs_mc for each pic to go into
   // make double the number so the slider can move continuously and show content
   for (var i:Number = 0; i &lt; NPICS * 2; i++) {
          var mc:MovieClip = thumbs_mc.createEmptyMovieClip("mc"+i, i+1);
          mc._x = i*(MARGIN + THUMBW);
          mc._y = 0;
   }

   // set the pointer to the first jpg in the array picnames
   ipic = 0;
   // start loading jpgs (ipic is initialized to 0)
   loader.loadClip(PICPATH + picnames[ipic] + ".jpg", thumbs_mc["mc"+ipic]);

```

}

init();

it works fine. it has the thumbs scrolling automatically. but i need they to scroll on button press, maybe with some easing, too.  
i’ve searched for something could help me, but nothing.  
i need the code to give to the buttons i create…  
thank you to ya all,  
g\_
