vary2:Number=-(y0-200);
this.graphics.clear();//清除原有图像
//以下几句通过color参数的不同,定义不同的线条样式
if(color=='blue'){
this.graphics.lineStyle(3,0x1000FF,0.8);
}elseif(color=='red'){
this.graphics.lineStyle(3,0xff0000,0.8);
}elseif(color=='yellow'){
this.graphics.lineStyle(3,0xffcc00,0.8);
}
this.graphics.moveTo(x2,y2);//设置画线起点
//以下使用循环语句绘图,由多条小线段组成函数图像,由于线段都很短,看起来函数图像还是很平滑的
for(x0=-274;x0
x1=x0/20;
y1=a1*Math.pow(x1,2)+b1*x1+c1;
y0=y1*20;
x2=x0+275;
y2=-(y0-200);
this.graphics.lineTo(x2,y2);//画线
this.graphics.moveTo(x2,y2);
}
}
}
}
(2)打开“动态绘形的选中与编辑.fla”在其第一帧上输入语句如下:
fscommand('allowscale','true');//允许缩放
varhuitu:MovieClip=newMovieClip();//创建一个MovieClip类对象huitu,绘图在这个对象中
addChild(huitu);//显示对象huitu
varjm1:jm=newjm();//创建jm类的对象jm1,这样可以使我们静态绘制的“界面”在动态图形的上层
addChild(jm1);
varediting:uint=0;//保存正在编辑的动态图形的标号
varmaxn:uint=1000;//以下几句定义一维数组并赋初始值,数组用于正在显示的所有动态图象的标号
varmysz=newArray();
for(vari=0;i
mysz[i]=0;
}
jm1.pwxfc.visible=false;//不显示抛物线方程
//如果有其它方程也在此设置,如:jm1.yuanfc.visible=false;
jm1.add_pwx.addEventListener(MouseEvent.CLICK,addpwx1);//为“添加抛物线”按钮添加鼠标侦听事件
functionaddpwx1(e:MouseEvent){
jm1.pwxfc.visible=true;//显示抛物线方程
//如果有其它方程设为不显示如:jm1.yuanfc.visible=false;
if(editing!=0){//如果有正在编辑的图象重设为不编辑状态,变为“蓝色”
if(huitu['f'+editing].tuxing=='pwx'){//如果正在编辑的图像是抛物线,重绘抛物线为蓝色
huitu['f'+editing].draw_pwx('blue');
}//如果正在编辑的是其它方程的图像写后面如:elseif(huitu['f'+editing].tuxing=='yuan'){huitu['f'+editing].draw_yuan('blue');}
editing=0;//为零表示没有正在编辑的图像
}
jm1.pwxfc.a1.value=0;//将抛物线方程中的三个组件清零
jm1.pwxfc.b1.value=0;
jm1.pwxfc.c1.value=0;
editing=1;//以下几句找到一个没有用过的标号
while(mysz[editing]!=0){
editing++;
}
huitu['f'+editing]=newpwx_mc();//在huitu对象中,以“'f'+editing”为对象命创建一个基于pwx_mc的对象
huitu['f'+editing].n=editing;//将新标号保存到数组中
huitu.addChild(huitu['f'+editing]);//在huitu对象内显示对象'f'+editing
huitu['f'+editing].addEventListener(MouseEvent.MOUSE_DOWN,f_pwx);//为对象'f'+editing添加鼠标按下事件,用于选中这个图象。
functionf_pwx(e:MouseEvent){
if(editing!=0){//如果有正在编辑的图像改为不编辑状态
if(huitu['f'+editing].tuxing=='pwx'){//正在编辑的图像是抛物线,重绘抛物线图像为蓝色
huitu['f'+editing].draw_pwx('blue');
}//如果是其它图像可以写在后面
}
e.target.draw_pwx('red');//将鼠标按下的抛物线图像变为红色,即编辑状态
jm1.pwxfc.visible=true;//显示抛物线方程
//如果有其它方程都不显示如:jm1.yuanfc.visible=false;
jm1.pwxfc.a1.value=e.target.a1;//以下三句将一元二次方程的三个参数返还给相应组件用于编辑
jm1.pwxfc.b1.value=e.target.b1;
jm1.pwxfc.c1.value=e.target.c1;
editing=e.target.n;//将正在编辑图像的标号设为这个图像的
}
huitu['f'+editing].addEventListener(MouseEvent.MOUSE_OVER,f_pwx2);//为对象'f'+editing添加MOUSE_OVER事件当鼠标指向这个函数图象时变为黄色
functionf_pwx2(e:MouseEvent){
e.target.draw_pwx('yellow');
}
huitu['f'+editing].addEventListener(MouseEvent.MOUSE_OUT,f_pwx3);//为对象'f'+editing添加MOUSE_OUT事件当鼠标离开这个函数图象时变为原有颜色
functionf_pwx3(e:MouseEvent){
if(e.target.n==editing){
e.target.draw_pwx('red');
}else{
e.target.draw_pwx('blue');
}
}
}
//下面几句分别为方程中三个NumericStepper组件添加监听事件
jm1.pwxfc.a1.addEventListener(Event.CHANGE,pwx);
jm1.pwxfc.b1.addEventListener(Event.CHANGE,pwx);
jm1.pwxfc.c1.addEventListener(Event.CHANGE,pwx);
functionpwx(e:Event){
huitu['f'+editing].a1=jm1.pwxfc.a1.value;//以下三句将方程中的三个NumericStepper组件的值保存到对象的相应变量中
huitu['f'+editing].b1=jm1.pwxfc.b1.value;
huitu['f'+editing].c1=jm1.pwxfc.c1.value;
huitu['f'+editing].draw_pwx('red');//在对象中绘制红色一元二次方程图像
mysz[editing]=editing;//保存函数标号
}
jm1.shanchu.addEventListener(MouseEvent.CLICK,shanchu1);//为“删除”按钮添加鼠标单击事件
functionshanchu1(e:MouseEvent){
jm1.pwxfc.visible=false;//不显示抛物线方程
//如有其它方程也设为不显示如:jm1.yuanfc.visible=false;
if(editing!=0){//有正有编辑的图像,移除这个图像所在的对象
huitu.removeChild(huitu['f'+editing]);
mysz[editing]=0;//将数组中相应元素清零
editing=0;//editing=0表示没有正在编辑的图象
}
}
jm1.ok.addEventListener(MouseEvent.CLICK,ok1);//为“确定”按钮添加鼠标单击事件
functionok1(e:MouseEvent){
jm1.pwxfc.visible=false;//不显示抛物线方程
//如果有其它方程也在此设为不显示
if(editing!=0){如果有正有编辑的图像,将其变为不编辑状态,其蓝色
if(huitu['f'+editing].tuxing=='pwx'){//如果正在编辑的图像是抛物线变为不编辑状态“蓝色”
huitu['f'+editing].draw_pwx('blue');
}//如果正在编辑的图像是其它函数图像也在后面
editing=0;//editing=0;表示没有正在编辑的图像
}
}
stop();
至此我们的Flash动态绘图程序已经有了选中和编辑的功能了,可以测试一下看看效果了。

图4 2/2 首页 上一页 1 2 |