here is the code
var tUpBlank:Number = 0;
var tLeftBlank:Number = 0;
var tWindowHeight:Number = 600;
var tWindowWidth:Number = 1000;
var tMode:Number = 0;// indicate if there is action for mousedown
var tMidUpPoint_x:Number = tLeftBlank+tWindowWidth/2;
var tMidUpPoint_y:Number = tUpBlank;
var tMidBtomPoint_x:Number = tLeftBlank+tWindowWidth/2;
var tMidBtomPoint_y:Number = tUpBlank+tWindowHeight;
var tLine:Number = Math.sqrt(tWindowHeight*tWindowHeight+(tWindowWidth/2)*(tWindowWidth/2))/2;
L5 = L6=L8=L9=1;
var used:Number = 0;// if it is currently fliping. 1:flip left page; -1:flip right page
var i:Number = 0;
var endOf:Boolean = false;// indicate if the mouse is still holding
var tPage:Number = 0;// the current page
var tMaxPage:Number = 6;// total page
var auto:Boolean = false;// indicate if it is automatically fliping
attachMovie("page"+tPage,"page",1,{_x:tLeftBlank, _y:tUpBlank});
attachMovie("maskShadow","maskShadow",3);
attachMovie("layerShadow","layerShadow1",4);
layerShadow1.setMask(maskShadow);
maskShadow._x = tLeftBlank;
maskShadow._y = tUpBlank;
maskShadow._width = tWindowWidth;
maskShadow._height = tWindowHeight;
layerShadow1._visible = false;
prevbtn._alpha = 0;
prevbtn.ta = 0;
nextbtn._alpha = 100;
nextbtn.ta = 100;
mouseControl = new Object();
mouseControl.onMouseDown = function() {
if (tMode == 1 && used == 0) {
if (_xmouse < tLeftBlank+tWindowWidth/5 && _xmouse > tLeftBlank) {
s1x = tLeftBlank;
ox = tLeftBlank+tWindowWidth/4;
used = 1;
k = tPage-1;
attachMovie("page"+k+"b","page1",5);
attachMovie("page"+k+"a","page2",2);
} else if (_xmouse < tLeftBlank+tWindowWidth && _xmouse > tLeftBlank+4*tWindowWidth/5) {
s1x = tLeftBlank+tWindowWidth;
ox = tLeftBlank+3*tWindowWidth/4;
used = -1;
k = tPage+1;
attachMovie("page"+k+"a","page1",5);
attachMovie("page"+k+"b","page2",2);
}
layerShadow1._visible = true;
page1._x = tMidUpPoint_x-used*3*tWindowWidth/4;
page1._y = tUpBlank+tWindowHeight/2;
page2._x = tMidUpPoint_x-used*tWindowWidth/4;
page2._y = tUpBlank+tWindowHeight/2;
i = 0;
s1y = _ymouse;
s2tx = _xmouse;
s2ty = s1y;
s2x = s1x;
s2y = s1y;
oy = tUpBlank+tWindowHeight/2;
h1 = tUpBlank+tWindowHeight/2-s1y;
h7 = (s1y-tMidUpPoint_y)*(s1y-tMidUpPoint_y)+(s1x-tMidUpPoint_x)*(s1x-tMidUpPoint_x);
h8 = (s1y-tMidBtomPoint_y)*(s1y-tMidBtomPoint_y)+(s1x-tMidBtomPoint_x)*(s1x-tMidBtomPoint_x);
}
};
nextbtn.onPress = function() {
flipPage(tPage+1);
};
prevbtn.onPress = function() {
flipPage(tPage-1);
};
function flipPage(n:Number) {
if (n != tPage && n <= tMaxPage && used == 0) {
//trace("tPage:"+tPage+" n:"+n);
if (n>tPage) {
tPage = n-1;
s1x = tLeftBlank+tWindowWidth;
ox = tLeftBlank+3*tWindowWidth/4;
used = -1;
k = tPage+1;
s2tx = tLeftBlank+20;
attachMovie("page"+k+"a","page1",5);
attachMovie("page"+k+"b","page2",2);
} else {
tPage = n+1;
s1x = tLeftBlank;
ox = tLeftBlank+tWindowWidth/4;
used = 1;
k = tPage-1;
s2tx = tLeftBlank+tWindowWidth+20;
attachMovie("page"+k+"b","page1",5);
attachMovie("page"+k+"a","page2",2);
}
layerShadow1._visible = true;
page1._x = tMidUpPoint_x-used*3*tWindowWidth/4;
page1._y = tUpBlank+tWindowHeight/2;
page2._x = tMidUpPoint_x-used*tWindowWidth/4;
page2._y = tUpBlank+tWindowHeight/2;
auto = true;
endOf = false;
i = 0;
s1y = tUpBlank;
s2ty = -80;
s2x = s1x;
s2y = s1y;
oy = tUpBlank+tWindowHeight/2;
h1 = tUpBlank+tWindowHeight/2-s1y;
h7 = (s1y-tMidUpPoint_y)*(s1y-tMidUpPoint_y)+(s1x-tMidUpPoint_x)*(s1x-tMidUpPoint_x);
h8 = (s1y-tMidBtomPoint_y)*(s1y-tMidBtomPoint_y)+(s1x-tMidBtomPoint_x)*(s1x-tMidBtomPoint_x);
return true;
}
return false;
}
mouseControl.onMouseUp = function() {
if (used != 0 && endOf == false && !auto) {
if (_xmouse*used > used*(tMidUpPoint_x+used*tWindowWidth/4)) {
s2tx = tMidUpPoint_x+used*tWindowWidth/2;
} else {
s2tx = s1x+used*3;
}
s2ty = s1y;
s3x = s1x;
s3y = s1y;
endOf = true;
}
};
Mouse.addListener(mouseControl);
onEnterFrame = function () {
mc = page1;
mc1 = page2;
if (((tPage >0 && _xmouse< tLeftBlank+tWindowWidth/5 && _xmouse >tLeftBlank) || (tPage< tMaxPage && _xmouse< tLeftBlank+tWindowWidth && _xmouse >tLeftBlank+4*tWindowWidth/5)) && _ymouse >tUpBlank && _ymouse< tUpBlank+tWindowHeight) {
tMode = 1;
} else {
tMode = 0;
}
//trace("tMode:"+tMode+" used:"+used+" endOf:"+endOf+" auto:"+auto);
if (endOf == false && used != 0 && (_xmouse*used < used*(tMidUpPoint_x-used*tWindowWidth/2) && !auto)) {
s2tx = s1x+used*3;
s2ty = s1y;
endOf = true;
}
if (endOf == true && !auto && Math.abs(mc._y-(tUpBlank+tWindowHeight/2))<1 && Math.abs(mc._x-(tMidUpPoint_x+used*tWindowWidth/4)) < 5) {
tPage = tPage-used;
layerShadow1._visible = false;
used = 0;
endOf = false;
s2tx = s1x;
s2ty = s1y;
attachMovie("page"+tPage,"page",1,{_x:tLeftBlank, _y:tUpBlank});
//---------------------------------------------------------------
/*this.createEmptyMovieClip("page",1);
page.loadMovie("./pages/page"+tPage+".swf");
page._x = tLeftBlank;
page._y = tUpBlank;
//---------------------------------------------------------------*/
mc.removeMovieClip();
mc1.removeMovieClip();
_parent.ReturnPage(tPage);
if (tPage<=0) {
prevbtn.ta = 0;
} else {
prevbtn.ta = 100;
}
if (tPage>=tMaxPage) {
nextbtn.ta = 0;
} else {
nextbtn.ta = 100;
}
} else if (endOf == true && !auto && Math.abs(mc._y-(tUpBlank+tWindowHeight/2)) < 8 && Math.abs(mc._x-(tMidUpPoint_x-used*3*tWindowWidth/4)) < 8) {
mc._visible = false;
layerShadow1._visible = false;
used = 0;
endOf = false;
s2tx = s1x;
s2ty = s1y;
mc.removeMovieClip();
mc1.removeMovieClip();
}
if (used != 0 && endOf == false && !auto) {
limit(mc._x,mc._y);
}
if (used != 0) {
//setXY(s2x,s2tx,s2y,s2ty,6);
//trace("s2tx:"+s2tx+" s2x:"+s2x+" auto:"+auto);
if (auto && !endOf && Math.abs(s2tx-s2x) < 300) {
//trace("used:"+used);
if (used == -1) {
s2tx = tLeftBlank;
} else {
s2tx = tLeftBlank+tWindowWidth;
}
auto = false;
s2ty = tUpBlank;
endOf = true;
} else if (Math.abs(s2tx-s2x)>1 || Math.abs(s2ty-s2y)>1) {
s2y = s2y-(s2y-s2ty)/6;
s2x = s2x-(s2x-s2tx)/6;
} else {
s2y = s2ty;
s2x = s2tx;
}
controlPage(s2x,s2y);
mc._x = px;
mc._y = py;
mc._rotation = pr;
setShadow(mc,mc1);
}
setA(nextbtn,6);
setA(prevbtn,6);
};
function controlPage(xx, yy) {
h2 = Math.sqrt((s1y-yy)*(s1y-yy)+(s1x-xx)*(s1x-xx));
L1 = Math.atan((yy-s1y)/(xx-s1x));
s3x = s1x+used*h2/(2*Math.cos(L1));
s3y = s1y;
if (ox < s3x) {
L2 = Math.atan((oy-s3y)/(ox-s3x))+Math.PI;
} else {
L2 = Math.atan((oy-s3y)/(ox-s3x));
}
if (xx < s3x) {
L3 = Math.atan((yy-s3y)/(xx-s3x));
} else {
if (yy > s3y) {
L3 = Math.atan((yy-s3y)/(xx-s3x))-Math.PI;
} else {
L3 = Math.atan((yy-s3y)/(xx-s3x))+Math.PI;
}
}
L4 = L2-L3-Math.PI/2;
h3 = Math.sqrt((s3y-oy)*(s3y-oy)+(s3x-ox)*(s3x-ox));
px = s3x-used*h3*Math.sin(L4);
py = s3y-used*h3*Math.cos(L4);
pr = L3*180/Math.PI+90+used*90;
}
function limit(xx, yy) {
if ((s2ty-tMidUpPoint_y)*(s2ty-tMidUpPoint_y)+(s2tx-tMidUpPoint_x)*(s2tx-tMidUpPoint_x)>=h7 && (s2ty-tMidBtomPoint_y)*(s2ty-tMidBtomPoint_y)+(s2tx-tMidBtomPoint_x)*(s2tx-tMidBtomPoint_x)>=h8) {
s2tx = tMidUpPoint_x+used*tWindowWidth/2;
s2ty = s1y;
s3x = s1x;
s3y = s1y;
endOf = true;
} else if ((_ymouse-tMidUpPoint_y)*(_ymouse-tMidUpPoint_y)+(_xmouse-tMidUpPoint_x)*(_xmouse-tMidUpPoint_x)>h7 && i != 2) {
i = 1;
h5 = Math.sqrt((tMidUpPoint_y-s1y)*(tMidUpPoint_y-s1y)+(tMidUpPoint_x-s1x)*(tMidUpPoint_x-s1x));
if (_xmouse<=tMidUpPoint_x) {
L7 = -Math.atan((tMidUpPoint_y-_ymouse)/(tMidUpPoint_x-_xmouse));
} else {
L7 = Math.PI-Math.atan((tMidUpPoint_y-_ymouse)/(tMidUpPoint_x-_xmouse));
}
s2tx = tMidUpPoint_x-h5*Math.cos(L7);
s2ty = tMidUpPoint_y+h5*Math.sin(L7);
} else if ((_ymouse-tMidBtomPoint_y)*(_ymouse-tMidBtomPoint_y)+(_xmouse-tMidBtomPoint_x)*(_xmouse-tMidBtomPoint_x)>h8 && i != 1) {
i = 2;
h6 = Math.sqrt((tMidBtomPoint_y-s1y)*(tMidBtomPoint_y-s1y)+(tMidBtomPoint_x-s1x)*(tMidBtomPoint_x-s1x));
if (_xmouse<=tMidUpPoint_x) {
L10 = -Math.PI/2-Math.atan((tMidBtomPoint_y-_ymouse)/(tMidBtomPoint_x-_xmouse));
} else {
L10 = -3*Math.PI/2-Math.atan((tMidBtomPoint_y-_ymouse)/(tMidBtomPoint_x-_xmouse));
}
s2tx = tMidBtomPoint_x+h6*Math.sin(L10);
s2ty = tMidBtomPoint_y+h6*Math.cos(L10);
} else {
i = 0;
s2tx = _xmouse;
s2ty = _ymouse;
}
}
function setShadow(obj1, obj2) {
layerShadow1._x = (obj1._x+ox)/2;
layerShadow1._y = (obj1._y+oy)/2;
layerShadow1._rotation = obj1._rotation/2+90+used*90;
obj1.setMask(layerShadow1.layerMask1);
obj2.setMask(layerShadow1.layerMask2);
}
function setXY(ox, tx, oy, ty, a) {
if (tx != ox || ty != oy) {
oy = oy-(oy-ty)/a;
ox = ox-(ox-tx)/a;
}
}
function setR(obj, a) {
if (Math.abs(obj.tr-obj._rotation)>20) {
obj._rotation = obj._rotation-(obj._rotation-obj.tr*2)/a;
} else {
obj._rotation = obj.tr;
}
}
function setA(obj, a) {
if (Math.abs(obj.ta-obj._alpha)>10) {
obj._alpha = obj._alpha-(obj._alpha-obj.ta)/a;
} else {
obj._alpha = obj.ta;
}
}
this is how it looks like

No comments:
Post a Comment