codice:
function calc(x,y) { //positioning pages and shadows by x,y reference points --------------------------------------------------
if(hflip) { //hardflip...
var xp = (sx<0)? -x: x;
if(xp>0) {
sp2._visible = false;
sp3._visible = true;
scalc(sp3,x);
} else {
sp3._visible = false;
sp2._visible = true;
scalc(sp2,x);
}
pages.flip.setMask(null);
pages.flip._visible = true;
pages.flip.fgrad._visible = false;
pages.flip.p2._visible = pages.flip.p3._visible = false;
return;
} else pages.flip.fgrad._visible = true;
//normal flipping process---------------------------------------------------------------------
var rr0 = Math.sqrt((y+ph/2)*(y+ph/2)+x*x);
var rr1 = Math.sqrt((ph/2-y)*(ph/2-y)+x*x);
if((rr0>r0 || rr1>r1) && !tear) { // we can tear off pages now:)
// so reference points must be recalculated!
if(y<sy) { // k1-gyel kell osszehasonlitani!
var a = Math.asin((ph/2-y)/rr1);
y = (ph/2-Math.sin(a)*r1);
x = (x<0)? -Math.cos(a)*r1: Math.cos(a)*r1;
if(y>sy) {
if((sx*x)>0) y = sy, x = sx;
else y = sy, x = -sx;
}
if((rr1-r1)>tlimit && ctear) {
teard = -5;
tear = true;
tox = ox = x;
toy = oy = y;
}
} else { // k0-val kell osszehasonlitani!
var a = Math.asin((y+ph/2)/rr0);
y = Math.sin(a)*r0-ph/2;
x = (x<0)? -Math.cos(a)*r0: Math.cos(a)*r0;
if(y<sy) {
if((sx*x)>0) y = sy, x = sx;
else y = sy, x = -sx;
}
if((rr0-r0)>tlimit && ctear) {
teard = 5;
tear = true;
tox = ox = x;
toy = oy = y;
}
}
}
if((sx<0 && (x-sx)<10) || (sx>0 && (sx-x)<10)) {
if(sx<0) x = -pw+10;
if(sx>0) x = pw-10;
}
//calculating flipping process
pages.flip._visible = true;
pages.flip.p3shadow._visible = pages.pgrad._visible = !tear;
pages.flip.p2._visible = pages.flip.p3._visible = true;
//equation of the line
var vx = x-sx;
var vy = y-sy;
var a1 = vy/vx;
var a2 = -vy/vx;
cx = sx+(vx/2);
cy = sy+(vy/2);
//trigonometriai szamitasok
//calculating rotation of the page, and the masks
var r = Math.sqrt((sx-x)*(sx-x)+(sy-y)*(sy-y));
var a = Math.asin((sy-y)/r);
if(sx<0) a = -a;
ad = a/AM; //in degree
pageN._rotation = ad*2;
r = Math.sqrt((sx-x)*(sx-x)+(sy-y)*(sy-y));
rl = (pw*2);
if(sx>0) { //flip forward
pages.mask._xscale = 100;
nx = cx-Math.tan(a)*(ph/2-cy);
ny = ph/2;
if(nx>pw) {
nx = pw;
ny = cy+Math.tan(Math.PI/2+a)*(pw-cx);
}
pageN.pf._x = -(pw-nx);
pages.flip.fgrad._xscale = (r/rl/2)*pw;
pages.pgrad._xscale = -(r/rl/2)*pw;
pages.flip.p3shadow._xscale = (r/rl/2)*pw;
} else { //flip backward
pages.mask._xscale = -100;
nx = cx-Math.tan(a)*(ph/2-cy);
ny = ph/2;
if(nx<-pw) {
nx = -pw;
ny = cy+Math.tan(Math.PI/2+a)*(-pw-cx);
}
pageN.pf._x = -(pw-(pw+nx));
pages.flip.fgrad._xscale = -(r/rl/2)*pw;
pages.pgrad._xscale = (r/rl/2)*pw;
pages.flip.p3shadow._xscale = -(r/rl/2)*pw;
}
pages.mask._x = cx;
pages.mask._y = cy;
pages.mask._rotation = ad;
pageN.pf._y = -ny;
pageN._x = nx+offs;
pageN._y = ny;
pages.flip.fgrad._x = cx;
pages.flip.fgrad._y = cy;
pages.flip.fgrad._rotation = ad;
pages.flip.fgrad._alpha = (r>(rl-50))? 100-(r-(rl-50))*2: 100;
pages.flip.p3shadow._x = cx;
pages.flip.p3shadow._y = cy;
pages.flip.p3shadow._rotation = ad;
pages.flip.p3shadow._alpha = (r>(rl-50))? 100-(r-(rl-50))*2: 100;
pages.pgrad._x = cx;
pages.pgrad._y = cy;
pages.pgrad._rotation = ad+180;
pages.pgrad._alpha = (r>(rl-100))? 100-(r-(rl-100)): 100;
pages.flip.fmask.page._x = pageN._x;
pages.flip.fmask.page._y = pageN._y;
pages.flip.fmask.page.pf._x = pageN.pf._x;
pages.flip.fmask.page.pf._y = pageN.pf._y;
pages.flip.fmask.page._rotation = pageN._rotation;
}
function scalc(obj,x) { //hardflip calc
if(x<-pw) x=-pw;
if(x>pw) x=pw;
var a = Math.asin( x/pw );
var rot = a/AM/2;
var xs = 100;
var ss = 100*Math.sin( rotz*AM );
x = x/2;
var y = Math.cos(a)*(pw/2)*(ss/100);
placeImg(obj, rot, ss, x, y)
pages.pgrad._visible = pages.flip._visible = true;
pages.pgrad._xscale = x;
pages.pgrad._alpha = pages.flip.p3shadow._alpha = 100;
pages.flip.p3shadow._xscale = -x;
pages.flip.p3shadow._x = 0;
pages.flip.p3shadow._y = 0;
pages.flip.p3shadow._rotation = 0;
pages.pgrad._x = 0;
pages.pgrad._y = 0;
pages.pgrad._rotation = 0;
}
function placeImg(j, rot, ss, x, y) {
var m = Math.tan( rot*AM );
var f = Math.SQRT2/Math.sqrt(m*m+1);
var phxs = 100*m;
var phRot = -rot;;
var xs = 100*f;
var ys = 100*f;
j.ph.pic._rotation = 45;
j.ph.pic._xscale = (phxs<0)? - xs: xs;
j.ph.pic._yscale = ys*(100/ss);
j.ph._rotation = phRot;
j.ph._xscale = phxs;
j._yscale = ss;
j._x = x;
j._y = y;
j._visible = true;
}
function setPages(p1,p2,p3,p4) { //attach the right page "image" at the right place:)
p0 = p1-2; //pages for transparency...
p5 = p4+2;
if(p0<0) p0=0;
if(p5>maxpage) p5=0;
if(p1<0) p1=0; //visible pages
if(p2<0) p2=0;
if(p3<0) p3=0;
if(p4<0) p4=0;
trace("setpages ->"+p1+","+p2+","+p3+","+p4);
pleft = pages.p1.page.pf.ph.attachMovie(pageOrder[p1],"pic",0);
pages.p1.page.pf.ph._y = -ph/2;
pleftb = pages.p0.page.pf.ph.attachMovie(pageOrder[p0],"pic",0);
pages.p0.page.pf.ph._y = -ph/2;
if(hflip) { //hardflip pages are specials!!!
var tm = pages.flip.hfliph.attachMovie("sph","sp2",0);
sp2 = tm.ph.pic.attachMovie(pageOrder[p2],"pic",0);
sp2._y = -ph/2, sp2._x = -pw/2;
sp2 = eval("pages.flip.hfliph.sp2");
var tm = pages.flip.hfliph.attachMovie("sph","sp3",1);
sp3 = tm.ph.pic.attachMovie(pageOrder[p3],"pic",0);
sp3._y = -ph/2, sp3._x = -pw/2;
sp3 = eval("pages.flip.hfliph.sp3");
} else {
pages.flip.hfliph.sp2.removeMovieClip();
pages.flip.hfliph.sp3.removeMovieClip();
sp2 = pages.flip.p2.page.pf.ph.attachMovie(pageOrder[p2],"pic",0);
pages.flip.p2.page.pf.ph._y = -ph/2;
sp3 = pages.flip.p3.page.pf.ph.attachMovie(pageOrder[p3],"pic",0);
pages.flip.p3.page.pf.ph._y = -ph/2;
}
pright = pages.p4.page.pf.ph.attachMovie(pageOrder[p4],"pic",0);
pages.p4.page.pf.ph._y = -ph/2;
prightb = pages.p5.page.pf.ph.attachMovie(pageOrder[p5],"pic",0);
pages.p5.page.pf.ph._y = -ph/2;
}
function resetPages() {
setPages(page,0,0,page+1);
}
function autoflip() { //start auto flip!
if(!aflip && !flip && !flipoff && canflip) { //only when all conditions fits our needs...
acnt = 0
aamp = Math.random()*(ph/2)-(ph/4);
var x= gflip? (gdir*pw)/2: ((pages._xmouse<0)? -pw/2: pw/2);
var y= Math.random()*ph-(ph/2); //random starty
var pmh = ph/2;
var r = Math.sqrt(x*x+y*y);
var a = Math.asin(y/r);
var yy = Math.tan(a)*pw;
if(y>0 && y>ph/2) y = ph/2;
if(y<0 && y<-ph/2) y = - ph/2;
oy = sy = yy;
ax = (pages._xmouse<0)? -pw/2: pw/2;
var l = ((ph/2)-y);
ay = y;+(Math.random()*2*l)-l; //page turnig style randomizing
offs = -pw;
var hit = 0;
if(x<0 && page>0) {
pages.flip.p3._x = 0;
hflip = checkCover(page,-1);
if(!(preflip && hflip)) setPages(page-2,page-1,page,page+1);
hit = -1;
}
if(x>0 && page<maxpage) {
pages.flip.p3._x = pw;
hflip = checkCover(page,1);
if(!(preflip && hflip)) setPages(page,page+2,page+1,page+3);
hit = 1;
}
if(hflip && preflip) {
hit = 0;
preflip = false;
return false;
}
if(hit) {
anim._visible = false;
flip = true;
flipOff = false;
ox = sx = hit*pw;
pages.flip.setMask(pages.mask);
aadd = hit*(pw/(gflip? 5:10 )); //autoflip takes 10 frames to be done!!!
aflip = true;
pages.flip.fmask._x = pw;
if(preflip) {
oy = sy = (pages._ymouse<0)? -(ph/2): (ph/2);
}
r0 = Math.sqrt((sy+ph/2)*(sy+ph/2)+pw*pw);
r1 = Math.sqrt((ph/2-sy)*(ph/2-sy)+pw*pw);
pageN = eval("pages.flip.p2.page");
pageO = eval("pages.flip.p3");
oef();
return true;
}
} else return false;
}
function getm() { //get x,y reference points depending of turning style: manual/auto
if(aflip && !preflip) {
x = ax;
y = ay;
} else {
x = pages._xmouse;
y = pages._ymouse;
}
}
function gotoPage(i) { //quickjump to the page number i
i = getPN(i);
if(i<0) return false;
var p = int(page/2);
var d = int(i/2);
if(p!=d && canflip && !gflip) { //target!=current page
if(p<d) { //go forward
gdir = 1;
gpage = d-p-1;
} else { //go backward
gdir = -1
gpage = p-d-1;
}
gflip = true;
autoflip();
}
}
function getPN(i) { //get the right page number
var find = false;
for(j=1;j<=maxpage;j++) {
if(i==pageNumber[j]) {
i=j;
find = true;
break;
}
}
if(find) return i;
else return -1;
}
function removePage(i) {
trace("remove page "+i);
i = (Math.floor((i-1)/2)*2)+1;
removedPages.push(pageNumber[i], pageNumber[i+1]);
for(j=(i+2);j<=(maxPage+1);j++) {
pageOrder[j-2]=pageOrder[j];
pageCanTear[j-2]=pageCanTear[j];
pageNumber[j-2]=pageNumber[j];
}
trace("removed pages "+i+","+(i+1));
trace(removedPages.join(", "));
maxPage -= 2;
}
onEnterFrame = function() {
trace(getBytesLoaded());
if(getBytesLoaded()==getBytesTotal()) {
gotoAndPlay(2);
delete onEnterFrame;
}
}
//------------------------------------------------------------------------------------------------ PUT YOUR CODE HERE --------------
/* you can use these functions:
gotoPage( destinationPageNo ); //quick jump to the page number: destinationPageNo; values = 0-maxpages;
autoflip(); //start autoflip (direction is calculated from _xmouse)
canflip //it's a variable. setting its value to false disables flipping
other functions of page turning is automatic;
*/