Home Tutorials Forums Articles Blogs Movies Library Employment Press
Old 11-08-2004, 01:12 PM   #1
akgupta02
Registered User
 
Join Date: Nov 2004
Posts: 1
Default page flip animation problem

Hi !! Friends,

I hve the script for the page flip animation( the script is mentioned below). I want script to flip the first page only , automatically as soon as the movie is loaded. the first page shouldn't flip in the hard cover mode.
plz help me as soon as possible.

the script
---------------------------------


trace(this);
trace(_root);


//these values can be changed: -------------------------------------------------------------------------

pw = 300; //page width in pixel
ph = 400; //page height in pixel

//page data... (export names/tearing flag)
pageOrder = new Array("page0","page1","page2","page3","page4","pag e5","page6","page7","page8","page9","page10","page 11","page12","page13","page14","page15","page16"," page17");
pageCanTear = new Array(false, false, false, false, false, false, false, false, false, false, false, true, true, false, false, false, false, false); //pages TEAROFF function!


page=0; //first page (normally it is 0 = the page before the cover = blank page)
maxpage=16; //last page (back cover, should be even number)

hcover = true; //hard cover on/off

clickarea = 64; //pixel width of the click sensitive area at the edges..
afa = 56; //width of the autoflip starter square.

gs = 2; //goto page flip speed
ps = 5; //mouse pursuit speed
es = 3; //flip speed after mouse btn release

canflip = true; //page flipping enabled

//do not change these values: ---------------------------------------------------------------------------------------------------------------------

_global.mcnt = 0; //counter (used on a page where is an animation)
gpage = 0; //gotoPage No
gflip = false; //gotoPage flip
gdir = 0; //goto direction...

aflip = false; //auto flip
flip = false; //pageflip
flipOff = false; //terminateflip
flipOK = false; //good flip
hflip = false; //hardflip (the cover of the book)
rotz = -30; //hardflip max y difference

preflip = false; //corner flip status
ctear = false; //actual page status
tear = false;
teard = 0;
tlimit = 80;
removedPages = new Array(); //list of removed pages!


mpx = 0, mpy = 0; //mousepos at click

sx = sy = 0; //startpoint when flipping

x = 0; //mouse x,y
y = 0;
ax = 0; //auto x,y
ay = 0;
acnt = 0;
aadd = 0;
aamp = 0;

AM = Math.PI/180;

stop();

_quality = "BEST";
Stage.scaleMode = "noScale";

function reset() { //initializing pages... ---------------------------------------------------------------------------------------
pages.p0.page._x = -pw;
pages.p0._x = 0;
pages.p1.page._x = -pw;
pages.p1._x = 0;

pages.flip.p2.page._x = -pw;
pages.flip.p2._x = pw;
pages.flip.p3.page._x = -pw;
pages.flip.p3._x = 0;

pages.p4.page._x = -pw;
pages.p4._x = pw;
pages.p5.page._x = -pw;
pages.p5._x = pw;

pages.pgrad._visible = pages.mask._visible = pages.flip._visible = false;
pages.flip.p3mask._width = pages.pgmask._width = pw*2;
pages.center._height = pages.flip.p3mask._height = pages.pgmask._height = ph;
pages.flip.fmask.page.pf._width = pw;
pages.center._width = 6;
pages.flip.fmask.page.pf._height = ph;

pageNumber = new Array();
for(i=0;i<=(maxPage+1);i++) pageNumber[i] = i;
}

mousecontroll = new Object(); //initializing mouse click handler ---------------------------------------------------------------------------
mousecontroll.onMouseDown = function() {
if(flip && !aflip) {// && !preflip) {
flipOK = false;
if(sx<0 && pages._xmouse>0) flipOK = true;
if(sx>0 && pages._xmouse<0) flipOK = true;
flipOff = true;
flip = false;
} else if((flipoff || aflip || !canflip) && !preflip) {
trace("donothing");
} else {
var oox = ox;
var ooy = oy;
var osx = sx;
var osy = sy;
var hit = hittest(); //hittest
if(hit) {
anim._visible = false;
flip = true;
flipOff = false;
tear = false; //not tearing yet...
ox = sx = hit*pw;
if(preflip) {
aflip = preflip = false;
ox = oox, oy = ooy;
sx = osx, sy = osy;
}
pages.flip.setMask(pages.mask);
mpx = pages._xmouse, mpy = pages._ymouse;
//_quality = "MEDIUM"; //it is the place to degrade image quality while turning pages if the performance is too low.
}
}
}
mousecontroll.onMouseUp = function() {
if(flip && !tear) {
if((Math.abs(pages._xmouse)>(pw-afa) && Math.abs(pages._ymouse)>(ph/2-afa) && Math.abs(pages._xmouse-mpx)<afa) || preflip) {
flip = false;
preflip = false;
autoflip();
} else if(!preflip) {
preflip = false;
flipOK = false;
if(sx<0 && pages._xmouse>0) flipOK = true;
if(sx>0 && pages._xmouse<0) flipOK = true;
flipOff = true;
flip = false;
}
}
}

function hittest() { //hittest at mouse clicks, if click is over the book -> determining turning direction ------------------------------------
var x=pages._xmouse;
var y=pages._ymouse;
var pmh = ph/2;

if(y<=pmh && y>=-pmh && x<=pw && x>=-pw) { //ha a megadott intervallumban klikkelunk, akkor lapozhatunk
var r = Math.sqrt(x*x+y*y);
var a = Math.asin(y/r);
var y = Math.tan(a)*pw;
if(y>0 && y>ph/2) y = ph/2;
if(y<0 && y<-ph/2) y = - ph/2;
oy = sy = y;
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");
offs = -pw;
pages.flip.fmask._x = pw;

if(x<-(pw-clickarea) && page>0) { //>-----> flip backward
pages.flip.p3._x = 0;
hflip = checkCover(page,-1);
setPages(page-2,page-1,page,page+1);
ctear = pageCanTear[page-1];
return -1;
}
if(x>(pw-clickarea) && page<maxpage) { //<-----< flip forward
pages.flip.p3._x = pw;
hflip = checkCover(page,1);
setPages(page,page+2,page+1,page+3);
ctear = pageCanTear[page+2];
return 1;
}
} else return 0; //wrong click
}
function checkCover(p,dir) {
if(hcover) {
if(dir>0) {
if(p==(maxpage-2) || p==0) return true;
} else {
if(p==maxpage || p==2) return true;
}
}
return false;
}
function corner() {
var x = Math.abs(pages._xmouse);
var y = Math.abs(pages._ymouse);
if(x>(pw-afa) && x<pw && y>(ph/2-afa) && y<(ph/2)) {
return true;
}
return false;
}


function oef() {
_global.mcnt++; //main counter incrase (need for some page effect);

if(!flip && corner()) { //corner mouseover
preflip = true;
if(!autoflip()) preflip = false;
}
if(preflip && !corner()) {
preflip = false;
flip = false;
flipOK = false;
flipoff = true;
}
getm();
if(aflip && !preflip) {
y = (ay += (sy-ay)/(gflip? gs: ps ));
acnt += aadd;
ax -= aadd;
if(Math.abs(acnt)>pw) {
flipOK = true;
flipOff = true;
flip = false;
aflip = false;
}
}
if(flip) { //page turning is in progress...
if(tear) {
x = tox;
y = (toy += teard);
teard *= 1.2;
if(Math.abs(teard)>1200) {
flipOff = true;
flip = false;
}
} else {
x = (ox += (x-ox)/(gflip? gs: ps ));
y = (oy += (y-oy)/(gflip? gs: ps ));
}
calc(x,y); //positioning pages and shadows
}
if(flipOff) { //terminating page turning effect... (comlplete turning... dropped on the other side)
if(flipOK || tear) {
x = (ox += (-sx-ox)/(gflip? gs: es ));
y = (oy += (sy-oy)/(gflip? gs: es ));
calc(x,y);
if(x/-sx > 0.99 || tear) { //we are done with turning, so stop all turning issue...
flip = false;
flipOK = flipOff = false;
pages.pgrad._visible = pages.flip._visible = false;
//_quality = "BEST"; //if quality is decrased during turning effect, you must reset its default value!

if(tear) { //if tear: remove page!!!
removePage((sx<0)? page: page+1);
//removePage(page);
page += (sx<0)? -2: 0;
} else {
page += (sx<0)? -2: 2; //and tourning pages at pagenumber level...
}
setPages(page,0,0,page+1);
tear = false;

if(gpage>0) { //gotoflip active -> is there another flipping left?
gpage--;
autoflip();
} else gflip = false;
}
} else { //terminating page turning effect... (incomlplete turning... dropped on the dragged side)
x = (ox += (sx-ox)/3);
y = (oy += (sy-oy)/3);
calc(x,y);
if(x/sx > 0.99) { //we are done with turning, so stop all turning issue...
flip = false;
flipOff = false;
aflip = false;
pages.pgrad._visible = pages.flip._visible = false;
//_quality = "HIGH"; //if quality is decrased during turning effect, you must reset its default value!
setPages(page,0,0,page+1); //no change at pagenumbers..
}
}
}
}

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;
*/


amit
akgupta02 is offline   Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump


All times are GMT. The time now is 10:31 PM.

///
Follow actionscriptorg on Twitter

 


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Ad Management plugin by RedTyger
Copyright 2000-2013 ActionScript.org. All Rights Reserved.
Your use of this site is subject to our Privacy Policy and Terms of Use.