Flash AS制作的仿苹果机的导航菜单教程
作者:佚名 时间:2007-09-26 来源:网络收集
拥有帝国一切,皆有可能。欢迎访问phome.net
06年学类时,写的菜单效果。模仿苹果机中的菜单效果,鼠标经过图标时,以该图标为中心向两边缩放。/** *MacintoshMenu(仿苹果机菜单)
*Auther:流浪儿
*Versoin:MacintoshMenu 1.0
**/
class MacintoshMenu {
//属性
private var target:MovieClip;
private var imageContainer:MovieClip;
private var imageArr:Array;
private var total:Number;
private var spanX:Number = 5;
private var ypos:Number = Stage.height/2+50;
//构造函数
public function MacintoshMenu(target:MovieClip, imageArr:Array, scale:Number) {
this.target = target;
this.imageArr = imageArr;
//
total = imageArr.length;
imageContainer = target.createEmptyMovieClip("imageContainer", 1);
attachMc(scale);
resetPosition();
}
//加载图片
private function attachMc(scale:Number):Void {
for (var i:Number = 0; i<total; i++) {
var menu:MovieClip = imageContainer.attachMovie(imageArr[i], "menu"+i, i);
mouseControlZoomEffect(menu, scale);
menu.onRollOver = function() {
//trace(this._name);
};
}
}
//鼠标控制缩放比例效果
private function mouseControlZoomEffect(mc:MovieClip, scale:Number):Void {
var owner:Object = this;//用一个临时变量指向当前类
mc.onEnterFrame = function() {
var mouseX:Number = Math.abs(this._x+this._width/2+owner.imageContainer._x-owner.imageContainer._parent._xmouse);
//trace(mc._name+">>> "+mouseX);trace("");
if (owner.imageContainer.hitTest(owner.target._xmouse, owner.target._ymouse)) {
if (mouseX<scale) {
var num:Number = 100+scale-mouseX;
owner.zoomEffect(this, num);
} else {
owner.zoomEffect(this, 100);
}
} else {
owner.zoomEffect(this, 100);
}
updateAfterEvent();
};
}
//缩放效果
private function zoomEffect(mc:MovieClip, scale:Number):Void {
var ratio:Number = .4;
mc._xscale = mc._yscale += (scale-mc._xscale)*ratio;
}
//重新设置各菜单的位置
private function resetPosition():Void {
var owner:Object = this;
target.onEnterFrame = function() {
for (var i:Number = 0; i<owner.total; i++) {
var menu:MovieClip = owner.imageContainer["menu"+i];
menu._x = owner.imageContainer["menu"+(i-1)]._x+owner.imageContainer["menu"+(i-1)]._width+owner.spanX;
menu._y = owner.ypos-menu._height;
owner.imageContainer._x = (Stage.width-owner.imageContainer._width)/2;
}
updateAfterEvent();
};
}
//转义(位置、间距等)
public function get _ypos():Number {
return this.ypos;
}
public function set _ypos(values:Number):Void {
this.ypos = values;
}
public function get _spanX():Number {
return this.spanX;
}
public function set _spanX(values:Number):Void {
this.spanX = values;
}
public function get _x():Number {
return this.target._x;
}
public function set _x(values:Number):Void {
this.target._x = values;
}
public function get _y():Number {
return this.target._y;
}
public function set _y(values:Number):Void {
this.target._y = values;
}
}
拥有帝国一切,皆有可能。欢迎访问phome.net
- 上一篇:Flash AS制作一个铅笔画图程序教程
- 下一篇:Flash AS曲线的绘制教程
中华大观园版权申明:本站部分图片和文章来源于网络。除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。
转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。 特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
免责声明:本站刊载此文不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。对本文有任何异议,请联络:5000sky@gmail.com我要发表看法
- ※ 评论注意事项:
- 您的评论将在管理员审核后才会显示。
- 不是中华大观园会员或未登陆发表评论,评论人名字显示为匿名。
- 尊重网上道德,遵守中华人民共和国的各项有关法律法规
- 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
- 本站管理人员有权保留或删除评论中的任意内容
- 参与本评论即表明您已经阅读并接受上述条款

