超级组合秀
·汇聚原创力量—国家数字娱乐网正式启动
·森田正则老师新连载秋天正式上档
·人物风之风助终于堂堂“复活”
·超女漫画即将出版 漫画家炎炎执笔
·《夏特尔家·家族的肖像》即将发售
·《七剑·序章》漫画热动暑假全国漫展
4332漫画
·松本零士
·动漫声优
·尾田荣一郎作品
·颜开作品欣赏
·卜桦作品欣赏
·韩美林作品欣赏
·天広直人作品欣赏
·天広直人作品欣赏
当前位置: 动漫学院 > 闪客学堂 > 正文
水蓝闪族实例课堂实录1
http://college.51kedou.com 2005年09月07日 12:36 闪吧

本群的课程包括AS基础,实例两部分,希望达到帮助初学者学习AS的目的,同样希望成为各位闪客们交流的平台

第一讲:A3菜单 主讲:爱奶茶の猫
A3菜单实例

制作步骤
1、制作各个分单元动画
2、编写AS程序
3、测试程序

制作各分单元动画
该动画主场景为760*75,背景自定~
首先,在CTRL+F8,创建新的影片剪辑,命名为BG,将其拖入场景中,将影片剪辑命名为BG;
然后分别常见主菜单动画:
CTRL+F8创建影片剪辑,设置如下:

为菜单设计动画(变大效果)
根据需要设计多个菜单影片剪辑
设计竖线(方法同上,具体参见源文件)
设计按钮背景

程序设计

onClipEvent (load) {
//参数设置
m_length = 110;
// 最大长度
n_length = 88;
// 最小长度
def_length = 90;
// 默认长度
num_of_menu = 8;
// 菜单数量
system_on = false;
//鼠标指向状态标识
accel = 10;
slow = 1.30;
//弹性系数

myLine = new Array();
myMenu = new Array();
but = new Array();
//生成菜单数组,和线数组

//生成菜单
//将库中的菜单加载入场景
//载入竖线
for (i=1; i<=num_of_menu+1; i++)
{
this.attachMovie("line", "line"+i, i*100); //将库中的Line载入场景
myLine[i] = eval(this["line"+i]); //将引入文件数组化
myLine[i]._y = 0;
myLine[i]._x = (i-1)*def_length; //定义位置
myLine[i].active = false; //定义激活状态
myLine[i].targetPos = 0;
myLine[i].vx=0;
if (i<=num_of_menu)
{
myLine[i].menutitle.title = "menu"+i; //生成主菜单热区
myLine[i].attachMovie("bt", "bt"+i, 2); //引入场景
}
}
//载入菜单
for(i=1;i<=num_of_menu;i++)
{
this.attachMovie("image"+i, "image"+i, i*10); //将库中的m载入场景
myMenu[i]=eval(this["image"+i]);
myMenu[i]._y=0;
myMenu[i]._x=(i-1)*def_length+5;
this.attachMovie("bm"+i,"bm"+i,112*i);
but[i]=eval(this["bm"+i]);
but[i]._x=0;
but[i]._y=35;
}

function targetCheck()
{
if (system_on) //鼠标若在按钮上
{
temp = 30;
} else
{
temp = 25;
}
//判断鼠标坐标
if (this._ymouse>0 && this._ymouse0 && this._xmouse<720) //检测鼠标是否在6个按钮之内
{
if (this._ymouse<30)
{
system_on = true; //设置状态
for (i=1; i<=num_of_menu; i++) //检查指向的按钮
{
if (this._xmouse>myLine[i]._x && this._xmouse{
this["line"+(i+1)].active = true;
}
else
{
this["line"+(i+1)].active = false;
}
}
}
}
else
{
system_on = false;
}
}

function lineMove() //边线移动
{
if (system_on)
{
for (i=2; i<=num_of_menu; i++) //去处首尾边线
{
if (myLine[i].active)
{
myLine[i].targetPos = this["line"+(i-1)].targetPos+m_length;
}
else
{
myLine[i].targetPos = this["line"+(i-1)].targetPos+n_length;
}
myLine[i].vx=(myLine[i].vx+(myLine[i].targetPos-myLine[i]._x)/accel)/slow;
//弹性公式~
myLine[i]._x += myLine[i].vx;
}
}
else
{
for (i=2; i<=num_of_menu; i++)
{
myLine[i].targetPos = this["line"+(i-1)].targetPos+def_length;
myLine[i].vx (myLine[i].vx+(myLine[i].targetPos-myLine[i]._x)/accel)/slow;
myLine[i]._x += myLine[i].vx;
}
}
}
function menuMove()
{

for (i=1; i<=num_of_menu; i++)
{
if (system_on && myLine[i+1].active)
{
if (myMenu[i]._currentFrame == 1)
{
for(j=1;j<=num_of_menu;j++)
but[j].gotoAndStop(1);
myMenu[i].gotoAndPlay(2);
but[i].gotoAndPlay(2);
}
}
else
{
myMenu[i].gotoAndStop(1);
}
myMenu[i]._x = myLine[i]._x+5; //使菜单和线一起做弹性运动
}
}
}
onClipEvent (enterFrame)
{
targetCheck();
lineMove();
menuMove();
}

说明:
1、主菜单变大的大小是有限制的!
在没有变化前各个菜单平均分配宽度:90*6=540
变化后各个菜单不平均分配宽度:变大菜单 110 其余 88 88*5+110=550
2者基本相同
2、程序中定义了许多变量并不市对象自带的!而是我自定义的!请大家分清楚!
3、代码结构
targetCheck(); 判断当前鼠标所处位置!并根据位置设置相应的代码
lineMove(); 边线移动处理程序
menuMove(); 菜单移动处理程序
发表评论】 【关闭窗口
相关链接:
·漫漫学画 2 [2005-09-07]
· 大连服装艺术学院 [2005-09-07]
·日本同人志十问十答 (8) [2005-09-07]
·日本同人志十问十答 (7) [2005-09-07]
·清华大学美术学院 [2005-09-05]
· 北京电影学院动画学院 [2005-08-31]
·上海电影艺术学院 [2005-08-31]
·编 辑 动 画 1 [2005-08-31]
·制作渐变动画 [2005-08-31]
· 上海电影艺术学院 [2005-08-31]
首页图酷动漫宝典MiNi游戏动漫人动漫学院艺术大赛动漫社区
关于我们联系我们招聘网站地图友情链接
Copyright@2004-2005 51kedou.com Inc. All rights reserved.
中国动漫游戏艺术大赛组委会 版权所有
本网站已通过ICP认证
备案序号:京ICP备05045914号