用AS画图,自定义多边形及圆形

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

这两天在研究关于as画图的问题,经过一番折腾后终于是出来了,(部分代码来源于 programming macromedia flash mx)

查看效果

AS:

MovieClip.prototype.drawRegAng = function(x, y, r, num, rotation) {

/*参数说明:x,y:多边形的中心坐标;r:多边形半径;num:多边形边数;最后一个是旋转角度*/

var tAngle = (rotation-90)*Math.PI/180;

var angle = 2*Math.PI/num;

var sin = Math.sin;

var cos = Math.cos;

num++;

this.moveTo(x+r*cos(tAngle), y+r*sin(tAngle));

while (num--) {

tAngle += angle;

this.lineTo(x+r*cos(tAngle), y+r*sin(tAngle));

}

};

this.createEmptyMovieClip("loader", 100);

loader.lineStyle(0, 0x000000);

//初始化变量

var r=50,num=5,rota=0;

var x = Stage.width/2, y = Stage.height/2;

loader.drawRegAng(x, y, r, num, rota);

numChange=new Object();

numChange.change=function(evt){

num=evt.target.value;

}

rChange=new Object();

rChange.change=function(evt){

r=evt.target.value;

}

rotaChange=new Object();

rotaChange.change=function(evt){

rota=evt.target.value;

}

bian.addEventListener("change",numChange);

jiaodu.addEventListener("change",rotaChange);

banjing.addEventListener("change",rChange);

function clicked(){

loader.clear();

loader.lineStyle(0, 0x000000);

loader.drawRegAng(x, y, r, num, rota);

}

rSubmit.addEventListener("click",clicked);

圆形:

查看效果

AS:

MovieClip.prototype.drawOval=function(x,y,rx,ry){

this.moveTo(x+rx,y);

this.curveTo(rx+x,0.4142*ry+y,0.7071*rx+x,0.7071*ry+y);

this.curveTo(0.4142*rx+x,ry+y,x,ry+y);

this.curveTo(-0.4142*rx+x,ry+y,-0.7071*rx+x,0.7071*ry+y);

this.curveTo(-rx+x,0.4142*ry+y,-rx+x,y);

this.curveTo(-rx+x,-0.4142*ry+y,-0.7071*rx+x,-0.7071*ry+y);

this.curveTo(-0.4142*rx+x,-ry+y,x,-ry+y);

this.curveTo(0.4142*rx+x,-ry+y,0.7071*rx+x,-0.7071*ry+y);

this.curveTo(rx+x,-0.4142*ry+y,rx+x,y);

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航