Difference between revisions of "E-book comb.as"

From Organic Design wiki
m
m
Line 1: Line 1:
//set globals
 
 
margin = 50;
 
margin = 50;
 
w = (Stage.width-margin*2)/2;
 
w = (Stage.width-margin*2)/2;
Line 5: Line 4:
 
i = 0;
 
i = 0;
 
speed = 8;
 
speed = 8;
//Main clip. Will presumably need a different clip for every page.
+
 
 
createEmptyMovieClip("book",1);
 
createEmptyMovieClip("book",1);
//For trailing page
+
 
 
createEmptyMovieClip("right_next",2);
 
createEmptyMovieClip("right_next",2);
  
Line 23: Line 22:
 
     }
 
     }
  
//Folding function, parameters are (iteration, x-clickzone, y-clickzone)
+
function topRight(i,j) {
function pageFold(i,j,k) {
+
ox = margin+w;
ox = margin+w;
+
oy = margin;
oy = margin;
+
if (j == 1) {
//Mousemove default x,y
+
 
x= _xmouse-ox;
+
x= _xmouse-ox;
y= _ymouse-oy;
+
y= _ymouse-oy;trace(y);
//Reverse fold
+
x=x*j;
+
if (i) {
//y=y*k;
+
x = i-ox;
//Animation on clickevent
+
y = 40;
if (i) {
+
if (x <= -253) y = 0;
x = i-ox*j;
+
}
y = 40;
+
 
//if (y>200) y = 200;
+
calculate();
if (x <= -253) y = 0;
+
// Draw page
}
+
clear();
//RHS-click draw
+
lineStyle(1,0);
if (j == 1) {
+
moveTo(ox,oy);
//Calculate fold
+
lineTo(ox,oy+h);
calculate();
+
lineTo(ox+w,oy+h);
//Draw lines
+
lineTo(ox+w,oy);
clear();
+
lineTo(ox,oy);
lineStyle(1,0);
+
moveTo(ox-w,oy);
moveTo(ox,oy);
+
lineTo(ox+Px,oy+Py);
lineTo(ox,oy+h);
+
lineTo(ox+Rx,oy+Ry);
lineTo(ox+w,oy+h);
+
lineTo(ox+Rx,oy+h);
lineTo(ox+w,oy);
+
lineTo(ox-w,oy+h);
lineTo(ox,oy);
+
lineTo(ox-w,oy);
moveTo(ox-w,oy);
+
// Draw fold
lineTo(ox+Px,oy+Py);
+
beginFill(0xeeeeee,100);
lineTo(ox+Rx,oy+Ry);
+
moveTo(ox+x,oy+y);
lineTo(ox+Rx,oy+h);
+
lineTo(ox+Px,oy);
lineTo(ox-w,oy+h);
+
lineTo(ox+Rx,oy+Ry);
lineTo(ox-w,oy);
+
lineTo(ox+Qx,oy+Qy);
//Draw fold
+
lineTo(ox+x,oy+y);
beginFill(0xeeeeee,100);
+
endFill();
moveTo(ox+x,oy+y);
+
// orient right_next page
lineTo(ox+Px,oy);
+
_root.right_next._x = x;
lineTo(ox+Rx,oy+Ry);
+
_root.right_next._y = y;
lineTo(ox+Qx,oy+Qy);
+
_root.right_next._rotation = a*57.29578;
lineTo(ox+x,oy+y);
+
}
endFill();
+
//Orient right_next page
+
if (j == -1) {
_root.right_next._x = x;
+
 
_root.right_next._y = y;
+
x = ox-_xmouse;
_root.right_next._rotation = a*57.29578;
+
y = _ymouse-oy;
}
+
 
//LHS-click draw
+
if (i) {
if (j == -1) {
+
x = ox-i;
//Calculate fold
+
y = 40;
calculate();
+
if (x < -253) y = 0;
//Draw lines
+
}
clear();
+
lineStyle(1,0);
+
calculate ();
moveTo(ox,oy);
+
// Draw page
lineTo(ox,oy+h);
+
clear();
lineTo(ox-w,oy+h);
+
lineStyle(1,0);
lineTo(ox-w,oy);
+
moveTo(ox,oy);
lineTo(ox,oy);
+
lineTo(ox,oy+h);
moveTo(ox+w,oy);
+
lineTo(ox-w,oy+h);
lineTo(ox-Px,oy+Py);
+
lineTo(ox-w,oy);
lineTo(ox-Rx,oy+Ry);
+
lineTo(ox,oy);
lineTo(ox-Rx,oy+h);
+
moveTo(ox+w,oy);
lineTo(ox+w,oy+h);
+
lineTo(ox-Px,oy+Py);
lineTo(ox+w,oy);
+
lineTo(ox-Rx,oy+Ry);
// Draw fold
+
lineTo(ox-Rx,oy+h);
beginFill(0xdddddd,100);
+
lineTo(ox+w,oy+h);
moveTo(ox-x,oy+y);
+
lineTo(ox+w,oy);
lineTo(ox-Px,oy+Py);
+
// Draw fold
lineTo(ox-Rx,oy+Ry);
+
beginFill(0xdddddd,100);
lineTo(ox-Qx,oy+Qy);
+
moveTo(ox-x,oy+y);
lineTo(ox-x,oy+y);
+
lineTo(ox-Px,oy+Py);
endFill();
+
lineTo(ox-Rx,oy+Ry);
// orient right_next page
+
lineTo(ox-Qx,oy+Qy);
_root.left_next._x = ox-x;
+
lineTo(ox-x,oy+y);
_root.left_next._y = oy+y;
+
endFill();
_root.left_next._rotation = -a*57.29578;
+
// orient right_next page
}
+
_root.left_next._x = ox-x;
 +
_root.left_next._y = oy+y;
 +
_root.left_next._rotation = -a*57.29578;
 +
}
 
 
 
 
 
function calculate() {
 
function calculate() {
Line 138: Line 140:
 
}
 
}
  
//Iterate the pageTurn function through frames
 
 
function reduce() {
 
function reduce() {
     if (i) pageFold (i-=speed,j,k);
+
     if (i) topRight (i-=speed,j,k);
 
}
 
}
//Pass the click position to main function
+
 
var coords = new Object();
 
var coords = new Object();
 
coords.across = 0;
 
coords.across = 0;
Line 149: Line 150:
 
k = coords.down;
 
k = coords.down;
  
//Mouse events set parameter values
 
 
var mouseListener = new Object();
 
var mouseListener = new Object();
  
Line 161: Line 161:
 
j = coords.across;
 
j = coords.across;
 
k = coords.down;
 
k = coords.down;
pageFold(0,j,k);
+
topRight(0,j,k);
 
};
 
};
  
Line 174: Line 174:
 
  speed = -speed;
 
  speed = -speed;
 
  }
 
  }
//if (_ymouse <= 150) coords.down = -1;
+
if (_ymouse <= 150) coords.down = -1;
//if (_ymouse > 150 && _ymouse <= 250) coords.down = 0;
+
if (_ymouse > 150 && _ymouse <= 250) coords.down = 0;
//if (_ymouse > 250) coords.down = 1;    
+
if (_ymouse > 250) coords.down = 1;    
 
};
 
};
  
 
Mouse.addListener(mouseListener);
 
Mouse.addListener(mouseListener);

Revision as of 23:36, 23 December 2006

margin = 50; w = (Stage.width-margin*2)/2; h = Stage.height-margin*2; i = 0; speed = 8;

createEmptyMovieClip("book",1);

createEmptyMovieClip("right_next",2);

right_next.createTextField('content',0,0,0,50,50); with (right_next.content) {

   autosize = 'left';
   selectable = false;
   _quality = 'BEST';
   border = false;
   multiline = true;
   wordWrap = false;
   html = true;
   embedFonts = true;
   htmlText = 'Hello right world!';
   }

function topRight(i,j) { ox = margin+w; oy = margin; if (j == 1) {

x= _xmouse-ox; y= _ymouse-oy;trace(y);

if (i) { x = i-ox; y = 40; if (x <= -253) y = 0; }

calculate(); // Draw page clear(); lineStyle(1,0); moveTo(ox,oy); lineTo(ox,oy+h); lineTo(ox+w,oy+h); lineTo(ox+w,oy); lineTo(ox,oy); moveTo(ox-w,oy); lineTo(ox+Px,oy+Py); lineTo(ox+Rx,oy+Ry); lineTo(ox+Rx,oy+h); lineTo(ox-w,oy+h); lineTo(ox-w,oy); // Draw fold beginFill(0xeeeeee,100); moveTo(ox+x,oy+y); lineTo(ox+Px,oy); lineTo(ox+Rx,oy+Ry); lineTo(ox+Qx,oy+Qy); lineTo(ox+x,oy+y); endFill(); // orient right_next page _root.right_next._x = x; _root.right_next._y = y; _root.right_next._rotation = a*57.29578; }

if (j == -1) {

x = ox-_xmouse; y = _ymouse-oy;

if (i) { x = ox-i; y = 40; if (x < -253) y = 0; }

calculate (); // Draw page clear(); lineStyle(1,0); moveTo(ox,oy); lineTo(ox,oy+h); lineTo(ox-w,oy+h); lineTo(ox-w,oy); lineTo(ox,oy); moveTo(ox+w,oy); lineTo(ox-Px,oy+Py); lineTo(ox-Rx,oy+Ry); lineTo(ox-Rx,oy+h); lineTo(ox+w,oy+h); lineTo(ox+w,oy); // Draw fold beginFill(0xdddddd,100); moveTo(ox-x,oy+y); lineTo(ox-Px,oy+Py); lineTo(ox-Rx,oy+Ry); lineTo(ox-Qx,oy+Qy); lineTo(ox-x,oy+y); endFill(); // orient right_next page _root.left_next._x = ox-x; _root.left_next._y = oy+y; _root.left_next._rotation = -a*57.29578; }

function calculate() { // constrain mouse to radius W a = Math.atan2(y,x); r = Math.sqrt(x*x+y*y); if (r>w) r=w; x = Math.cos(a)*r; y = Math.sin(a)*r; // Calculate point Z and dy,dx of line C dx = w-x; dy = y; Zx = x+dx/2; Zy = y-dy/2; // Calculate line D Px = Zx-Zy*dy/dx; Py = 0; Qx = w;

if (dy*dy<1) { a = 0; Qx = x; Qy = Ry = h; Rx = (x+w)/2; } else { Qy = Zy+(w-Zx)*dx/dy; if (Qy>h || Qy<0) { a = Math.atan2(Qy-y,Qx-x); if (Qy<0) a += Math.PI; Qx = x+Math.cos(a)*h; Qy = y+Math.sin(a)*h; Rx = Qx+(Qy-h)/(y-Py)*(Px-x); Ry = h; } else { Rx = Qx; Ry = Qy; } if (Qy==0) Rx = w-Qx; if (Rx<0) return; } } }

function reduce() {

   if (i) topRight (i-=speed,j,k);

}

var coords = new Object(); coords.across = 0; coords.down = 0; j = coords.across; k = coords.down;

var mouseListener = new Object();

mouseListener.onMouseMove = function(){ if (_xmouse >=305) { coords.across = 1; } if (_xmouse < 305) { coords.across = -1; } j = coords.across; k = coords.down; topRight(0,j,k); };

mouseListener.onMouseUp = function(){

	if (_xmouse >=305) {

coords.across = 1; i=559; }

  	if (_xmouse < 305) {

coords.across = -1; i=50; speed = -speed; } if (_ymouse <= 150) coords.down = -1; if (_ymouse > 150 && _ymouse <= 250) coords.down = 0; if (_ymouse > 250) coords.down = 1; };

Mouse.addListener(mouseListener);