用Flash打造迷你Winamp播放器(2)
- 2022-04-01
- 来源/作者: 不详 / 佚名
- 1 次浏览
给退出按钮添加脚本:
on (release) {
action = "stop";
scale = "0";
down = "9";
status = "stoped tr. " add playtrack;
//和播放按钮相似,当退出后,也对同样的变量进行赋值
tellTarget ("tracks") {
gotoAndStop("stop");
}//停止播放音乐
play();
}
给下一首按钮添加脚本:
on (release) {
if (Number(playtrack)
playtrack = Number(playtrack)+1;
//如果播放曲目没有到达最后一首的化,将曲目信息值增一
status = "playing tr. " add playtrack;//同时设置当前播放状态
if (action eq "play") {
tellTarget ("tracks") {
stopAllSounds();
gotoAndStop("track" add ../:playtrack);
}//如果当前处于播放状态,则先停止所有声音,然后再开始播放下//一首所指定的音乐
gotoAndPlay("play");
} else {
status = "stoped tr. " add playtrack;
}
}
}
7.因为播放器在播放中随机的显示光谱柱,所以需要先制作两个光谱单元,然后通过Action动作脚本对其跳动的方式和频率进行控制。所以分别新建两个影片剪辑,命名为graph bar和graph dot,绘制后如图10所示:
图10
将上面两个光谱单元放到播放界面靠左的位置,分别命名为line和topdot,播放中因为可以显示播放歌曲的信息,所以还需要一个动态文本框来实现。使用文本工具在播放按钮右边绘制两个文本框,其中靠右边的设置为动态文本框,并设置其变量名为status,如图11所示:
图11
8.最后就需要添加关键的Actinon动作脚本了,回到图层Avtions,在第1帧添加如下Action:
down = 3;
scale = 99;
pause = "no";
playtrack = 1;
action = "play";
maxtracks = 3;
//设置一系列变量
在第2帧添加如下Action:
if (action eq "play") {
actiontxt = "playing tr. ";
status = actiontxt add playtrack;
tellTarget ("tracks") {
gotoAndStop("track" add ../:playtrack);
}//如果当前处于播放状态,则设置当前曲目信息文本框中的值为所播曲目,并且播//放当前的曲目
gotoAndPlay("play");
} else {
scale = "0";
down = "9";
actiontxt = "stoped tr. ";
status = actiontxt add playtrack;
gotoAndStop("play");
}//如果当前播放器不处于播放状态,则设置当前状态为播放
在第3帧添加如下Action:
setProperty("line", _visible, "0");
setProperty("topdot", _visible, "0");
//首先将光谱柱单元设置为不可见
maxlines = 40;//此变量值代表所复制出光谱柱的最大个数
alpha = 100/maxlines;// 光谱柱的透明度
atmp = 20;
i = 0;
//设置一系列变量
while (Number(i)<=Number(maxlines)) {
//变量I从0开始,如果没有到达40,则循环进行下面的脚本
newy = 1+Number(random(scale));
duplicateMovieClip("line", "line" add i, 100+Number(i));
//复制出长条形的光谱柱,依此命名为line+I的形式
setProperty("line" add i, _x, Number(-120)+Number(i*7));
setProperty("line" add i, _y, 25);
setProperty("line" add i, _yscale, newy);
setProperty("line" add i, _alpha, atmp);
//上面四句分别设置所复制出的光谱拄的坐标,透明度和纵向缩放比率
duplicateMovieClip("topdot", "topdot" add i, 200+Number(i));
//复制光谱柱上面的小方块,依此命名为topdot+I的形式
setProperty("topdot" add i, _x, Number(-120)+Number(i*7));
setProperty("topdot" add i, _y, 23-newy/2);
set("doty" add i, newy);
setProperty("topdot" add i, _alpha, atmp);
//设置复制出的小方块的坐标和透明度值
if (Number(i)>=Number(maxlines/2)) {
atmp = atmp-alpha;
} else {
atmp = Number(atmp)+Number(alpha);
}
i = Number(i)+1;
}//上面的脚本作用为复制40个光谱柱单元,然后分别设置其相应属性,使其能排列成一排
在第4帧添加如下Action:
i = 0;
//初始化变量I的值为0
while (Number(i)<=Number(maxlines)) {
newy = 1+Number(random(scale));
//当I的值小于前面设置的变量maxline时,也就是还没有设置所有的光谱柱,下面就//将分别进行设置
setProperty("line" add i, _yscale, newy);//设置每一个光谱柱的垂直缩放比例为newy,
if (newy >= eval("doty" add i)) {
set("doty" add i, newy);
//如果垂直缩放比例的值
} else {
set("doty" add i, eval("doty" add i)-down);
}
setProperty("topdot" add i, _y, 23-Eval("doty" add i)/2);
i = Number(i)+1;
}
//三四帧主要用来实现播放器中的光谱柱长度在纵向随机变化的效果
在第5帧添加如下Action:
gotoAndPlay(_currentframe-1);
//循环执行第4帧
最后的时间轴如图12所示:
图12
9.到这里,整个播放器就基本上完成了,现在可以试着发布一下,看看效果怎么样。不过在结束之前,我们再来完美一下这个播放器,给她添加上界面伸缩功能,也就是可以在精简面板和完整面板之间切换,和真正的Winamp很类型。
新建一个影片剪辑,命名为player,进入元件的编辑区后,添加两个图层,在上面的图层中绘制一个矩形,然后将其转换为影片剪辑元件,分别在第1帧和第15帧插入关键帧,设置帧标签为full和min,分别代表完整播放面板和精简播放面板,然后给两帧都添加Action:stop();.
将元件mainpanel拖到下面的图层中,分别在第15帧和第30帧插入一个关键帧,回到第15帧,将元件mainpanel向上拖动一段距离,直到只有播放控制按钮留在矩形框中为止,如图13所示:
图13
最后只要建立第1到第15,第16到第30帧之间的运动过渡动画即可。然后将上面的图层设置成遮罩层,就实现了面板伸缩的功能。
最后的任务就是将元件player拖到场景中,然后发布最后的影片,看看实际效果如何。倾听着自己动手制作的播放器,是不是别有一番风味。