flash中,怎么做一个画笔工具代码
发布网友
发布时间:2022-05-12 18:26
我来回答
共1个回答
热心网友
时间:2023-10-17 14:26
画笔一:帧-动作:
this.createEmptyMovieClip("canvas_mc", 999);
var
isDrawing:Boolean = false;
//
clear_btn.onRelease = function()
{
canvas_mc.clear();
};
//
var mouseListener:Object = new
Object();
mouseListener.onMouseDown = function() {
canvas_mc.lineStyle(5,
0xFF0000, 100);
canvas_mc.moveTo(_xmouse, _ymouse);
isDrawing =
true;
};
mouseListener.onMouseMove = function() {
if (isDrawing)
{
canvas_mc.lineTo(_xmouse,
_ymouse);
updateAfterEvent();
}
};
mouseListener.onMouseUp =
function() {
isDrawing =
false;
};
Mouse.addListener(mouseListener);
建一个清除按钮,实例名:clear_btn。
——————————————————————————————————————————————
画笔二:
帧-动作:
var
empiremue = new
ContextMenu();
//删除原始菜单状态!
empiremue.hideBuiltInItems();
//自定义菜单项目!
empiremue.customItems.push(new
ContextMenuItem("鼠标写字", h1));
empiremue.customItems.push(new
ContextMenuItem("清除字迹", h2));
empiremue.customItems.push(new
ContextMenuItem("退出程序", h3,true));
empiremue.customItems.push(new
ContextMenuItem("退出写字", h4));
function h3()
{
fscommand("quit");
}
function h4()
{
Mouse.show();//显示鼠标
_root.clear();
//_root.pen=false;
_root.onMouseMove=function(){
updateAfterEvent();
pen._x
= _root._xmouse+1200;
pen._y = _root._ymouse+800;
}}
function h1()
{
stop();
//_root.mc._visible=false;//影片不可见
var
xx=Math.random()*0xFFFFFF;
//Mouse.show();//显示鼠标
_root.createEmptyMovieClip("pen",
1);
pen.lineStyle(4, 0x0082FF);
pen._x = 200;
pen._y = 200;
//浅兰色笔体
pen.beginFill(0x0082FF, 100);
pen.lineTo(20, -8);
pen.lineTo(65, -8);
pen.lineTo(65, 8);
pen.lineTo(20, 8);
pen.lineTo(20, -8);
pen.beginFill(0x0082FF, 100);
endFill(pen);
pen.beginFill(xx,
100);
pen.lineStyle(4, xx)
pen.lineTo(0, 0);
pen.lineTo(20, 8);
pen.lineTo(20, -8);
endFill(pen);
pen._rotation = -50;
Mouse.hide();
//定义onMouseDown函数
//Math.random()*0xFFFFFF用代替可使每笔的颜色不同
_root.onMouseDown=function(){
//设定线条样式
_root.lineStyle(4,xx,100);
//绘制直线;
_root.moveTo(_root._xmouse,_root._ymouse);
//定义变量isdrawing,并赋值为真
isdrawing=true;
}
_root.onMouseMove=function(){
updateAfterEvent();
pen._x
= _root._xmouse;
pen._y =
_root._ymouse;
//如果变量为真
if(isdrawing==true){
//绘制直线断
_root.lineTo(_root._xmouse,_root._ymouse);
//刷新画面;
updateAfterEvent();
}
}
_root.onMouseUp=function(){
//设定变量isdrawing的值为假
isdrawing=false;
}
}
function
h2() {
Mouse.hide();
_root.clear();
}
_root.menu = empiremue;
画笔三:用鼠标画线
onMouseDown=function ()
{
lineStyle(2,0*000000,100)
lineTo(_xmouse,_ymouse)
}
onMouseMove = function() {
if (a)
{
lineStyle(2,0x000000,100);//指定线条的粗度为2,颜色为黑色,透明度为100;
lineTo(_xmouse,
_ymouse); //画线至鼠标所在位置;
}
updateAfterEvent(); //强制刷新;Flash
强制进行显示刷新工作。该语句不依赖于时间帧的触发。
};
onMouseDown = function() {
a = true;
//鼠标按下,给a变量赋值true,即执行上面的if后面括号内的语句,开始画线;
moveTo(_xmouse,
_ymouse);//重新定位开始点;
};
onMouseUp = function() {
a = false;
//鼠标松开,给a变量赋值false,不执行上面的if后面括号内的语句,停止画线;
};
画笔四:
*两点间画直线
*画螺旋线
*画正方形、圆、椭圆
*抛物线
*正弦、余弦线
使用方法:加到帧中就可
// 画直线
// / x1, y1: 起点坐标
// x2, y2: 终点坐标
// k是层次
Movieclip.prototype.drawline = function(x1, y1, x2, y2, k) {
this.linestyle(1);
this.moveTo(x1, y1);
this.lineTo(x2, y2);
};
// 从(0,0)到(100,100)画一条线
_root.createEmptyMovieClip("mc", 10);
mc.drawline(0, 0, 100, 100);
// 画螺旋线
// w、h为宽和高
// f控制线的长短,用弧度表示
Movieclip.prototype.drawhelix = function(w, h, f) {
for (var i = 0;
i<f; i += 0.05) {
this.lineTo(x=Math.sin(i)*i*w, y=Math.cos(i)*i*h);
this.linestyle(1);
}
};
// 以(100,100)为中心画螺旋线
_root.createEmptyMovieClip("luo", 1);
with (luo) {
drawhelix(5, 5,
13);
_x += 100;
_y += 100;
}
// 多功能函数,可画圆,椭圆,正多边形等
// n为边数
Movieclip.prototype.drawmany = function(w, h, n) {
f = 2*Math.PI;
for (var i = 0; i<=f/n*(n+1); i += f/n) {
this.lineTo(x=Math.sin(i)*w, y=Math.cos(i)*h);
this.linestyle(1);
}
};
// 画一正五边形
_root.createEmptyMovieClip("obian", 2);
with
(obian) {
drawmany(50, 50, 5);
_x += 250;
_y += 100;
//
5为多边形的边数,6.3为2pai
}
// 画一椭圆
_root.createEmptyMovieClip("tuo", 3);
with (tuo) {
drawmany(25, 50, 100);
_x += 400;
_y += 100;
}
// 圆
_root.createEmptyMovieClip("yuan", 4);
with (yuan) {
drawmany(50, 50, 100);
_x += 400;
_y += 300;
}
// 抛物线
Movieclip.prototype.drawparabola = function(l, r, k) {
for (var i = -l;
i<=r; i += 1) {
this.lineTo(x=i, y=k*i*i);
this.linestyle(1);
}
};
// 调用
_root.createEmptyMovieClip("parabola", 100);
with
(parabola) {
drawparabola(50, 50, 0.05);
_x += 200;
_y += 200;
// 顶点坐标
}
// 正弦线,余弦类似
Movieclip.prototype.drawsin = function(n,
k) {
for (var i = 0; i<=90*n; i += 1) {
this.lineTo(x=i,
y=k*Math.sin(i*Math.PI/180));
this.linestyle(1);
}
};
_root.createEmptyMovieClip("sin", 101);
with (sin) {
drawsin(4, 50);
_x += 200;
_y += 200;
// 顶点坐标
}
Movieclip.prototype.drawwave
= function(w, h) {
for (var i = 0; i<=6.3; i += 0.01) {
this.lineTo(x=w/Math.cos(i), y=h*Math.sin(i)/Math.cos(i));
this.linestyle(1);
}
};
_root.createEmptyMovieClip("wave", 105);
with (wave) {
drawwave(100, 100);
_x += 200;
_y += 200;
//
顶点坐标
}