旋转的导航菜单
来源:互联网 发布:北京做网络推广的公司 编辑:程序博客网 时间:2024/05/16 06:51
下面是旋转的导航菜单(即按钮是绕椭圆轨迹转动)
下面只是一个的Circle类是用程序写的一个按钮 (该类你可以换成其他的按钮,或者可以直接在flash直接画出来)
你可以自己加上按钮本身的交互性 (只需加个侦听器就可以了,)
下面是代码::
主程序是在时间轴上写的 :
主程序:
/*
这里用到flash player 10的新增类 vector; 其本质就是个数组 在顶级包 是数组Array的的替代
总结 :一般涉及到角度的都要自增 比如angle+=number 这样比较好
下面的代码是基于时间轴的
*/
var storeCircle:Vector.<Circle>;//定义圆形按钮数组
var circle:Circle;//按钮
var buttonNum:Number;//按钮数
var angle:Number;//弧度
// private var setAngle:Number;//每个按钮的弧度;
var centerX:Number;//椭圆中心
var centerY:Number;
var Rx:Number;//椭圆的长半轴
var Ry:Number;//短半轴
init();
function init():void {
addEventListener(Event.ENTER_FRAME,hanleEnterFrame);
storeCircle=new Vector.<Circle>();
centerX=stage.stageWidth/2;
centerY=stage.stageHeight/2;
Rx=200;
Ry=100;
buttonNum=15;
angle=Math.PI*(360/buttonNum)/180;//平均角度
//为按钮进行定位 用了椭圆的公式 x=a+RxcosB , y=b+RysinB
for (var i:uint; i<buttonNum; ++i) {
var angleOfNow:Number=angle*i;
circle= new Circle(30,String(i));
circle.Angle=angleOfNow;// 保存弧度
circle.x=centerX+Rx*Math.cos(angleOfNow);
circle.y=centerY+Ry*Math.sin(angleOfNow);
storeCircle[i]=circle;
addChild(circle);
}
}
function hanleEnterFrame(e:Event):void {
//下面滑动鼠标 对其进行滑动
var distance:Number=mouseX-centerX;
//化为与角度有关系的量
var angleSpeed:Number=distance/5000;
//更新按钮坐标
for (var i:uint=0; i<buttonNum; ++i) {
storeCircle[i].Angle+=angleSpeed;
storeCircle[i].x=centerX+Rx*Math.cos(storeCircle[i].Angle);
storeCircle[i].y=centerY+Ry*Math.sin(storeCircle[i].Angle);
// 下面对按钮进行缩放: 按钮在中心点上面显示放大:在中心点下面显示缩小
var disY:Number=centerY-storeCircle[i].y;
storeCircle[i].scaleY=disY/Ry;
if (storeCircle[i].y<centerY) {
storeCircle[i].scaleY*=2;
}
storeCircle[i].scaleX=storeCircle[i].scaleY;
storeCircle[i].alpha=storeCircle[i].scaleX+1.1
}
}
Circle类:
/*
Circle 与文本的定位不是很精确
*/
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Graphics;
public class Circle extends Sprite {
private var _radius:Number;
private var _text:TextField;
private var circle:Sprite;
private var format:TextFormat;
private var _input:String;
private var _angle:Number;
public function Circle(r:Number=30,str:String="0") {
_radius=r;
_input=str
init();
}
private function init():void {
circle= new Sprite();
circle.graphics.clear();
circle.graphics.beginFill(0xFFCC99);
circle.graphics.drawCircle(0,0,_radius);
circle.graphics.endFill();
createText();
addChild(circle);
circle.addChild(_text);
}
private function createText():void {
_text= new TextField();
format= new TextFormat();
_text.autoSize="left";
_text.width=50;
_text.height=30;
format.size=25;
_text.defaultTextFormat=format;
_text.text=_input;
_text.x=circle.x+_radius-3.5*_text.width;// 让数字居中
_text.y=circle.y+_radius-2*_text.height;
}
public function get input():String {
return _input;
}
public function set input(str:String):void {
_input=str;
}
/*public function get radius() :Number{
return _radius;
}
public function set radius(n:Number):void{
_radius=n;
}
*/
public function get Angle():Number {
return _angle;
}
public function set Angle(n:Number):void {
_angle=n;
}
}
}
- 旋转的导航菜单
- 旋转的导航菜单
- 旋转的导航菜单
- 带有旋转效果的导航菜单代码
- CSS3实现3D旋转菜单导航
- 我的学习笔记004--javascript实现旋转导航菜单mxx
- ExtJs的菜单导航
- 导航菜单的实例
- 导航菜单的实现
- 导航菜单的样式
- 导航菜单的制作
- 导航菜单的制作
- 倾斜的css导航菜单
- 简单的二级菜单导航
- 页面导航菜单的设计
- Winform 导航菜单的方法
- 抽屉效果的导航菜单
- 导航条菜单的制作
- js获取系统当前时间
- IBM_XML 新手入门基础知识11月09日[转贴]
- JavaScript 常用55个例子
- 中缀和后缀算术表达式的分析比较
- 虚心学习
- 旋转的导航菜单
- 使用clientlistener和serverlistener刷新InlineFrame
- 显示16进制数据(vim和hexdump)
- 找工作
- Oracle sys和system用户、sysdba 和sysoper系统权限、sysdba和dba角色的区别
- 先装linux(ubuntu)后装xp修复grub
- dot软件绘图
- 将一个文件夹中所有的bmp文件转化成同名的jpg文件
- Ubuntu 下的gmake