对上一篇文章(如何制作以旋转菜单为操作形式的相册?)的总结!
最后我们进行一下重点代码及技术的点评:
整个程序编写下来最重要的便是
//以下内容用以实现文本信息的更换
function photoMove(a, b)
{
var _l1 = this;//定义矩阵_l1
_l1["mc" + a].scale = 130;//修改矩阵大小为120,可修改
delete bei_b["onEnterFrame"];//释放已用内存
bei_a.gotoAndStop(b + 1);
bei_b.gotoAndStop(a + 1);
bei_a._visible = true;
bei_b._visible = true;
bei_a._alpha = 100;
bei_b._alpha = 100;
bei_a.onEnterFrame = function ()
{
var _l1 = this;
_l1._alpha = _l1._alpha - 10;
if (_l1._alpha <= 0)
{
delete _l1["onEnterFrame"];
_l1._visible = false;
} // end if
};
} // End of the function
function photoMove(a, b)
{
var _l1 = this;//定义矩阵_l1
_l1["mc" + a].scale = 130;//修改矩阵大小为120,可修改
delete bei_b["onEnterFrame"];//释放已用内存
bei_a.gotoAndStop(b + 1);
bei_b.gotoAndStop(a + 1);
bei_a._visible = true;
bei_b._visible = true;
bei_a._alpha = 100;
bei_b._alpha = 100;
bei_a.onEnterFrame = function ()
{
var _l1 = this;
_l1._alpha = _l1._alpha - 10;
if (_l1._alpha <= 0)
{
delete _l1["onEnterFrame"];
_l1._visible = false;
} // end if
};
} // End of the function
//以下用以实现各按钮的链接功能
auto = true;
move = true;
Button.prototype.onRollOver = function ()
{
auto = false;
};
Button.prototype.onRollOut = Button.prototype.onReleaseOutside = function ()
{
auto = true;
};
Button.prototype.onRelease = function ()
{
if (this._parent.n != undefined)
{
_root.photo.gotoAndStop(url_array[this._parent.n]);
} // end if
};
bt.useHandCursor = false;
var url_array = [];
url_array.push("2");
url_array.push("3");
url_array.push("4");
url_array.push("5");
url_array.push("6");
url_array.push("7");
url_array.push("8");
url_array.push("9");
url_array.push("10");
url_array.push("11");
//注意,有几个菜单项,就得写几个url_array代码******
var r = 0;
var max = url_array.length;
var bj_x = 150;
var bj_y = 50;
var scale = 50;
var pi2 = 6.283185;
var s_a = 0;
var s_b = 0;
var rs = pi2 / max;
bei_a.stop();
bei_b.stop();
var i = 0;
while (i < max)
{
mca.duplicateMovieClip("mc" + i, i, {n: i, ax: 0, scale: 100}).gotoAndStop(i+1);
i++;
} // end while
mca.swapDepths(10000);
mca.removeMovieClip();
//注:以下代码实现的是菜单按钮可以旋转起来的功能
onEnterFrame = function ()
{
if (auto)
{
r = (r - 0.010000 + pi2) % pi2;
}
else
{
r = (r + _xmouse / 5000 + pi2) % pi2;
} // end if
s_a = (max - Math.round(r / rs) % max) % max;
if (s_a != s_b)
{
photoMove(s_a, s_b);
} // end if
var _l2 = 0;
while (_l2 < max)
{
var _l1 = this["mc" + _l2];
var _l3 = r + _l2 * rs;
_l1._x = Math.sin(-_l3) * bj_x;
_l1._y = Math.cos(-_l3) * bj_y;
_l1.swapDepths(int((_l1._y + bj_y) * 100));
if (s_a != _l2)
{
_l1.scale = 100 + (_l1._y - bj_y) * 0.500000;
} // end if
_l1.ax = (_l1.ax + (_l1.scale - _l1._xscale) * 0.600000) * 0.600000;
_l1._xscale = _l1._xscale + _l1.ax;
_l1._yscale = _l1._xscale;
_l1._alpha = 100 + (_l1._y - bj_y) / (bj_y * 2) * 100;
_l2++;
} // end while
s_b = s_a;
};
这段代码。我们可以看出这段代码实际可以简化为三个部分,即:对对应小标题的替换控制,相互替换的时候采用的是模糊渐变的方式。这一功能在本实例当中不是很明显,但如果我们所编写的是一个用来实现几个功能的菜单的话,这些文字将为有利的指导信息,指导操作人员的使用,标明每一个按钮的用处是什么。第二部分,主要用来创建一个用以存放各菜单的数组,这个数组决定了可参加显示及操作的项目个数。如果更改不利,则会影响操作菜单的个数。第三部分,便是如何让菜单旋转起来,并致使转到后面的逐渐透明,转到前面的被放大,并具有震荡效果。整个代码段基本都不用我们改,只是有可能调整个数的时候要对
Button.prototype.onRelease = function ()
{
if (this._parent.n != undefined)
{
_root.photo.gotoAndStop(url_array[this._parent.n]);
} // end if
};
{
if (this._parent.n != undefined)
{
_root.photo.gotoAndStop(url_array[this._parent.n]);
} // end if
};
及
var url_array = [];
url_array.push("2");
url_array.push("3");
url_array.push("4");
url_array.push("5");
url_array.push("6");
url_array.push("7");
url_array.push("8");
url_array.push("9");
url_array.push("10");
url_array.push("11");
url_array.push("2");
url_array.push("3");
url_array.push("4");
url_array.push("5");
url_array.push("6");
url_array.push("7");
url_array.push("8");
url_array.push("9");
url_array.push("10");
url_array.push("11");
进行修改。_root.photo.gotoAndStop(url_array[this._parent.n]);表示跳转到photo影片剪辑的相应帧,这样括号内的url_array[this._parent.n]就该是表达的帧数,但查一查帮助信息你会发现它不是数值,而是字符串,在这里系统已经自动将转化为了数值。var url_array = [];
url_array.push("2");
url_array.push("3");
url_array.push("4");
url_array.push("5");
url_array.push("6");
url_array.push("7");
url_array.push("8");
url_array.push("9");
url_array.push("10");
url_array.push("11");表示创建一个数组,对应的内容为url_array.push所返回的字符串,也就是
url_array.push("2");
url_array.push("3");
url_array.push("4");
url_array.push("5");
url_array.push("6");
url_array.push("7");
url_array.push("8");
url_array.push("9");
url_array.push("10");
url_array.push("11");表示创建一个数组,对应的内容为url_array.push所返回的字符串,也就是
array[0]="2"
array[1]="3"
array[2]="4"
array[3]="5"
array[4]="6"
array[5]="7"
array[6]="8"
array[7]="9"
array[8]="10"
array[9]="11"而“2”~“11”则被_root.photo.gotoAndStop(url_array[this._parent.n]);表示为跳到photo的第二帧~第11帧,也就相应的那十个图片D(1)~D(10)。这是对这段代码的分析。
如果我们想扩展一下功能,想让每一个照片链接上网址,则这一大段的代码应改写成:
//以下内容用以实现文本信息的更换
function photoMove(a, b)
{
var _l1 = this;//定义矩阵_l1
_l1["mc" + a].scale = 120;//修改矩阵大小为120
delete bei_b["onEnterFrame"];//释放已用内存
bei_a.gotoAndStop(b + 3);
bei_b.gotoAndStop(a + 3);
bei_a._visible = true;
bei_b._visible = true;
bei_a._alpha = 100;
bei_b._alpha = 100;
bei_a.onEnterFrame = function ()
{
var _l1 = this;
_l1._alpha = _l1._alpha - 10;
if (_l1._alpha <= 0)
{
delete _l1["onEnterFrame"];
_l1._visible = false;
} // end if
};
} // End of the function
function photoMove(a, b)
{
var _l1 = this;//定义矩阵_l1
_l1["mc" + a].scale = 120;//修改矩阵大小为120
delete bei_b["onEnterFrame"];//释放已用内存
bei_a.gotoAndStop(b + 3);
bei_b.gotoAndStop(a + 3);
bei_a._visible = true;
bei_b._visible = true;
bei_a._alpha = 100;
bei_b._alpha = 100;
bei_a.onEnterFrame = function ()
{
var _l1 = this;
_l1._alpha = _l1._alpha - 10;
if (_l1._alpha <= 0)
{
delete _l1["onEnterFrame"];
_l1._visible = false;
} // end if
};
} // End of the function
//以下用以实现各按钮的链接功能
auto = true;
move = true;
Button.prototype.onRollOver = function ()
{
auto = false;
};
Button.prototype.onRollOut = Button.prototype.onReleaseOutside = function ()
{
auto = true;
};
Button.prototype.onRelease = function ()
{
if (this._parent.n != undefined)
{
getURL(url_array[this._parent.n], "");
} // end if
};
bt.useHandCursor = false;
var url_array = [];
url_array.push("http://www.baidu.com");
url_array.push("http://www.sohu.com");
url_array.push("http://www.sina.com.cn");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
var r = 0;
var max = url_array.length;
var bj_x = 150;
var bj_y = 50;
var scale = 50;
var pi2 = 6.283185;
var s_a = 0;
var s_b = 0;
var rs = pi2 / max;
bei_a.stop();
bei_b.stop();
var i = 0;
while (i < max)
{
mca.duplicateMovieClip("mc" + i, i, {n: i, ax: 0, scale: 100}).gotoAndStop(i + 3);//修改i,可以增加菜单项目数
i++;
} // end while
mca.swapDepths(10000);
mca.removeMovieClip();
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
url_array.push("http://www.baidu.com");
var r = 0;
var max = url_array.length;
var bj_x = 150;
var bj_y = 50;
var scale = 50;
var pi2 = 6.283185;
var s_a = 0;
var s_b = 0;
var rs = pi2 / max;
bei_a.stop();
bei_b.stop();
var i = 0;
while (i < max)
{
mca.duplicateMovieClip("mc" + i, i, {n: i, ax: 0, scale: 100}).gotoAndStop(i + 3);//修改i,可以增加菜单项目数
i++;
} // end while
mca.swapDepths(10000);
mca.removeMovieClip();
//注:以下代码实现的是菜单按钮可以旋转起来的功能
onEnterFrame = function ()
{
if (auto)
{
r = (r - 0.010000 + pi2) % pi2;
}
else
{
r = (r + _xmouse / 5000 + pi2) % pi2;
} // end if
s_a = (max - Math.round(r / rs) % max) % max;
if (s_a != s_b)
{
photoMove(s_a, s_b);
} // end if
var _l2 = 0;
while (_l2 < max)
{
var _l1 = this["mc" + _l2];
var _l3 = r + _l2 * rs;
_l1._x = Math.sin(-_l3) * bj_x;
_l1._y = Math.cos(-_l3) * bj_y;
_l1.swapDepths(int((_l1._y + bj_y) * 100));
if (s_a != _l2)
{
_l1.scale = 100 + (_l1._y - bj_y) * 0.500000;
} // end if
_l1.ax = (_l1.ax + (_l1.scale - _l1._xscale) * 0.600000) * 0.600000;
_l1._xscale = _l1._xscale + _l1.ax;
_l1._yscale = _l1._xscale;
_l1._alpha = 100 + (_l1._y - bj_y) / (bj_y * 2) * 100;
_l2++;
} // end while
s_b = s_a;
};
注意红色部分的代码,运行一下,神奇吧!