主题:  请问怎样使FLASH的翻书效果能加多几页?

835000

职务:普通成员
等级:1
金币:0.0
发贴:3
注册:2004/9/22 17:11:23
#12004/9/22 17:35:37
本站置顶的动画中下载了一个翻书效果的动画
感觉效果特棒,想多回几页
看了代码一头雾水
特发来请知情者给予指点
代码如下:

//
// P i X E L W i T . C O M
//
stop();
//
//
//
//
//
//________________________C O M M E N T S
//
// Thought to self:
// Try naming functions according to the events which preclude them
//
//
// A page flip involves 3 pieces of paper
// 2 bottom static pages (which lay flat at all times)
// and 1 active flipping page (which has 2 sides)
// Four pages total, 2 static/stationary and 2 flipping
// The flipping page can be on the left or right side
// The top image on the flipping page doesn't actually move
//
//
//
//
//
//_________________________V A R I A B L E S
//
// Store a constant reference to this clip on the main timeline so
// clip can be referenced from any other timeline as _level0.pagesAbs
_level0.pagesAbs = this;
// Set page dimensions
var pageWi = 200;
var PageHi = 300;
var pageWiHi = pageWi+pageHi;
var pivotY = pageHi/2+pageWi;
var pageColor = 0xFFFFE5;
// "dir" equals either 1 or -1 and determines if you
// are flipping forward or backward through the book
var dir = 1;
// "flipPage" is the # "between" the two flipping page #'s
var flipPage = 1.5;
// "curPage" is the # between the two currently viewed page #'s
var curPage = .5;
// "maxPages" should be an even number
var maxPages = 8;
// "autoStep" percentage of page width determining step size when auto-closing
var autoStep = .05;
// "dragging" is true if you are dragging the page
var dragging = false
//
//
//
//
//
//________________________________R U N O N C E
//
// Place Left and Right page flip Buttons
this.attachMovie ("cornerButton", "RButton", 11);
with (RButton) {
    _x = pageWi;
    _y = -pageWi;
}
this.attachMovie ("cornerButton", "LButton", 12);
with (LButton) {
    _x = -pageWi;
    _y = -pageWi;
    _xscale = -100;
}
//
//
// Build pages for first time
pageInit (flipPage, dir);
// Drop down to appear centered
_y+=pivotY;
//
//
//
//
//
// _____________________B U I L D F U N C T I O N S
//
// Create a left-aligned page-sized solid fill raised one pagewidth
function makePage (targ, xQuadrant) {
    with (targ) {
        beginFill(pageColor, 100);
        moveto(0, -pageWi);
        lineto(0, -pageWiHi);
        lineTo(xQuadrant*pageWi, -pageWiHi);
        lineTo(xQuadrant*pageWi, -pageWi);
        endFill();
    }
}
//
//
// Create a left-aligned page-sized shadow gradient raised one pagewidth
// Shade is used to add depth to stationary pages
function makeShade (targ, xQuadrant) {
    with (targ) {
        // Defines gradient used as shadow overlay
        var colors = [0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000];
        var alphas = [ 40, 25, 15, 5, 0, 1, 6];
        var ratios = [ 0, 1, 17, 51, 89, 132, 255];
        var matrix = { matrixType:"box", x:0, yageWi, w:xQuadrant*pageWi, hageHi, r:0};
        beginGradientFill( "linear", colors, alphas, ratios, matrix );
        moveto(0, -pageWi);
        lineto(0, -pageWiHi);
        lineTo(xQuadrant*pageWi, -pageWiHi);
        lineTo(xQuadrant*pageWi, -pageWi);
        endFill();
    }
}
//
//
// create a bottom-left aligned shadow gradient
// for animated shadows
function makeShadow (targ, xQuadrant) {
    with (targ) {
        // Defines gradient used as shadow overlay
        var colors = [0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000];
        var alphas = [ 40, 25, 15, 5, 0, 1, 6];
        var ratios = [ 0, 1, 17, 51, 89, 132, 255];
        var maxLength = Math.sqrt((pageWi*pageWi)+(pageWIHi*pageWiHi));
        var matrix = { matrixType:"box", x:0, y:-maxLength, w:xQuadrant*pageWi, h:maxLength-pageWi, r:0};
        beginGradientFill( "linear", colors, alphas, ratios, matrix );
        moveto(0, -pageWi);
        lineto(0, -maxLength);
        lineto(xQuadrant*pageWi, -maxLength);
        lineTo(xQuadrant*pageWi, -pageWi);
        endFill();
    }
}
//
//
// Place Stationary Pages
function setStationary() {
// Place the "S"tationary "L"eft "P"age
createEmptyMovieClip("SLPage", 1);
    if (flipPage!=1.5) {
        makePage (SLPage, -1)
        SLPage.attachMovie("print"+(flipPage-1.5), "Print", 1);
        with (SLPage.Print) {
            _x = -pageWi/2;
            _y = -pivotY;
        }
    }
    // Place the "S"tationary "R"ight "P"age
createEmptyMovieClip("SRPage", 2);
    if (flipPage!=maxPages-.5){
        makePage (SRPage, 1)
        SRPage.attachMovie("print"+(flipPage+1.5), "Print", 1);
        with (SRPage.Print) {
            _x = pageWi/2;
            _y = -pivotY;
        }
    }
    // Place shade on page not being revealed
    var targ = dir>0 ? SLPage : SRPage;
    targ.createEmptyMovieClip("Shade", 2);
    makeShade(targ.Shade, -dir);
}
//
//
// Place the Flipping Pages
function setFlipping() {
    var targ;
    // Place the "F"lipping "T"op "P"age
    createEmptyMovieClip("FTPage", 3);
    makePage (FTPage, dir)
    with (FTPage) {
        attachMovie("print"+(flipPage-dir*.5), "Print", 1);
        with (Print) {
            _x = dir*pageWi/2;
            _y = -pivotY;
        }
    }
    FTPage.createEmptyMovieClip("Shade", 2);
    makeShade(FTPage.Shade, dir);
    // Place the "F"lipping "B"ottom "P"age
    createEmptyMovieClip("FBPage", 4);
    makePage (FBPage, -dir)
    FBPage.attachMovie("print"+(flipPage+dir*.5), "Print", 1);
    with (FBPage.Print) {
        _x = -dir*pageWi/2;
        _y = -pivotY;
    }
    FBPage._rotation = dir*90;
}
//
//
// Creates Shadows which follow edge of transition
function setShadows() {
    var targ;
    // Place shadow on the "F"lipping page
    this.createEmptyMovieClip("FShadow", 5);
    makeShadow(FShadow, -dir);
    FShadow._rotation = dir*45;
    // Place shadow on the "S"tationary page
    this.createEmptyMovieClip("SShadow", 6);
    makeShadow(SShadow, dir);
    SShadow._rotation = dir*45;
}
//
//
// Create Masks to hide everything
function makeMasks() {
    // Create mask for Flipping Bottom Page Mask
    this.createEmptyMovieClip("FBPageMask", 7);
    with (FBPageMask) {
        beginFill(0x005500, 100);
        lineto(pageWiHi, -PageWiHi);
        curveto(0, -2*PageWiHi, -pageWiHi, -pageWiHi);
        endFill();
    }
    // Create mask for Flipping Top Page
    FBPageMask.duplicateMovieClip("FTPageMask", 8);
    // Create mask for Shadow on the Flipping Page
    this.createEmptyMovieClip("FShadowMask", 9);
    makePage (FShadowMask, -dir);
    FShadowMask._rotation = dir*90;
    // Create mask for Shadow on Stationary Page
    this.createEmptyMovieClip("SShadowMask", 10);
    makePage(SShadowMask, dir);
    FBPage.setMask(FBPageMask);
    FTPage.setMask(FTPageMask);
    FShadow.setMask(FShadowMask);
    SShadow.setMask(SShadowMask);
}
//
//
// Hide pages before page1 and after Last Page
function limitBook () {
    if (flipPage==1.5) {
        SLPage._visible = 0;
        LButton._visible = 0;
        SShadow._visible = 0;
        if (dir==1) {
            FTPage.Shade._alpha = 67;
            SShadow._visible = 1;
        }else {
            FShadow._alpha = 67;
        }            
    } else if (flipPage==maxPages-.5) {
        SRPage._visible = 0;
        RButton._visible = 0;
        SShadow._visible = 0;
        if (dir==-1) {
            FTPage.Shade._alpha = 67;
            SShadow._visible = 1;
        } else {
            FShadow._alpha = 67;
        }
    }        
}
//
//
// How to position all pages needed for a page flip
// calls all functions listed above
function pageInit (cp, d) {
    flipPage = cp;
    dir = d;
    //trace ("flip page = "+flipPage+" dir = "+dir);
    setStationary();
    setFlipping();
    setShadows();
    makeMasks();
    limitBook ();
}
//
//
//
//
//
//__________________F L I P P I N G F U N C T I O N S
//
// How to adjust position of flipping page
// based on a value between 0 and 1
function flip(curVal) {
    var rot = dir*45*curVal;
    FBPageMask._rotation = FTPageMask._rotation = -rot;
    FBPage._rotation = FShadowMask._rotation = (dir*90)-rot*2;
    FShadow._rotation = SShadow._rotation=(dir*45)-rot;
}
//
//
// how to determine position of flipping page
// returns a value between 0 and 1
// zero being no-flip and one being full-flip
function getPageRatio () {
    if (dragging) {
        // if dragging page position is determined by mouse position
        // the 20 helps advance the turning page when the button is pressed
        pageRatio = -dir*(_xmouse-startX-dir*20)/(2*pageWi);
    } else {
        // if not dragging; auto increment page towards final position
        pageRatio>2/3 ? pageRatio += autoStep : pageRatio -= autoStep;
    }
    // if out of bounds
    if (pageRatio<=0) {
        pageRatio = 0;
        if (!dragging) {
            flipDone();
        }
    } else if (pageRatio>=1) {
        pageRatio = 1;
        if (!dragging) {
            flipDone();
        }
    }
    return (pageRatio);
}
//
//
//
//
//
//_____________C O N T R O L I N G F U N C T I O N S
//
// What to do when you press a page flipping button
function startFlip (dir) {
    pageInit (curPage+dir, dir);
    startX = dir*pageWi;
    dragging = true;
    RButton._alpha=0;
    Lbutton._alpha=0;
    this.onEnterFrame = function () {
        flip(getPageRatio());
    }
}
//
//
// what to do when page is released
function flipRelease () {
    dragging = false;
    if (pageRatio>2/3) {
        curPage+=2*dir;
    }
}
//
//
// What to do when pages are done flipping
function flipDone () {
    this.onEnterFrame = null;
    RButton._alpha = 100;
    LButton._alpha = 100;
    if (curPage!=.5){
        LButton._visible = 1;        
    }
    if (curPage!=maxPages+.5){
        RButton._visible = 1;
    }
    // Delete hidden pages to save resources
    if (pageRatio==0) {
        FShadow.removeMovieClip();
        FShadowMask.removeMovieClip();
        SShadow.removeMovieClip();
        SShadowMask.removeMovieClip();
        FBPage.removeMovieClip();
        FBPageMask.removeMovieClip();
        if (dir==1) {
            SRPage.removeMovieClip();
        } else {
            SLPage.removeMovieClip();
        }            
    } else {
        FTPage.removeMovieClip();
        if (dir==-1) {
            SRPage.removeMovieClip();
        } else {
            SLPage.removeMovieClip();
        }
    }
    FTPageMask.removeMovieClip();
}
//
//
// assign functions to button events
LButton.onPress = function() {
    startFlip (-1);
}
LButton.onReleaseOutside = function () {
    flipRelease();
}
LButton.onRelease = function () {
    flipRelease();
}
RButton.onPress = function() {
    startFlip (1);
}
RButton.onReleaseOutside = function () {
    flipRelease();
}
RButton.onRelease = function () {
    flipRelease();
}
//
//
//
//
//

请指点,我要加上5页
应分别修改哪些参数?



蚊子嗡嗡

职务:普通成员
等级:1
金币:0.0
发贴:4
注册:2004/6/5 10:09:23
#22004/10/3 8:53:24
我也好想知道

大侠们支一招吧



ailsa

职务:普通成员
等级:1
金币:0.0
发贴:2
注册:2004/10/6 23:53:17
#32004/10/6 23:55:23
www.xjbip.cn/school/show.asp?aid=363
看一下,一定可以帮助你的.