Difference between revisions of "Bookclick.as"

From Organic Design wiki
m
m
Line 1: Line 1:
 
// Code for [[[[SWF e-book]]]] is liscenced under [[[[http://www.gnu.org/copyleft/lesser.html|LGPL]]]]
 
// Code for [[[[SWF e-book]]]] is liscenced under [[[[http://www.gnu.org/copyleft/lesser.html|LGPL]]]]
 
margin = 50;
 
margin = 50;
 
+
w = (Stage.width-margin*2)/2;
 +
h = Stage.height-margin*2;
 +
ox = margin+w;
 +
oy = margin;
 +
i = 0;
 +
speed = 12;
 
// This initialises the book page lines
 
// This initialises the book page lines
 
createEmptyMovieClip("book",1);
 
createEmptyMovieClip("book",1);
  
function topRight() {
+
function pageTurn(i) {
 
 
    w = (width-margin*2)/2;
 
    h = height-margin*2;
 
    ox = margin+w;
 
    oy = margin;
 
 
 
    // Set mouse co-ords at top right edge
 
   
 
    x = width;
 
    y = 0;
 
 
 
    // One iteration per pixel width
 
    for (i=0; i<600; i++) {
 
 
 
    // 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(3,0);
 
    moveTo(ox,oy);
 
    lineTo(ox,oy+h);
 
    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();
 
  
     // Decrement x by one pixel
+
x = i-ox;
     x = x-1;
+
y = 0;
    }
+
     if (x>w) x = w;
 +
     if (x<-w) x = -w;
 +
dx = w-x;
 +
Zx = x+dx/2;
  
    }
+
// Draw page
var mouseListener = new Object();
+
clear();
 +
lineStyle(3,0);
 +
moveTo(ox,oy);
 +
lineTo(ox,oy+h);
 +
moveTo(ox-w,oy);
 +
lineTo(ox+Zx,oy);
 +
lineTo(ox+Zx,oy+h);
 +
lineTo(ox-w,oy+h);
 +
lineTo(ox-w,oy);
  
mouseListener.onMouseMove = topRight;
+
beginFill(0xdddddd,100);
 +
moveTo(ox+x,oy);
 +
lineTo(ox+Zx,oy);
 +
lineTo(ox+Zx,oy+h);
 +
 +
lineTo(ox+x,oy+h);
 +
lineTo(ox+x,oy+y);
 +
endFill();
 +
}
 +
function reduce() {
 +
if (i) pageTurn (i-=speed);
 +
}
  
Mouse.addListener(mouseListener);
+
//book.onMouseMove = function(){
 +
//i= _xmouse;
 +
//};
 +
book.onMouseUp = function () {
 +
i=609;
 +
}

Revision as of 01:59, 20 December 2006

// Code for [[SWF e-book]] is liscenced under [[[[1]]]] margin = 50; w = (Stage.width-margin*2)/2; h = Stage.height-margin*2; ox = margin+w; oy = margin; i = 0; speed = 12; // This initialises the book page lines createEmptyMovieClip("book",1);

function pageTurn(i) {

x = i-ox; y = 0;

   if (x>w) x = w;
   if (x<-w) x = -w;

dx = w-x; Zx = x+dx/2;

// Draw page clear(); lineStyle(3,0); moveTo(ox,oy); lineTo(ox,oy+h); moveTo(ox-w,oy); lineTo(ox+Zx,oy); lineTo(ox+Zx,oy+h); lineTo(ox-w,oy+h); lineTo(ox-w,oy);

beginFill(0xdddddd,100); moveTo(ox+x,oy); lineTo(ox+Zx,oy); lineTo(ox+Zx,oy+h);

lineTo(ox+x,oy+h); lineTo(ox+x,oy+y); endFill(); } function reduce() { if (i) pageTurn (i-=speed); }

//book.onMouseMove = function(){ //i= _xmouse; //}; book.onMouseUp = function () { i=609; }