Para que entiendan un poco mas, mi objetivo es simplemente un botón de "Empezar" en el fotograma 1, y que el puzzle comience en el 2. Gracias, les dejo el código.
Código ActionScript :
import flash.display.*; import flash.geom.*; import flash.filters.*; cimg=0; c = 4 ; f = 4; tipo = false; imagen = "imagen"; puzzle("imagen", 4, 4, false); function puzzle(imagen, f, c, lin) { for (hg=0; hg<4*tpz; hg++){pz[hg].removeMovieClip();} a=new Array(1,12,0,.35,2,12,1,.15,3,2,4,.2,5,4,6,.5,7,6,8,.5,10,12,2,.15,9,8,10,.4,11,12,10,.15); tpz = f*c; c>f ? j=20/c : j=20/f; bF = new BevelFilter(1,45,0xffffff,.5,0,.5,j,j,4,3,"inner",false); img = BitmapData.loadBitmap(imagen); w = img.width; h = img.height; m1 = w/(3*c); m2 = h/(3*f); if(!cimg){b = []}//solo en demo. texto="completo"; // solo en demo. // creando matriz delados congruentes entre piezas contiguas p = []; d = 0; for (m=0; m<4*tpz; m+=4) { p[m+7] = p[m+1] = d++; if((d-1)%(2*c) == 2*(c-1)) {p[m+1]=p[(m+4)%(4*tpz) +3]=2*tpz-2}; p[m+4*c] = p[m+2] = d++; if(d>2*(tpz-c) && d%2 == 0) {p[m+2]=p[(m+4*c)%(4*tpz)]=2*tpz-1}; } for (g=0; g<2*tpz; g++) { if(!cimg){//solo en demo; b[g] = []; b[g][0] = new Point(m1, m2); alea()<0 ? sig=-1 : sig=1; if (g%2 == 0) { //puntos para lados horizontales b[g][12] = new Point(m1, 4*m2); b[g][4] = new Point(m1-m1*sig*.6, m2*(2+alea())); b[g][6] = new Point(m1-m1*sig*.9, m2*(2.5+alea())); b[g][8] = new Point(m1-m1*sig*.6, m2*(3+alea())); } else { //puntos para lados verticales b[g][12] = new Point(4*m1, m2); b[g][4] = new Point(m1*(2+alea()), m2-m2*sig*.6); b[g][6] = new Point(m1*(2.5+alea()), m2-m2*sig*.9); b[g][8] = new Point(m1*(3+alea()), m2-m2*sig*.6); } for (r=0; r<29; r+=4){ //puntos centrales para H y V b[g][a[r]] = Point.interpolate(b[g][a[r+1]],b[g][a[r+2]],a[r+3]+alea()); } } }//fin cimg solo en demo; pz = []; pt=[]; for (n=0; n<f*c; n++) { pz[n] = createEmptyMovieClip("pz"+n, n+1); tmp2 = new BitmapData(5*m1, 5*m2, true, 0); pt[n] = new Point((n%c)*3*m1-m1, Math.floor(n/c)*3*m2-m2); tmp2.copyPixels(img,new Rectangle(pt[n].x,pt[n].y,5*m1,5*m2),null); //dibujando los 4 lados de cada pieza for (z=0; z<4; z++) { z == 2 ? sy=3*m2 : sy=0; z == 1 ? sx=3*m1 : sx=0; g = p[4*n+z]; pz[n].beginBitmapFill(tmp2); pz[n].moveTo(5*m1/2, 5*m2/2); pz[n].lineTo(b[g][0].x+sx, b[g][0].y+sy); if (g>(2*tpz-3) || lin){pz[n].lineTo(b[g][12].x+sx, b[g][12].y+sy);} else { pz[n].lineTo(b[g][1].x+sx, b[g][1].y+sy); for (j=2; j<12; j+=2){ pz[n].curveTo(b[g][j].x+sx, b[g][j].y+sy,b[g][j+1].x+sx,b[g][j+1].y+sy); } pz[n].lineTo(b[g][12].x+sx, b[g][12].y+sy); } pz[n].lineTo(5*m1/2, 5*m2/2); pz[n].endFill(); } //doblando la asignacion para evitar fallos por decimales. pz[n]._x = pt[n].x; pt[n].x = pz[n]._x; pz[n]._y = pt[n].y; pt[n].y = pz[n]._y; pz[n].filters = [bF]; pz[n].v = n; } for (h=0; h<tpz; h++) { pz[h].onPress = function() { this.startDrag(); this.swapDepths(tpz+1); } pz[h].onRelease = pz[h].onReleaseOutside = pz[h].onRollOut = function() { this.stopDrag(); // iman de colocación si está cerca la pieza. cerca = new Point(this._x,this._y) if (Point.distance(pt[this.v],cerca)< 4+(m1+m2)/15){ this._x = pt[this.v].x; this._y = pt[this.v].y; } //comprobador de puzzle completo: cnt=0; for (tt=0; tt<tpz; tt++){ if((pz[tt]._y == pt[tt].y) && (pz[tt]._x == pt[tt].x)) {++cnt;} cnt==tpz ? texto="completo" : texto="faltan: "+(tpz-cnt); } } } cimg=0;//solo en demo }//fin puzzle function alea() {return (.1-Math.random()/5);} mezclar.onPress = function(){ mix(0,0,320,320,0)}; filamas.onPress = function(){ f++; puzzle(imagen, f, c, tipo); } filamenos.onPress = function(){ f>1 ? f-- : f=1; puzzle(imagen, f, c, tipo); } columas.onPress = function(){ c++ puzzle(imagen, f, c, tipo); } columenos.onPress = function(){ c>1 ? c-- : c=1; puzzle(imagen, f, c, tipo); } mtipo.onPress = function(){ tipo=!tipo; tipo==false ? txtipo = "puzzle" : txtipo = "cuadros"; cimg=1; puzzle(imagen, f, c, tipo); } cambio.onPress = function(){ puzzle(imagen, f, c, tipo); } nimagen.onPress = function(){ imagen == "imagen" ? imagen = "imagen1" :imagen = "imagen"; cimg=1; puzzle(imagen, f, c, tipo); } function mix(a,b,c,d,e){ len=pz.length; for(var j=0;j<len;j++){ pz[j]._x=a+(c-a)*Math.random(); pz[j]._y=b+(d-b)*Math.random(); if(e){ as=Math.floor(4*Math.random()); for(var k=0;k<as;k++){ rotar90(pz[j]); } } } }