注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

《电脑之家》

请点击:“日志”浏览电脑知识

 
 
 

日志

 
 

AS绘图  

2010-02-20 11:55:11|  分类: AS教程系列 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
   

用AS绘图

AS2.0这我们提供了一些绘图方法,利用这些方法,我们可以绘制一些图形。下面来认识一下这些方法。首先是画直线,要画线应先确定线的类型等,AS提供的是:

lineStyle() 方法:该方法确定线条的类型。
常用格式:MC.lineStyle(粗细,颜色,透明度)。该方法还有其它一些参数,本文就不介绍了。
比如:my_mc. lineStyle(1,0xff0000,100)
这就指明了线条粗细为1,颜色是红色,透明度为100%。

 

有了线条样式后就可以画直线了,首先将画笔移到要开始画直线的起始点上,AS提供了:
moveTo()方法:该方法将画笔移到起画点上。
用法:MC.moveTo(x,y); //可以单纯地理解为画笔起点;

 

起画点有了,就可以画线了,AS提供了:
lineTo()方法: 该方法将从起画点到终点画一条直线,并将起画点移到终点。
用法:MC.lineTo(x,y) //可以单纯地理解为画笔终点;

----------------------------------------------------------------------

绘图三要素:1:图形属性;   2:起点;  3:终点;


有了上面的三个方法就可以画直线了,下面就画一条:

this.lineStyle(1,0xff0000,100);
this.moveTo(0,0);
this.lineTo(200,200);

 

测试影片,上面的代码画了一条从(0,0)到(200,200)的红色直线。

下面扩展一下,画个三角形:

this.lineStyle(1,0xff0000,100);
this.moveTo(200,200);
this.lineTo(300,200);
this.lineTo(250,300);
this.lineTo(200,200);

 

我想我们绘画,肯定不会甘心只画一些线条,还想画一些形状,下面的方法对我们这种愿望提供了可能。

beginFill()方法:该方法从字面上就能理解,开始填充。
用法:MC.beginFill(颜色,透明度)

 

endFill()方法:用beginFill()中的颜色填充图形。
比如将上面的三角形填上蓝色:

this.lineStyle(1,0xff0000,100);
this.beginFill(0x0000ff,100);
this.moveTo(200,200);
this.lineTo(300,200);
this.lineTo(250,300);
this.lineTo(200,200);
endFill();

绘制引导线:

绘制或导入图形后转换为MC,实例名称为:ball_mc.
然后在帧动作面板中输入AS指令:


var a:Array;

this.onMouseDown = function() {
this.lineStyle(1, 0x0000ff, 100);
a = new Array();
a.push(_xmouse, _ymouse);
this.moveTo(_xmouse, _ymouse);
this.onMouseMove = function() {
a.push(_xmouse, _ymouse);
this.lineTo(_xmouse, _ymouse);
};
};
this.onMouseUp = function() {
delete this.onMouseMove;
var z:Number = new Number();
this.onEnterFrame = function() {
ball_mc._x = a[z++];
ball_mc._y = a[z++];
if(z>a.length){
delete onEnterFrame;
this.clear();
};
}
};

画圆:

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);
}

用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();

AS代码画石英钟:

 //画钟表边线
this.createEmptyMovieClip("bianxian_mc", 1);
with (bianxian_mc) {
lineStyle(2, 0xCCCCCC);
moveTo(Math.cos(0*Math.PI/180)*96, Math.sin(0*Math.PI/180)*96);
for (var i = 360; i>=0; i--) {
lineTo(Math.cos(i*Math.PI/180)*96, Math.sin(i*Math.PI/180)*96);
}
_x = 100;
_y = 110;
}
//创建时间动态文本
this.createTextField("my_txt", 2, 0, 0, 0, 0);
with (my_txt) {
autoSize = true;
textColor = 0x555555;
_x = 70;
_y = 60;
}
//画12个表格
this.createEmptyMovieClip("biaoge_mc", 3);
with (biaoge_mc) {
lineStyle(2, 0xCCCCCC);
moveTo(0, -96);
lineTo(0, -92);
_x = 100;
_y = 110;
}
for (i=1; i<12; i++) {
duplicateMovieClip(biaoge_mc, "biaoge_mc"+i, 3+i);
setProperty("biaoge_mc"+i, _rotation, i*30);
}
//画时针
this.createEmptyMovieClip("shizhen_mc", 16);
with (shizhen_mc) {
lineStyle(4, 0x666666);
moveTo(0, 0);
lineTo(0, -60);
_x = 100;
_y = 110;
}
//画分针
this.createEmptyMovieClip("fenzhen_mc", 17);
with (fenzhen_mc) {
lineStyle(2, 0x666666);
moveTo(0, 0);
lineTo(0, -75);
_x = 100;
_y = 110;
}
//画秒针
this.createEmptyMovieClip("miaozhen_mc", 18);
with (miaozhen_mc) {
lineStyle(1, 0x666666);
moveTo(0, 0);
lineTo(0, -90);
_x = 100;
_y = 110;
}
//让时针、分针、秒针动起来
this.createEmptyMovieClip("time_mc", 19);
time_mc.onEnterFrame = function() {
my_date = new Date();
shi = my_date.getHours();
fen = my_date.getMinutes();
miao = my_date.getSeconds();
shizhen_mc._rotation = shi/12*360+fen/60*30;
fenzhen_mc._rotation = fen/60*360+miao/60*6;
miaozhen_mc._rotation = miao/60*360;
if (shi<10) {
shi = "0"+shi;
}
if (fen<10) {
fen = "0"+fen;
}
if (miao<10) {
miao = "0"+miao;
}
my_txt.text = shi+":"+fen+":"+miao;
};
//画中心圆
this.createEmptyMovieClip("yuan_mc", 20);
with (yuan_mc) {
beginFill(0x555555);
moveTo(Math.cos(0*Math.PI/180)*4, Math.sin(0*Math.PI/180)*4);
for (var i = 360; i>=0; i--) {
lineTo(Math.cos(i*Math.PI/180)*4, Math.sin(i*Math.PI/180)*4);
}
_x = 100;
_y = 110;
}

  评论这张
 
阅读(287)| 评论(2)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017