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

From Organic Design wiki
(bottomLeft())
(bloody mess, only half of it, and there is a problem clicking twice)
Line 1: Line 1:
function bottomLeft() {
+
// Code for SWF e-book is liscenced under LGPL
 +
margin = 50;
 +
w = (Stage.width-margin*2)/2;
 +
h = Stage.height-margin*2;
 +
i = 0;
 +
speed = 8;
  
w = (width-margin*2)/2;
+
// This initialises the book page lines
h = height-margin*2;
+
createEmptyMovieClip("book",1);
ox = margin+w;
 
oy = margin+h; //reverses y
 
  
// Get mouse coords relative to book middle, reverses y co-ords
+
createEmptyMovieClip("right_next",2);
x = ox-_xmouse;
 
y = oy-_ymouse;
 
  
// constrain mouse to radius W
+
right_next.createTextField('content',0,0,0,50,50);
a = Math.atan2(y,x);
+
with (right_next.content) {
r = Math.sqrt(x*x+y*y);
+
    autosize = 'left';
if (r>w) r=w;
+
    selectable = false;
x = Math.cos(a)*r;
+
    _quality = 'BEST';
y = Math.sin(a)*r;
+
    border = false;
 +
    multiline = true;
 +
    wordWrap = false;
 +
    html = true;
 +
    embedFonts = true;
 +
    htmlText = '<font color="#ff0000">Hello right world!</font>';
 +
    }
  
// Calculate point Z and dy,dx of line C
+
// Draws page lines and fold line based on mouse position
dx = w-x;
 
dy = y;
 
Zx = x+dx/2;
 
Zy = y-dy/2;
 
  
// Calculate line D
+
function topRight(i,j,k) {
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 {
+
    // Get mouse coords relative to book middle
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;
 
}
 
  
// Draw page, reverses draw
+
    y= 60;
clear();
+
    if (i) {
lineStyle(3,0);
+
moveTo(ox,oy);
+
if (j == 1) {
lineTo(ox,oy-h);
+
        x = i-ox;
moveTo(ox+w,oy);
+
ox = margin+w;
lineTo(ox-Px,oy-Py);
+
oy = margin;
lineTo(ox-Rx,oy-Ry);
+
    //   if (y <-5) y = -5;
lineTo(ox-Rx,oy-h);
+
  if (x <= -255) y = 0;
lineTo(ox+w,oy-h);
+
//if (x >= 400) y =0;
 +
//    if (y >60) y = 60;
 +
if (y<60) y = 0;
 +
 
 +
 
 +
    // 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;
 +
        }
 +
 
 +
    // Draw page
 +
    clear();
 +
    lineStyle(1,0);
 +
    moveTo(ox,oy);
 +
    lineTo(ox,oy+h);
 +
lineTo(ox+w,oy+h);
 
lineTo(ox+w,oy);
 
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 (x < -254) return;
 +
 +
    }
 +
if (j == -1) {
 +
     
 +
//      if (y <-5) y = 0;
 +
//  if (y <= 10) y = 0;
 +
//if (x >= 400) y =0;
 +
  //  if (y >60) y = 60;
 +
 +
  ox = margin+w;
 +
    oy = margin;
 +
 +
    // Get mouse coords relative to book middle, reverse ox
 +
    x = ox-i;
 +
  if (x <= -255) y = 0;
 +
//  if (y<60) y = 0;
 +
 +
    // 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;
 +
        }
 +
 +
    // 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;
 +
 +
if (x < -254) return;
 +
}
 +
 +
trace(x);
 +
trace(y);
 +
/*trace(Px);
 +
trace (Py);
 +
trace (Rx);
 +
trace(Ry);
 +
trace(Qx);
 +
trace(Qy);*/
 +
trace(i);
 +
}
 +
}
 +
function reduce() {
 +
    if (i) topRight (i-=speed,j,k);
 +
    }
 +
 +
var coords = new Object();
 +
 +
var mouseListener = new Object();
 +
 +
//mouseListener.onMouseMove = function(){
 +
 +
 +
 
 +
// book.onMouseMove = topRight();
 +
 +
//};
 +
 +
mouseListener.onMouseUp = function(){
 +
coords.across = 0;
 +
coords.down = 0;
  
// Draw fold
+
  if (_xmouse >=305) {
beginFill(0xdddddd,100);
+
  coords.across = 1;
moveTo(ox-x,oy-y);
+
  i=Stage.width-margin;
lineTo(ox-Px,oy-Py);
+
  }
lineTo(ox-Rx,oy-Ry);
+
  if (_xmouse < 305) {
lineTo(ox-Qx,oy-Qy);
+
  coords.across = -1;
lineTo(ox-x,oy-y);
+
  i=margin;
endFill();
+
  speed = -speed;
 +
  }
 +
//  if (_ymouse <= 150) coords.down = -1;
 +
//  if (_ymouse > 150 && _ymouse <= 250) coords.down = 0;
 +
//  if (_ymouse > 250) coords.down = 1;
 +
j = coords.across;
 +
k = coords.down;
 +
       
 +
};
  
// orient left_next page
+
Mouse.addListener(mouseListener);
_root.left_next._x = ox-x;
 
_root.left_next._y = oy-y;
 
_root.left_next._rotation = -a*57.29578;
 
}
 

Revision as of 08:16, 21 December 2006

// Code for SWF e-book is liscenced under LGPL margin = 50; w = (Stage.width-margin*2)/2; h = Stage.height-margin*2; i = 0; speed = 8;

// This initialises the book page lines 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!';
   }

// Draws page lines and fold line based on mouse position

function topRight(i,j,k) {


   // Get mouse coords relative to book middle
   y= 60;
   if (i) {

if (j == 1) {

       x = i-ox;

ox = margin+w; oy = margin;

   //    if (y <-5) y = -5;
  if (x <= -255) y = 0;

//if (x >= 400) y =0;

//    if (y >60) y = 60;
if (y<60) y = 0;
  
  
   // 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;
       }
   // 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 (x < -254) return;

   }

if (j == -1) {

//       if (y <-5) y = 0;
//  if (y <= 10) y = 0;

//if (x >= 400) y =0;

 //   if (y >60) y = 60;
 ox = margin+w;
   oy = margin;
   // Get mouse coords relative to book middle, reverse ox
   x = ox-i;
  if (x <= -255) y = 0;
//   if (y<60) y = 0;
   // 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;
       }
   // 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;

if (x < -254) return; }

trace(x); trace(y); /*trace(Px); trace (Py); trace (Rx); trace(Ry); trace(Qx); trace(Qy);*/ trace(i); } } function reduce() {

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

}

var coords = new Object();

var mouseListener = new Object();

//mouseListener.onMouseMove = function(){


// book.onMouseMove = topRight();

//};

mouseListener.onMouseUp = function(){ coords.across = 0; coords.down = 0;

  if (_xmouse >=305) {

coords.across = 1; i=Stage.width-margin;

  }
  if (_xmouse < 305) {

coords.across = -1; i=margin; speed = -speed;

  }

// if (_ymouse <= 150) coords.down = -1;

//  if (_ymouse > 150 && _ymouse <= 250) coords.down = 0;
//  if (_ymouse > 250) coords.down = 1;
j = coords.across;
k = coords.down;
     			   

};

Mouse.addListener(mouseListener);