资源描述
用鼠标任意画线
效果:可按住鼠标任意画线,可作简单的涂鸭工具
代码:
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" add i;
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" add i;
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" add i;
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) {
var x = destPoint.x-startPoint.x;
var y = destPoint.y-startPoint.y;
var hyp = Math.sqrt((x)*(x)+(y)*(y));
var units = hyp/(dashLength+spaceLength);
var dashSpaceRatio = dashLength/(dashLength+spaceLength);
var dashX = (x/units)*dashSpaceRatio;
var spaceX = (x/units)-dashX;
var dashY = (y/units)*dashSpaceRatio;
var spaceY = (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);
}
从一点到另一点画虚线
代码:
function DrawDottedLine(targetMC, linewidth, fromX, fromY, toX, toY) {
// targetMC: 目标MovieClip德InstanceName;
// linewidth: 线宽;
// fromX, fromY: 从(fromX, fromY)处开始画;
// toX, toY: 画到(toX, toY)处;
var x, y;
eval(targetMC).lineStyle(lineWidth, 0x000000, 100);
// 线的颜色是黑色(0x000000)
eval(targetMC).moveTo(fromX, fromY);
x = fromX;
y = fromY;
while (x<toX) {
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).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 (l<ml) {
l += 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);
}
不错的画线函数,自定义点、线的样式、填充
function Shape() {
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);var i = 0;
var l = this.points.length;
while (i<l) {
this.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);
var i = 0;
var l = this.points.length;
while (i<l) {
this.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) {
return this.points[this.points.length-1].x;
}
};
Shape.prototype.getY = function() {
if (this.points.length) {
return this.points[this.points.length-1].y;
}
};
g = new Shape();
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;
function init() {//创建羽毛,并设置羽毛各个参数及对函数的调用
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;
}
function grow() {//创建函数来定义羽毛的生长、定义羽毛的停止生长条件
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) {
delete onEnterFrame;
}
};
用as画圆:
代码:
思路:用不间断的連线形成一个圆,实际上一个正360度多边形
应用:按此法可画任意的图形,如抛物线,螺旋线等,只需把方程修改即可,第2 个代码就是一个应用,画椭圆。
_root.onLoad = function() {
System.Usecodepage = true;
// 这句我也不知道什么意思,加了以后就支持中文了,是从“好笨”那里学来的,誰知道告诉我,谢谢
_root.createTextField("txtLoad", 151, 50, 280, 400, 30);
// 建 一文本,名、层次、x、y、宽度、高度
_root.txtLoad.text = "这是一个画线的应用。zjs35制作。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 = 360/bianshu;
//得到每个等分的角度
for (n=1; n<=bianshu; n++) {
//for循环,由bianshu来控制循环的次数,也就是要画的多边形的边数
a = daxiao*math.cos(n*jiaodu*math.pi/180);
b = daxiao*math.sin(n*jiaodu*math.pi/180);
//定义起点的坐标
c = daxiao*math.cos((n+1)*jiaodu*math.pi/180);
d = daxiao*math.sin((n+1)*jiaodu*math.pi/180);
//定义终点的坐标
createEmptyMovieClip("xian", n);
// 创建一个空影片xian,n为层次
with (xian) {
lineStyle(2, 0xff0000, 100);
// 定义线的大小、颜色、透明度
moveTo(a+300, b+200);
lineTo(c+300, d+200);//从起点到终点画线
}
}
}
用as画字母F 作者:寒蓝
代码:
// 创建一个空的mc:
_root.createEmptyMovieClip("myMc", 0);
// 定义mc的位置:
myMc._x = 100;
myMc._y = 50;
// 定义填充:
myMc.beginFill(0xff0000, 100);
colors = [0xFF0000, 0xffffff];
alphas = [100, 100];
ratios = [0, 0xFF];
matrix = {a:50, b:0, c:0, d:0, e:50, f:0, g:50, h:50, i:1};
myMc.beginGradientFill("linear", colors, alphas, ratios, matrix);
// 定义画线的样式:
myMc.lineStyle(1, 0xff0000, 100);
// 移动初始点:
myMc.moveTo(100, 0);
// 连接曲线:
myMc.curveTo(65, 5, 50, 50);
myMc.curveTo(35, 95, 0, 100);
// 连接直线
myMc.lineTo(0, 120);
myMc.curveTo(45, 110, 62, 70);
myMc.lineTo(90, 70);
myMc.lineTo(90, 50);
myMc.lineTo(70, 50);
myMc.curveTo(80, 20, 100, 20);
myMc.lineTo(100, 0);
// 结束填充:
myMc.endFill();
// 清除所画:
// myMc.clear();
画正弦线
代码:
root.onLoad = function() {
daxiao = 100;
yuanxin_x = 00;
yuanxin_y = 150;
};
_root.onEnterFrame = function() {
a = daxiao*Math.sin(n*Math.PI/180);
c = daxiao*Math.sin((n+1)*Math.PI/180);
createEmptyMovieClip("xian", n);
with (xian) {
lineStyle(1, 0x339900, 50);
moveTo(n+yuanxin_x, a+yuanxin_y);
lineTo(n+1+yuanxin_x, c+yuanxin_y);
}
if (n<=400) {
n = n+1/2;
}
}
画余弦线
代码:
_root.onLoad = function() {
daxiao = 100;
yuanxin_x = 00;
yuanxin_y = 150;
};
_root.onEnterFrame = function() {
a = daxiao*Math.cos(n*Math.PI/180);
c = daxiao*Math.cos((n+1)*Math.PI/180);
createEmptyMovieClip("yuan", n);
with (yuan) {
lineStyle(1, 0x000000, 50);
moveTo(n+yuanxin_x, a+yuanxin_y);
lineTo(n+1+yuanxin_x, c+yuanxin_y);
}
if (n<=400) {
n = n+1/2;
}
};
画心脏线
代码:
这是一个用MX新增功能画线的例子,比在5中用点复制法画线简单多了,用此方法,可动态画数学中所有的图形。
_root.onLoad = function() {
daxiao = 40;
// 设定心脏线的大小
};
_root.onEnterFrame = function() {
a = daxiao*(2*Math.cos(n*Math.PI/180)+Math.cos(2*(n*Math.PI/180)));
// 通过心脏线的方程定义起点的x坐标
b = daxiao*(2*Math.sin(n*Math.PI/180)+Math.sin(2*(n*Math.PI/180)));
// 通过心脏线的方程定义起点的y坐标
c = daxiao*(2*Math.cos((n+1)*Math.PI/180)+Math.cos(2*((1+n)*Math.PI/180)));
d = daxiao*(2*Math.sin((n+1)*Math.PI/180)+Math.sin(2*((1+n)*Math.PI/180)));
// 同理定义终点的经x,y坐标
createEmptyMovieClip("yuan", n);
// 创建一个空影片yuan
with (yuan) {
lineStyle(0.5, 0x000000, 100);
// 定义线的大小、颜色、透明度
moveTo(a+200, b+150);
lineTo(c+200, d+150);
// 从起点到终点画一条线,并把图形的中心点定为(200,150)
}
if (n<=360) {
n = n+1;
}
};
画螺旋线
代码:
_root.onEnterFrame = function() {
a = (10+0.1*n)*Math.cos(n*Math.PI/180);
b = (10+0.1*n)*Math.sin(n*Math.PI/180);
c = (10+0.1*n)*Math.cos((n+1)*Math.PI/180);
d = (10+0.1*n)*Math.sin((n+1)*Math.PI/180);
createEmptyMovieClip("yuan", n);
with (yuan) {
lineStyle(2, 0x000000, 50);
moveTo(a+200, b+150);
lineTo(c+200, d+150);
}
if (n<=900) {
展开阅读全文