📄 asflip.as
字号:
this.pages.flip.fmask.page.y = this.pageN.y;
this.pages.flip.fmask.page.pf.x = this.pageN.pf.x;
this.pages.flip.fmask.page.pf.y = this.pageN.pf.y;
this.pages.flip.fmask.page.rotation = this.pageN.rotation;
}
/**
* //hardflip calc
* @param obj
* @param Mx
* @return
*/
private function scalc(obj:*,Mx:Number):void {
if(Mx<-pw){
Mx=-this.pw;
}
if(Mx>pw){
Mx=this.pw;
}
var a:Number = Math.asin( Mx/this.pw );
var rot:Number = a/AM/2;
var xs:Number = 100;
var ss:Number = 100*Math.sin( rotz*this.AM );
Mx = Mx/2;
var My:Number = Math.cos(a)*(this.pw/2)*(ss/100);
this.placeImg(obj, rot, ss, Mx, My)
this.pages.pgrad.visible = this.pages.flip.visible = true;
this.pages.pgrad.scaleX = Mx/100;
this.pages.pgrad.alpha = this.pages.flip.p3shadow.alpha = 1.0;
this.pages.flip.p3shadow.scaleX = -Mx/100;
this.pages.flip.p3shadow.x = 0;
this.pages.flip.p3shadow.y = 0;
this.pages.flip.p3shadow.rotation = 0;
this.pages.pgrad.x = 0;
this.pages.pgrad.y = 0;
this.pages.pgrad.rotation = 0;
}
/**
*
* @param j
* @param rot
* @param ss
* @param Mx
* @param My
* @return
*/
private function placeImg(j, rot:Number, ss:Number, Mx:Number, My:Number):void {
var m:Number = Math.tan( rot*this.AM );
var f:Number = Math.SQRT2/Math.sqrt(m*m+1);
var phxs:Number = 100*m;
var phRot:Number = -rot;;
var xs:Number = 100*f;
var ys:Number = 100*f;
j.ph.pic.rotation = 45;
j.ph.pic.scaleX = (phxs<0)? - xs/100: xs/100;
j.ph.pic.scaleY = ys/ss;
j.ph.rotation = phRot;
j.ph.scaleX = phxs/100;
j.scaleY = ss/100;
j.x = Mx;
j.y = My;
j.visible = true;
}
/**
*
* @param p1
* @param p2
* @param p3
* @param p4
*/
private function setPages(p1:int,p2:int,p3:int,p4:int) {
var p0:int = p1-2;
var p5:int = p4+2;
if(p0<0) {
p0=0;
}
if(p5>this.maxpage){
p5=0;
}
if(p1<0){
p1=0;
}
if(p2<0){
p2=0;
}
if(p3<0){
p3=0;
}
if(p4<0){
p4=0;
}
this.dispatchEvent(new FlipEvent(FlipEvent.FLIPPING,new FlippingEventArg(p1,p4,this.maxpage)));
trace("setpages ->"+p1+","+p2+","+p3+","+p4+","+this.maxpage);
this.pages.p1.page.pf.ph.removeChildAt(0);
this.pleft = this.pages.p1.page.pf.ph.addChildAt(PageFactory.Create(p1),0);
this.pages.p1.page.pf.ph.y = -this.ph/2;
if(this.transparency) {
this.pages.p0.page.pf.ph.removeChildAt(0)
this.pleftb = this.pages.p0.page.pf.ph.addChildAt(PageFactory.Create(p0),0);
this.pages.p0.page.pf.ph.y = -this.ph/2;
} else{
this.pages.p0.visible = false;
}
/* if(this.hflip) {
var sprite:Sprite=new sph();
sprite.name="sp2";
this.pages.flip.hfliph.removeChildAt(0)
var tm:*= this.pages.flip.hfliph.addChildAt(sprite,0);
tm.ph.pic.removeChildAt(0);
this.sp2 = tm.ph.pic.addChildAt(PageFactory.Create(p2),0);
this.sp2.y = -this.ph/2;
this.sp2.x = -this.pw/2;
this.sp2 = this.pages.flip.hfliph.getChildByName("sp2");
sprite=new sph();
sprite.name="sp3";
this.pages.flip.hfliph.removeChildAt(0)
tm = this.pages.flip.hfliph.addChildAt(sprite,0);
tm.ph.pic.removeChildAt(0)
this.sp3 = tm.ph.pic.addChildAt(PageFactory.Create(p3),0);
this.sp3.y = -this.ph/2;
this.sp3.x = -this.pw/2;
this.sp3 = this.pages.flip.hfliph.getChildByName("sp3");
} else {*/
var mc:*=pages.flip.hfliph.getChildByName("sp2");
if(mc!=null){
pages.flip.hfliph.removeChild(mc);
}
mc=pages.flip.hfliph.getChildByName("sp3");
if(mc!=null){
pages.flip.hfliph.removeChild(mc);
}
this.pages.flip.p2.page.pf.ph.removeChildAt(0);
this.sp2 = this.pages.flip.p2.page.pf.ph.addChildAt(PageFactory.Create(p2),0);
this.pages.flip.p2.page.pf.ph.y = -this.ph/2;
this.pages.flip.p3.page.pf.ph.removeChildAt(0)
this.sp3 = this.pages.flip.p3.page.pf.ph.addChildAt(PageFactory.Create(p3),0);
this.pages.flip.p3.page.pf.ph.y = -this.ph/2;
//}
this.pages.p4.page.pf.ph.removeChildAt(0);
this.pright = this.pages.p4.page.pf.ph.addChildAt(PageFactory.Create(p4),0);
this.pages.p4.page.pf.ph.y = -this.ph/2;
if(this.transparency) {
this.pages.p5.page.pf.ph.removeChildAt(0)
this.prightb = this.pages.p5.page.pf.ph.addChildAt(PageFactory.Create(p5),0);
this.pages.p5.page.pf.ph.y = -ph/2;
} else{
this.pages.p5.visible = false;
}
if(this.lcover) {
var lpl:int = transparency? p1-4: p1-2;
var lpr:int = transparency? p4+4: p4+2;
var limit:int = transparency? 0: -2;
if(lpl>limit) {
this.pages.pLL.page.pf.ph.removeChildAt(0)
this.pages.pLL.page.pf.ph.addChildAt(PageFactory.Create(2),0);
this.pages.pLL.page.pf.ph.y = -ph/2;
this.pages.pLL.visible = true;
} else{
this.pages.pLL.visible = false;
}
if(lpr<(this.maxpage-limit)) {
this.pages.pLR.page.pf.ph.removeChildAt(0)
this.pages.pLR.page.pf.ph.addChildAt(PageFactory.Create(this.maxpage-1),0);
this.pages.pLR.page.pf.ph.y = -this.ph/2;
this.pages.pLR.visible = true;
} else {
this.pages.pLR.visible = false;
}
}
}
private function resetPages():void {
this.setPages(this.page,0,0,this.page+1);
}
/**
* start auto flip!
*/
private function autoflip() {
//only when all conditions fits our needs...
if(!this.aflip && !this.flip && !this.flipOff && this.canflip) {
this.acnt = 0
var pmh:Number = this.ph/2;
//var aamp:Number = Math.random()*pmh-(this.ph/4);
var Mx:Number= this.gflip? (this.gdir*this.pw)/2: ((this.pages.mouseX<0)? -this.pw/2: this.pw/2);
var My:Number= this.pages.mouseY;
if(My>0 && My>pmh) My = pmh;
if(My<0 && My<-pmh) My = - pmh;
this.oy = this.sy = My;
this.ax = (this.pages.mouseX<0)? -pmh: pmh;
//page turnig style randomizing
this.ay = My*Math.random();
this.offs = -this.pw;
var hit = 0;
//已测;
if(Mx<0 && this.page>0) {
this.pages.flip.p3.x = 0;
this.hflip = (this.hcover && this.gskip)? (this.page==this.maxpage || this.gtarget==0): this.checkCover(this.page,-1);
if(!(this.preflip && this.hflip)) {
if(this.gskip){
this.setPages(this.gtarget,this.gtarget+1,this.page,this.page+1);
}
else{
this.setPages(this.page-2,this.page-1,this.page,this.page+1);
}
}
hit = -1;
}
//已测;
if(Mx>0 && this.page<this.maxpage) {
this.pages.flip.p3.x = this.pw;
this.hflip = (this.hcover && this.gskip)? (this.page==0 || this.gtarget==this.maxpage): this.checkCover(this.page,1);
if(!(this.preflip && this.hflip)) {
if(this.gskip){
this.setPages(this.page,this.gtarget,this.page+1,this.gtarget+1);
}
else{
this.setPages(this.page,this.page+2,this.page+1,this.page+3);
}
}
hit = 1;
}
if(this.hflip && this.preflip) {
hit = 0;
this.preflip = false;
return false;
}
if(hit) {
//anim.visible = false;
this.flip = true;
this.flipOff = false;
this.ox = this.sx = hit*this.pw;
this.pages.flip.mask=this.pages.masker;
//autoflip takes 10 frames to be done!!!
this.aadd = hit*(this.pw/(this.gflip? 5:10 ));
this.aflip = true;
this.pages.flip.fmask.x = this.pw;
if(this.preflip) {
this.oy = this.sy = (this.pages.mouseY<0)? -(this.ph/2): (this.ph/2);
}
this.r0 = Math.sqrt((this.sy+this.ph/2)*(this.sy+this.ph/2)+this.pw*this.pw);
this.r1 = Math.sqrt((this.ph/2-this.sy)*(this.ph/2-this.sy)+this.pw*this.pw);
this.pageN = this.pages.flip.p2.page;
this.pageO = this.pages.flip.p3;
this.oef();
return true;
}
} else{
return false;
}
}
/**
* get x,y reference points depending of turning style: manual/auto
*/
private function getm() {
if(this.aflip && !this.preflip) {
Mx = this.ax;
My = this.ay;
} else {
Mx = this.pages.mouseX;
My = this.pages.mouseY;
}
}
/**
*
* @param i
* @param skip
*/
private function gotoPage(i:int,skip:Boolean=false):void {
i = this.getPN(i);
this.gskip = skip;
if(i<0){
return;
}
var p:int = int(this.page/2);
var d:int = int(i/2);
if(p!=d && this.canflip && !this.gflip) { //target!=current page
if(p<d) { //go forward
this.gdir = 1;
this.gpage = d-p-1;
} else { //go backward
this.gdir = -1
this.gpage = p-d-1;
}
this.gflip = true;
if(this.gskip){
this.gtarget = d*2;
this.gpage = 0;
}
this.autoflip();
this.startsnd(0); //sound
} else{
this.gskip = false;
}
}
/**
* get the right page number
* @param i
*/
private function getPN(i:int):int {
if(i==0) return 0;
var find:Boolean = false;
for(var j:uint=1;j<=this.maxpage;j++) {
if(i==this.pageNumber[j]) {
i=j;
find = true;
break;
}
}
if(find) return i;
return -1;
}
/**
*
* @param i
* @return
*/
private function removePage(i:int):void {
trace("remove page "+i);
i = (Math.floor((i-1)/2)*2)+1;
this.removedPages.push(this.pageNumber[i], this.pageNumber[i+1]);
for(var j:uint=(i+2);j<=(maxpage+1);j++) {
this.pageOrder[j-2]=this.pageOrder[j];
this.pageCanTear[j-2]=this.pageCanTear[j];
this.pageNumber[j-2]=this.pageNumber[j];
}
trace("removed pages "+i+","+(i+1));
trace(this.removedPages.join(", "));
this.maxpage -= 2;
}
//Sound starter
private function startsnd(i):void {
}
private function mouseDownHander(event:MouseEvent):void {
if(this.flip && !this.aflip) {
this.flipOK = false;
if(this.sx<0 && this.pages.mouseX>0){
this.flipOK = true;
}
if(this.sx>0 && this.pages.mouseX<0){
this.flipOK = true;
}
this.flipOff = true;
this.flip = false;
} else if((this.flipOff || this.aflip || !this.canflip) && !this.preflip) {
trace("donothing");
} else {
var oox:Number = this.ox;
var ooy:Number = this.oy;
var osx:Number = this.sx;
var osy:Number = this.sy;
var hit:int = this.hittest();
if(hit) {
this.startsnd(1);
this.flip = true;
this.flipOff = false;
this.tear = false;
this.ox = this.sx = hit*this.pw;
if(this.preflip) {
this.aflip = this.preflip = false;
this.ox = oox;
this.oy = ooy;
this.sx = osx;
this.sy = osy;
}
this.pages.flip.mask=this.pages.masker;
this.mpx = this.pages.mouseX;
this.mpy = this.pages.mouseY;
this.oef();
}
}
}
/**
*
* @param event
* @return
*/
private function mouseUpHander(event:MouseEvent):void {
if(this.flip && !this.tear) {
if((Math.abs(pages.mouseX)>(pw-afa) && Math.abs(pages.mouseY)>(ph/2-afa) && Math.abs(pages.mouseX-mpx)<afa) || preflip) {
this.flip = false;
this.preflip = false;
this.autoflip();
this.startsnd(2);
} else if(!this.preflip) {
this.preflip = false;
this.flipOK = false;
if(this.sx<0 && this.pages.mouseX>0){
this.flipOK = true;
}
if(this.sx>0 && this.pages.mouseX<0){
this.flipOK = true;
}
this.flipOff = true;
this.flip = false;
if(this.flipOK){
this.startsnd(2);
}
}
}
}
/**
* 设置电子书数据来源;
* @param data
*/
public function set Data(data:Qxml){
}
public function prevPage():void {
this.gotoPage(this.page-2);
}
public function nextPage():void {
this.gotoPage(this.page+2);
}
public function center():void{
this.moveTo(int(siteCommon.W/2),int(siteCommon.H/2));
}
public function moveTo(locationX:int,locationY:int):void{
this.pages.x=locationX;
this.pages.y=locationY;
this.dispatchEvent(new FlipResize(FlipResize.RESIZE,this.pages));
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -