建站学 - 轻松建站从此开始!

建站学-个人建站指南,网页制作,网站设计,网站制作教程

当前位置: 建站学 > 图像设计 > Flash教程 >

Flash教程:用AS绘制各种图形(2)

时间:2011-02-11 20:54来源: 作者: 点击:
此刻问题又来了,这花的颜色不理想,是纯色的,在flash创作工具中还有个叫什么渐变填充的家伙,可以搞出些更好的结果,在AS中同样有这家伙。 beginGradientFill()体例:该体例可实现渐变填充。 参数:fillType:

此刻问题又来了,这花的颜色不理想,是纯色的,在flash创作工具中还有个叫什么渐变填充的家伙,可以搞出些更好的结果,在AS中同样有这家伙。

beginGradientFill()体例:该体例可实现渐变填充。
参数:fillType: ― 线性渐变用"linear",放射渐变用"radial"。
colors: ― 用于渐变色的 RGB 十六进制颜色值的数组;例如,红色为 0xFF0000,蓝色为 0x0000FF。可以至多指定 15 种颜色。对于每种颜色,请确保在 alphas 和 ratios 参数中指定对应值。
alphas: ― colors 数组中对应颜色的 Alpha 值数组;有用值为 0 到 100。若是值小于 0,则 Flash 利用 0。若是值大于 100,则 Flash 利用 100。
ratios: ― 颜色分布比例数组;有用值为 0 到 255。即渐变中每种颜色的比例值,可以理解为颜色面板中,渐变色的滑块的位置。好比在colors参数为:[0xFF0000,0x0000FF],本参数为:[250,255],那么就相当于在混色器中的这种情况:
matrix: ― 一个转换矩阵:
flash.geom.Matrix 类包罗 createGradientBox() 体例,经由过程该体例可以便利地设置矩阵,以便用于 MovieClip 类的 beginGradientFill() 体例。
用法:首先需要导入flash.geom.Matrix类
import flash.geom.*
然后,建立一个flash.geom.Matrix类的实例,再挪用createGradientBox体例:
matrix = new Matrix();
matrix.createGradientBox(渐变规模的宽,渐变规模的高,扭转, x轴标的目标的偏移量,y轴标的目标的偏移量);
x轴标的目标的偏移量:一般为要填充的外形的x减去渐变规模的宽。
y轴标的目标的偏移量:一般为要填充的外形的y减去渐变规模的高。
按照外形可调。
这里边的4个参数想一下渐变填充工具就清楚了。
focalPointRatio: [可选] ― 在 Flash Player 8 中添加。一个数字,节制渐变焦点的位置。值 0 暗示焦点位于中心。值 1 暗示焦点位于渐变圆的一条鸿沟上。值 -1 暗示焦点位于渐变圆的另一条鸿沟上。小于 -1 或大于 1 的值将被舍入为 -1 或 1。

有了这个体例我们就想把那朵花搞成桃花了,利用由红色到粉红色的放射填充。

结果:


代码:

import flash.geom.*;
this.createEmptyMovieClip("mh_mc",this.getNextHighestDepth());
mh_mc._x = Stage.width /2;
mh_mc._y = Stage.height/2;
var color:Array = [0xFF0000,0xfee7f8];
var alph:Array= [100,100];
var rotio:Array = [0,255];
var matrix = new Matrix();
matrix.createGradientBox(40,100,Math.PI,-20,-40);//这里要填充的外形注册点是(0,0)这样就算出了-20,和-40(调整后的)
mh_mc.beginGradientFill("radial",color,alph,rotio,matrix);
mh_mc.moveTo(0,0);
mh_mc.curveTo(-20,-25,-10,-45);
mh_mc.curveTo(0,-60,10,-45);
mh_mc.curveTo(20,-25,0,0);
mh_mc.endFill();
for(i=0;i<5;i++){
mh_mc.duplicateMovieClip("mh"+i,this.getNextHighestDepth());
mh1_mc = eval("mh"+i);
mh1_mc._rotation= i*72;
}
this.createEmptyMovieClip("hz_mc",0);
hz_mc._x =Stage.width/2;
hz_mc._y = Stage.height/2;
hz_mc.lineStyle(6,663333,100);
hz_mc.moveTo(0,0);
hz_mc.curveTo(-5,110,0,160);
this.createEmptyMovieClip("hy_mc",this.getNextHighestDepth());
hy_mc._x =Stage.width/2;
hy_mc._y = Stage.height/2;
color = [0x0e730d,0x06db2b];
matrix.createGradientBox(60,20,Math.PI,10,50);
hy_mc.beginGradientFill("radial",color,alph,rotio,matrix);
hy_mc.moveTo(0,70);
hy_mc.curveTo(35,40,70,50);
hy_mc.curveTo(35,90,0,70);
hy_mc.endFill();
hy_mc.duplicateMovieClip("hy1_mc",this.getNextHighestDepth());
hy1_mc._xscale = -100;
hy1_mc._x =hy_mc._x -6;
hy1_mc._y =hy_mc._y +10;


差不多了,再做两个操练,一个是涂鸦板的建造,一个是动态指导线的结果。


涂雅板的建造:

结果如下,在左边选择颜色和粗细后,可在右边绘图。


按下丹青好图形,并将每个图形转换为MC.

 

实例名称:

黑色-hs_mc;
红色-hongs_mc;
橙色-cs_mc;
黄色-huans_mc;
绿色-lus_mc;
蓝色_nans_mc;
紫色-zs_mc;
大园-m6_mc;
二园-m4_mc;
三园_m3_mc;
幺园-m1_mc;
新插入一层,打开帧动作面板,输入:
var color = 0x000000;
var dx =1;
var h:Boolean = true;
hs_mc.onRelease = function (){
color = 0x000000;
}
hongs_mc.onRelease = function (){
color = 0xFF0000;
}
cs_mc.onRelease = function (){
color = 0xFF9900;
}
huans_mc.onRelease = function (){
color = 0xFFFF00;
}
lus_mc.onRelease = function (){
color = 0x00FF00;
}
nans_mc.onRelease = function (){
color = 0x0000FF;
}
zs_mc.onRelease = function (){
color = 0xFF00FF;
}
m1_mc.onRelease = function(){
dx = 1;
}
m3_mc.onRelease = function(){
dx = 3;
}
m4_mc.onRelease = function(){
dx = 4;
}
m6_mc.onRelease = function(){
dx = 6;
}
onMouseDown = function(){
if(_xmouse >170){
h=true;
}
lineStyle(dx,color,100);
moveTo(_xmouse,_ymouse);
}
onMouseMove = function(){
if(_xmouse <170){
h=false;
}
if(h){
lineTo(_xmouse,_ymouse);
}
}
onMouseUp= function(){
h=false;;
}


鼠绘指导线:

结果如下:用鼠标画一条指导线,小球将按指导线活动.


画一个球,或者你喜好的任何玩意儿,转换为MC,实例名称为:ball_mc.
然后在帧动作面板中输入:
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();
};
}
};

(责任编辑:admin)
织梦二维码生成器
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片