惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
IT之家
IT之家
V
Visual Studio Blog
The Cloudflare Blog
博客园 - 司徒正美
Jina AI
Jina AI
博客园_首页
阮一峰的网络日志
阮一峰的网络日志
美团技术团队
S
SegmentFault 最新的问题
博客园 - 聂微东
人人都是产品经理
人人都是产品经理
T
Tailwind CSS Blog
罗磊的独立博客
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
博客园 - Franky
Last Week in AI
Last Week in AI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知

博客园 - 榛子树

一位88岁老人的生活秘诀 blog自定义模板的开发,请高手指点思路 flex特性 程序员容易得的病 CSS选择符 软件界面设计技巧 看了让人脑子打结的文章 冷漠的父亲教我做硬汉 值得珍藏的五十句话 爱真的需要勇气 Web2.0技术包括哪些内容? ASP.NET编程中的十大技巧 C# 编码规范和编程好习惯 Flex相册 很不错的滑动门菜单(div+css)提供下载 生活充满选择! 比尔盖茨的11条人生箴言 很实用的在线服务网站 共同分享Adobe illustrator的快捷键大全
flash非组件的翻书效果制作过程
榛子树 · 2007-03-30 · via 博客园 - 榛子树
 

flash非组件的翻书效果制作过程

作者:tiger_0309 | 来源:闪吧 

网上有好多这样的东西,但是大都用组件做成的,有的往往还有收费,我的这个不用组件,基本都是代码,但是结构很简单,一目了然,大家下载原文件就可以看出来,至于代码的含义我就不详细说了,我在这主要说一下替换自己的图片时候怎么样改写代码。
主场景一共有四帧代码:
第一帧代码:x1=50;y1=50
x2=250;y2=50
x3=450;y3=50
x4=50;y4=200
x5=250;y5=200
x6=450;y6=200
//这六个坐标点就是书摊开后的左上,中上,右上,左下,中下,右下点;其中左上点(x1,y1)是定位点,可以决定书在舞台的位置,然后其余的五个坐标就由你的图片大小决定,(x2-x1)和(x3-x2)相等是书的单页宽,同理(x5-x4)和(x6-x5)相等也是一样的道理,(y4-y1)和(y5-y2)和(y6-y3)相等是图片的高。
attachMovie("cover","p0",100)
//这是第一张
attachMovie("bottom","p19",120)
//这是最后一张
for(i=2;i<=20;i+=2){
        attachMovie("Page"+i,"p"+i,100+i/2)
}
//17这个数字是总图片数20-3得出
for(i=1;i<=17;i+=2){
//这个111的数字是根据上面Page20的level是110得出
        attachMovie("Page"+i,"p"+i,111+(i-1)/2)
}
//你的图片多少不一样,每张图片所在的level也很重要,这要你自己根据我的原文件的图片数目和你的比较后调整
//图片都是从库里调用,所以都要有链接标识符,得把所有的图片建成影片剪辑,在每个影片剪辑里都要把图片左对齐和底对齐到舞台,这点很重要,还有你要准备的图片必须是双数
//影片剪辑Page20里面画一个和图片大小一样的矩形,颜色和背景色一样,也要左对齐和第对齐到舞台
mask1._x=x6;
mask1._y=0
mask2._x=x6
mask2._y=0
//遮罩尽量做大一点,在主场景里各占一半
mask1._visible=false
mask2._visible=false
page=0
mouse2=0
x=x6
y=y6
xmouse=x6
ymouse=y6

第二帧代码:
flag=1
if(page>0){
        eval("p"+(page-1))._visible=true
        eval("p"+(page-1))._x=x4
        eval("p"+(page-1))._y=y4
        eval("p"+(page-1))._rotation=0
}
//20是我用的图片数字,你用多少改为多少
if(page<20){
        eval("p"+page)._visible=true
        eval("p"+page)._x=x5
        eval("p"+page)._y=y5
        eval("p"+page)._rotation=0
        eval("p"+(page+1))._visible=true
        eval("p"+(page+1))._x=x6
        eval("p"+(page+1))._y=y6
        eval("p"+(page+1))._rotation=0
        eval("p"+(page+1)).setMask(mask1)
        eval("p"+(page+2))._visible=true
        eval("p"+(page+2))._x=x5
        eval("p"+(page+2))._y=y5
        eval("p"+(page+2))._rotation=0
        eval("p"+(page+2)).setMask(mask2)
}
//这也要改
for(i=0;i<=20;i++){
        if(i<page-1||i>page+2){
                eval("p"+i)._visible=false
        }
}

第三帧代码:
xx=_xmouse
yy=_ymouse
if(Key.isDown(1)){
        mouse1=1
}
else{
        mouse1=0
}
if(mouse2==1&&mouse1==1&&((xx-x5)*(xx-x5)+(yy-y5)*(yy-y5)<=(x6-x5)*(x6-x5))&&((xx-x2)*(xx-x2)+(yy-y2)*(yy-y2)<=(x6-x5)*(x6-x5)+(y5-y2)*(y5-y2))){
        xmouse=xx
        ymouse=yy
}
if(mouse2==0&&mouse1==1){
//150是我主场景宽的一半左右,它的值决定你的鼠标的灵敏度,你可以根据你的场景来调整
        if(flag==1&&xx<150&&page>0){
                page-=2
                x=x4
                y=y4
                xmouse=x4
                ymouse=x4
                gotoAndPlay(2)
        }
}
if(mouse1==1){
        flag=0
        x=xmouse/5+x*4/5
        y=ymouse/5+y*4/5
}
if(mouse1==0){
//这个150也要改,和上面一样
        if(xmouse>150){
                x=x6/6+x*5/6
                y=y6/4+y*3/4
        }
        else{
                x=x4/6+x*5/6
                y=y4/6+y*5/6
        }
}

eval("p"+(page+1))._x=x
eval("p"+(page+1))._y=y
if(flag==0&&page<20&&Math.abs(x-x4)+Math.abs(y-y4)<1){
        page+=2
        x=x6
        y=y6
        xmouse=x6
        ymouse=y6
        flag=1
        gotoAndPlay(2)
}
if(Math.abs(x-x6)+Math.abs(y-y6)<0.5){
        a=0
        flag=1
}
else{
        a=Math.atan2(y6-y,x6-x)
}
eval("p"+(page+1))._rotation=2*a*180/Math.PI
mask1._x=(x+x6)/2
mask1._y=(y+y6)/2
mask1._rotation=a*180/Math.PI
mask2._x=(x+x6)/2
mask2._y=(y+y6)/2
mask2._rotation=a*180/Math.PI
mouse2=mouse1
第四帧代码:
gotoAndPlay(3);