用鼠标任意画线.docx
《用鼠标任意画线.docx》由会员分享,可在线阅读,更多相关《用鼠标任意画线.docx(36页珍藏版)》请在冰点文库上搜索。
用鼠标任意画线
用鼠标任意画线
效果:
可按住鼠标任意画线,可作简单的涂鸭工具
代码:
createEmptyMovieClip("xian",1);
with(xian){
_root.onMouseMove=function(){
if(draw){
_root.lineStyle(0,0x000000,100);
_root.lineTo(_root._xmouse,_root._ymouse);
}
};
_root.onMouseDown=function(){
draw=true;
_root.moveTo(_root._xmouse,_root._ymouse);
};
_root.onMouseUp=function(){
draw=false;
};
}
用鼠标任意画直线
效果:
类似flash中的直线工具
代码:
createEmptyMovieClip("line",n);
with(line){
lineStyle(1,0x000000,100);
moveTo(0,0);
lineTo(100,100);
line._visible=0;
}
_root.onMouseDown=function(){
qidian_x=_root._xmouse;
qidian_y=_root._ymouse;
with(line){
_x=qidian_x;
_y=qidian_y;
_xscale=0;
_yscale=0;
_visible=1;
}
};
_root.onMouseMove=function(){
endX=_root._xmouse;
endY=_root._ymouse;
if(_root.line!
="_root.line"&&key.isdown(16)){
if(Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)){
setProperty(_root.line, _xscale,endX-qidian_x);
setProperty(_root.line,_yscale,endX-qidian_x);
}else{
setProperty(_root.line, _xscale,endY-qidian_y);
setProperty(_root.line, _yscale,endY-qidian_y);
}
}else{
setProperty(_root.line,_xscale,endX-qidian_x);
setProperty(_root.line,_yscale,endY-qidian_y);
}
};
_root.onMouseUp=function(){
if(_root._xmouse-qidian_x!
=0){
i++;
Objectx="Copy"addi;
duplicateMovieClip(_root.line, Objectx,i);
setProperty(Objectx,_x,qidian_x);
setProperty(Objectx,_y,qidian_y);
_root.i=i;
}
setProperty(_root.line,_visible,0);
};
用鼠标任意画矩形
效果:
类似flash中的矩形工具
代码:
createEmptyMovieClip("line",n);
with(line){
lineStyle(0.1,0x000000,100);
moveTo(0,0);
lineTo(100,0);
lineTo(100,100);
lineTo(0,100);
lineTo(0,0);
line._visible=0;
}
_root.onMouseDown=function(){
qidian_x=_root._xmouse;
qidian_y=_root._ymouse;
with(line){
_x=qidian_x;
_y=qidian_y;
_xscale=0;
_yscale=0;
_visible=1;
}
};
_root.onMouseMove=function(){
endX=_root._xmouse;
endY=_root._ymouse;
if(_root.line!
="_root.line"&&key.isdown(16)){
if(Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)){
setProperty(_root.line,_xscale,endX-qidian_x);
setProperty(_root.line, _yscale,endX-qidian_x);
}else{
setProperty(_root.line,_xscale,endY-qidian_y);
setProperty(_root.line,_yscale,endY-qidian_y);
}
}else{
setProperty(_root.line,_xscale,endX-qidian_x);
setProperty(_root.line,_yscale,endY-qidian_y);
}
};
_root.onMouseUp=function(){
if(_root._xmouse-qidian_x!
=0){
i++;
Objectx="Copy"addi;
duplicateMovieClip(_root.line,Objectx,i);
setProperty(Objectx,_x,qidian_x);
setProperty(Objectx,_y,qidian_y);
_root.i=i;
}
setProperty(_root.line,_visible,0);
};
用鼠标任意画圆、椭圆
效果:
类似flash中的工具
代码:
createEmptyMovieClip("line",n);
with(line){
for(n=1;n<400;n++){
a=50*Math.cos(n*Math.PI/180);
b=50*Math.sin(n*Math.PI/180);
c=50*Math.cos((n+1)*Math.PI/180);
d=50*Math.sin((n+1)*Math.PI/180);
lineStyle(0.01,0x000000,50);
moveTo(a+50,b+50);
lineTo(c+50,d+50);
}
line._visible=0;
}
_root.onMouseDown=function(){
qidian_x=_root._xmouse;
qidian_y=_root._ymouse;
with(line){
_x=qidian_x;
_y=qidian_y;
_xscale=0;
_yscale=0;
_visible=1;
}
};
_root.onMouseMove=function(){
endX=_root._xmouse;
endY=_root._ymouse;
if(_root.line!
="_root.line"&&key.isdown(16)){
if(Math.abs(endX-qidian_x)>Math.abs(endY-qidian_y)){
setProperty(_root.line,_xscale,endX-qidian_x);
setProperty(_root.line,_yscale,endX-qidian_x);
}else{
setProperty(_root.line,_xscale,endY-qidian_y);
setProperty(_root.line,_yscale,endY-qidian_y);
}
}else{
setProperty(_root.line,_xscale,endX-qidian_x);
setProperty(_root.line,_yscale, endY-qidian_y);
}
};
_root.onMouseUp=function(){
if(_root._xmouse-qidian_x!
=0){
i++;
Objectx="Copy"addi;
duplicateMovieClip(_root.line,Objectx,i);
setProperty(Objectx,_x,qidian_x);
setProperty(Objectx,_y,qidian_y);
_root.i=i;
}
setProperty(_root.line,_visible,0);
};
两定点画虚线
代码:
MovieClip.prototype.dashTo=function(startPoint,destPoint,dashLength,spaceLength){
varx=destPoint.x-startPoint.x;
vary=destPoint.y-startPoint.y;
varhyp=Math.sqrt((x)*(x)+(y)*(y));
varunits=hyp/(dashLength+spaceLength);
vardashSpaceRatio=dashLength/(dashLength+spaceLength);
vardashX=(x/units)*dashSpaceRatio;
varspaceX=(x/units)-dashX;
vardashY=(y/units)*dashSpaceRatio;
varspaceY=(y/units)-dashY;
this.moveTo(startPoint.x,startPoint.y);
while(hyp>0){
startPoint.x+=dashX;
startPoint.y+=dashY;
hyp-=dashLength;
if(hyp<0){
startPoint.x=destPoint.x;
startPoint.y=destPoint.y;
}
this.lineTo(startPoint.x,startPoint.y);
startPoint.x+=spaceX;
startPoint.y+=spaceY;
this.moveTo(startPoint.x,startPoint.y);
hyp-=spaceLength;
}
this.moveTo(destPoint.x,destPoint.y);
};
createEmptyMovieClip("DrawingSpace",1);
with(DrawingSpace){
lineStyle(0,0x000000,100);
dashTo({x:
300,y:
0},{x:
0,y:
400},3,10);
}
从一点到另一点画虚线
代码:
functionDrawDottedLine(targetMC,linewidth,fromX,fromY,toX,toY){
//targetMC:
目标MovieClip德InstanceName;
//linewidth:
线宽;
//fromX,fromY:
从(fromX,fromY)处开始画;
//toX,toY:
画到(toX,toY)处;
varx,y;
eval(targetMC).lineStyle(lineWidth,0x000000,100);
//线的颜色是黑色(0x000000)
eval(targetMC).moveTo(fromX,fromY);
x=fromX;
y=fromY;
while(xx=x+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toX-fromX);
y=y+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toY-fromY);
eval(targetMC).lineTo(x,y);
x=x+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toX-fromX);
y=y+4/(Math.sqrt((toY-fromY)*(toY-fromY)+(toX-fromX)*(toX-fromX)))*(toY-fromY);
eval(targetMC).moveTo(x,y);
}
}
createEmptyMovieClip("obj",1);//建一空影片
DrawDottedLine("_root.obj",1,10,10,200,300);//调用函数
从场景的左上角到鼠标画虚线
代码:
x=0;
y=0;//场景左上角的坐标
l=0;
mx=_root._xmouse;
my=_root._ymouse;//鼠标的坐标
ml=Math.sqrt(mx*mx+my*my);//三角形的斜边长
_root.moveto(0,0);//画线的起点为场景左上角的坐标
_root.linestyle(0.1,0x000000,100);
//下面用三角函数求出每一段虚线的端点坐标,然后用循环重复画一条短线和空格。
直到线的终点位置。
while(ll+=5;
//短线的长
x=l*mx/ml;
y=l*my/ml;
_root.lineto(x,y);
//将绘图点移动到相当于短线长的,且与短线在同一直线的位置。
即一个空格
l+=5;
x=l*mx/ml;
y=l*my/ml;
_root.moveto(x,y);
}
不错的画线函数,自定义点、线的样式、填充
functionShape(){
this.points=[];
this.lines=false;
tthis.filled=false;
tthis.lineStyle=null;
this.t=eval(_target);
}
Shape.prototype.addPoint=function(x,y){
this.points[this.points.length]={x:
x,y:
y};
};
Shape.prototype.removePoint=function(){
this.points.pop();
};
Shape.prototype.draw=function(w,c,a){
if(this.points.length>1){
this.lineStyle={w:
w,c:
c,a:
a};
this.t.lineStyle(w,c,a);vari=0;
varl=this.points.length;
while(ithis.t.lineTo(this.points[i].x,this.points[i].y);
++i;
}
this.lines=true;
}
};
Shape.prototype.fill=function(c,a){
if(this.points.length>1){
if(this.lines){
this.clear();
this.t.lineStyle(this.lineStyle.w,this.lineStyle.c,this.lineStyle.a);
}else{
this.t.lineStyle(0,0xFFFFFF,0);
if(this.filled){
this.clear();
}
}
this.t.beginFill(c,a);
vari=0;
varl=this.points.length;
while(ithis.t.lineTo(this.points[i].x,this.points[i].y);
++i;
}
this.t.endFill();
this.filled=true;
}
};
Shape.prototype.getX=function(){
if(this.points.length){
returnthis.points[this.points.length-1].x;
}
};
Shape.prototype.getY=function(){
if(this.points.length){
returnthis.points[this.points.length-1].y;
}
};
g=newShape();
g.addPoint(0,100);
g.addPoint(100,100);
g.addPoint(100,0);
g.addPoint(0,0);
g.fill(0x339900,100);
g.draw(5,0x000000,100);
代码:
onMouseDown=init;
functioninit(){//创建羽毛,并设置羽毛各个参数及对函数的调用
feather=createEmptyMovieClip("f"+i,10000+i++);
feather.swapDepths(Math.random()*10000);
feather._x=_xmouse;
feather._y=_ymouse;
feather._rotation=-90+Math.random()*40-20;
col=Math.random()*255<<8;
radius=Math.random()*20+20;
twist=Math.random()+.5;
len=Math.random()*100+50;
taper=Math.random()*.05+.95;
x=0;
onEnterFrame=grow;
}
functiongrow(){//创建函数来定义羽毛的生长、定义羽毛的停止生长条件
angle=Math.sin(fa+=twist)*Math.PI/4;
feather.moveTo(x,y);
feather.lineStyle(1,col,50);
feather.lineTo(x+Math.cos(angle)*radius,y+Math.sin(angle)*radius);
radius*=taper;
if(x++>len){
deleteonEnterFrame;
}
};
用as画圆:
代码:
思路:
用不间断的連线形成一个圆,实际上一个正360度多边形
应用:
按此法可画任意的图形,如抛物线,螺旋线等,只需把方程修改即可,第2个代码就是一个应用,画椭圆。
_root.onLoad=function(){
System.Usecodepage=true;
//这句我也不知道什么意思,加了以后就支持中文了,是从“好笨”那里学来的,誰知道告诉我,谢谢
_root.createTextField("txtLoad",151,50,280,400,30);
//建一文本,名、层次、x、y、宽度、高度
_root.txtLoad.text="这是一个画线的应用。
zjs35制作。
*************";
//文本中的内容
daxiao=100;//圆的半径
yuanxin_x=200;
yuanxin_y=150;//圆心的坐标
};
_root.onEnterFrame=function(){
a=daxiao*Math.cos(n*Math.PI/180);
b=daxiao*Math.sin(n*Math.PI/180);//根据圆的方程定义一个起点
c=daxiao*Math.cos((n+1)*Math.PI/180);
d=daxiao*Math.sin((n+1)*Math.PI/180);//定义一个终点
createEmptyMovieClip("yuan",n);
with(yuan){
lineStyle(2,0x000000,50);//定义线的样式
moveTo(a+yuanxin_x,b+yuanxin_y);
lineTo(c+yuanxin_x,d+yuanxin_y);//从起点到终点画线
}
if(n<=360){
n=n+1;
}//控制画线的长度,刚好一个圆,1表示画线的速度
};
画正多边形
代码:
这是一个画正多边形的程序,思路:
把一个圆划分成n等分,把这些点連接起来,下面是按钮上代码,另外在场景中建两可输入文本框,名为aa,bb。
on(release){
daxiao=aa;
//获取多边形的大小,以像素为单位
bianshu=bb;
//获取边数,整数,从3开始,到无穷大,n多边形就是圆
jiaodu=