伪3D菜单的实现
作者 佚名技术
来源 服务器技术
浏览
发布时间 2012-07-09
靠右边的层要高一点,因为它要压在其左边层的上方。排好层后再新建一层,加入如下AS——
function init3D(objnum) { ?i = 1; ?while (i<=4) { ? this[("newName"+objnum)+i] = ("sq"+objnum)+i; ? _root.createEmptyMovieClip(this[("newName"+objnum)+i], (objnum*10)+i); ? i++; ?} } function move3D(objnum) { ?Xorigin = _x; ?Yorigin = _y; ?with (_root[("sq"+objnum)+"3"]) { ? clear(); ? beginFill("0x"+colorData[2], 100); ? MoveTo(Xorigin, Yorigin); ? LineTo(this["a"+objnum].typo.xMaxdata, this["a"+objnum].typo.yMindata); ? LineTo(this["a"+objnum].typo.xMaxdata, this["a"+objnum].typo.yMaxdata); ? endFill(); ?} ?with (_root[("sq"+objnum)+"4"]) { ? clear(); ? colors = [15133171, 13421772]; ? alphas = [100, 100]; ? ratios = [0, 255]; ? matrix = {matrixType:"box", x:_root._xmouse, y:_root._xmouse, w:550, h:400, r:(radian/180)*Math.PI}; ? beginGradientFill("linear", colors, alphas, ratios, matrix); ? MoveTo(this["a"+objnum].typo.xMindata, this["a"+objnum].typo.yMindata); ? LineTo(this["a"+objnum].typo.xMaxdata, this["a"+objnum].typo.yMindata); ? LineTo(this["a"+objnum].typo.xMaxdata, this["a"+objnum].typo.yMaxdata); ? LineTo(this["a"+objnum].typo.xMindata, this["a"+objnum].typo.yMaxdata); ? endFill(); ?} ?if (_root._ymouse<_y) { ? _root[("sq"+objnum)+"2"].clear(); ? with (_root[("sq"+objnum)+"1"]) { ?? clear(); ?? beginFill("0x"+colorData[0], 100); ?? MoveTo(Xorigin, Yorigin); ?? LineTo(this["a"+objnum].typo.xMindata, this["a"+objnum].typo.yMaxdata); ?? LineTo(this["a"+objnum].typo.xMaxdata, this["a"+objnum].typo.yMaxdata); ?? endFill(); ? } ?} else if (_root._ymouse>=_y) { ? _root[("sq"+objnum)+"1"].clear(); ? with (_root[("sq"+objnum)+"2"]) { ?? clear(); ?? beginFill("0x"+colorData[1], 100); ?? MoveTo(Xorigin, Yorigin); ?? LineTo(this["a"+objnum].typo.xMaxdata, this["a"+objnum].typo.yMindata); ?? LineTo(this["a"+objnum].typo.xMindata, this["a"+objnum].typo.yMindata); ?? endFill(); ? } ?} } colorData = ["333333", "999999", "666666"]; 这段AS首先会建立四个空的MC,它们是用来装立方体的各个面的。在后面的move3D部分就开始进行绘图指令了。("sq"+objnum)+"3"这一部分用来绘制右侧的面,("sq"+objnum)+"4"画正面的正方形,后面的("sq"+objnum)+"2"和("sq"+objnum)+"1"分别是上下两个面,它里面加了一个判断,当鼠标在消失点上方的时候那么就显示下边的面,在下方的时候就显示上方的面。 到这里为止,这种伪3D的作法就基本讲完了,我们可以把上面做的几层都拷贝到一个新的MC当中,放在场景中就可以很方便地产生3D效果,而且也可以利用缩放来调整最终效果。 最后,初学者会问我那些当鼠标悬浮在立方体正面时出现的导航文字是怎么讲的。我告诉你很简单,你可以先建好几个说明文字,都作成MC,然后拖到场景中。给它们起好名字,比如guide1。在它上面加入AS—— onClipEvent (load) { ?this.swapDepths(300); ?_visible = false; } onClipEvent (enterFrame) { ?this._x = _root._xmouse; ?this._y = _root._ymouse; } 在一开始将它切到一个更高的层上(300),这样可以保证它是在3D视图的上方。然后设置它的属性是不可见的。接着每一帧都让它跟着鼠标走。最后就是要设置一下那几个被加入MM-a1_typo中的不可见按钮了,在上面加入AS—— on (rollOver) { ?_root.guide1._visible = true; } on (rollOut) { ?_root.guide1._visible = false; } on ( |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 进入Flash MX组件时代之四 组件的衍生下一篇: 循环旋转花边效果
关于伪3D菜单的实现的所有评论