| 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 |