SWF e-book.as

From Organic Design
Jump to: navigation, search
Legacy.svg Legacy: This article describes a concept that has been superseded in the course of ongoing development on the Organic Design wiki. Please do not develop this any further or base work on this concept, this is only useful for a historic record of work done. You may find a link to the currently used concept or function in this article, if not you can contact the author to find out what has taken the place of this legacy item.

<as> // Code for [[SWF e-book]] is licensed under [[[[1]]]]

  1. include "debug.as"

margin = 50;

// This initialises the book page lines createEmptyMovieClip("book",1);

createEmptyMovieClip("right_next",2);

right_next.createTextField('content',100,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 world!'; }

// Draws page lines and folde line based on mouse position book.onMouseMove = function() {

w = (width-margin*2)/2; h = height-margin*2; ox = margin+w; oy = margin;

// Get mouse coords relative to book middle x = _xmouse-margin-w; y = _ymouse-margin;

// 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 (dx<=0 && dy<1) { Qx = Rx = w; Qy = Ry = 0; } if (dy*dy<20) { a = 0; Qx = x>w ? w : x; Qy = Ry = h; Rx = (Qx+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();

//echo("Px,Py:"+Px.toString()+","+Py.toString()+" Qx,Qy:"+Qx.toString()+","+Qy.toString()+" Rx,Ry:"+Rx.toString()+","+Ry.toString()); //echo("x,y:"+x.toString()+","+y.toString()+" dx,dy:"+dx.toString()+","+dy.toString());

// orient right_next page _root.right_next._x = ox+x; _root.right_next._y = oy+y; _root.right_next._rotation = a*57.29578;

}; </as>