选择显示字体大小

鬼火的画图板教程

+++鬼火as,自己也来做画图板++++++++ 
 
 

 //复制出一些色块,并且为色块分别设定颜色
 //设定色块的位置使他们整齐排列(用余数来实现,每排5个)
 for (r=0; r<=0xff; r += 0x33) {
 for (g=0; g<=0xff; g += 0x33) {
 for (b=0; b<=0xff; b += 0x33) {
 duplicatemovieclip("colorbox", "colorbox"+i, i+50);
 _root["colorbox"+i]._x = 15+int(i/16)*10;
 _root["colorbox"+i]._y = 40+i%16*10;
 colors = new color(_root["colorbox"+i]);
 colors.setrgb(r*256*256+g*256+b*256);
 i++;
 }
 }
 }
 //设定复制铅笔
 duplicatemovieclip("pen", "pen1", 400000);
 //设定铅笔和小色块不可见
 pen._visible = false;
 colorbox._visible = false;
 mouse.hide();
 startdrag("pen1", true);
 //pen._visible=0;
 //colorbox._visible=0;
 //初始化变量
 pencolor = new color(_root.pen1.pencolor1);
 pencolor.setrgb(0);
 n=1;
 x0=0;
 panduan=0; 

 
 //as for frame2//

 
 //设定线条的函数是他们事先能够鼠标跟随地画出线条
 //鼠标点下的时候记录当时的位置
 if (panduan == 1) {
 if (x0== 0) {
 x0 = _xmouse;
 y0 = _ymouse;
 //当鼠标起来的时候,再次记录鼠标的位置 
 } else {
 a1 = _xmouse;
 a2 = _ymouse;
 b1 = _xmouse;
 b2 = _ymouse;
 n = n+1;
 createemptymovieclip("xiantiao"+n, n+10000);
 with (_root["xiantiao"+n]) {
 linestyle(1, _root.pencolor.getrgb(), 100);
 moveto(x0, y0);
 curveto(a1, a2, b1, b2);
 x0 = b1;
 y0 = b2;
 }
 }
 }

 
 //as for frame3//

 gotoandplay(2);

 
 //as for bord button//

 on (press, dragout) {
 //设置panduan的值,他将用于frame2的判断
 panduan = 1;
 }
 on (release, dragout) {
 //还原x0的值
 panduan = 0;
 x0 = 0;
 }

 
 //as for color button//

 
 on (release) {
 getcolor = new color(this);
 _root.pencolor.setrgb(getcolor.getrgb());
 }

 
 //as for"取消" button//

 on (release) {
 while(n>1) {
 _root["xiantiao"+n].clear();
 n--;
 }
 }

 
 //as for "后退" button//

 on (release) {
 if(n>1) {
 _root["xiantiao"+n].clear();
 n--;
 }
 }

 //as for blankmc//

 onclipevent(enterframe){
 _root.textx=_root._xmouse-160;
 _root.texty=_root._ymouse-30;
 }

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

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

 

 昨天偷懒,把图片和文字分开而且没有为每一步加上图示,被班班大人说了一顿.
 5555
 今天改过自新,重新整理一番:
 我采用仿照一位师兄的源文件来做为例子来讲解这个问题.
 在上面我的帖子里面已经详细的讲解了数组对象颜色(color)对象的用法.
 也讲过来哦几个线条相关的方法的使用,他们的功能是很强大的,
 不像我前面的例子里面那样,画几条小线线而已.

 讲一讲思路,大家应该习惯于在做一件flash之前讲要做的步骤考虑好
 //建立颜色库,让他们有序的排列
 //设置钢笔可以从颜色库里面提取颜色
 //设置钢笔落下运行的时候,线条跟着笔尖出现
 //设置一个可以取消轨迹的按钮和一个可以逐步取消轨迹的按钮
 //设置两个可以显示钢笔现在的位置的文本框
 开始正式的工作
 大家看看图示--就是很多红圈圈的那张
 1:首先我们在五台上面建一个白板,将其转换为按钮对象
 见图t1
 
 2:建立两个按钮,在上面分别写上"后退"和"撤销"
 见图t2
 
 3:建立两个动态文本框,分别在前面写上x,y;为动态文本框x设置var为text_x,y为text_y
 见图t3
 
 --------------------------------------------------------------------------------

 

 4:绘制一只钢笔,钢笔的制作有点儿技巧.为了表示好钢笔的颜色,我们将钢笔作为两层,上面一层放那些修饰性的图案.
 下面一层放上一个电影夹子,命名为pencolor,作为待会儿变色的对象
 5:将钢笔mc放到五台上面,命名为pen
 6:新建一个mc命名为colorboxmc,制作一个10*10的小色块,什么颜色不重要,将小色块的位置设置为(0,0).
 7:新建一个button,在之中绘制一个10*10的小色块,只在他的hit帧里是关键帧,其他三帧都是空白的关键帧,设置小色块的位置为(0,0)
 8:将7建立botton拖到colorboxmc里面,设置其位置为(0,0)
 9:将colorboxmc拖动到五台上面,命名为colorbox
 10:在舞台第一帧里面添加如下代码:

 for (r=0; r<=0xff; r += 0x33) {
 for (g=0; g<=0xff; g += 0x33) {
 for (b=0; b<=0xff; b += 0x33) {
 duplicatemovieclip("colorbox", "colorbox"+i, i+50);
 _root["colorbox"+i]._x = 15+int(i/16)*10;
 _root["colorbox"+i]._y = 40+i%16*10;
 colors = new color(_root["colorbox"+i]);
 colors.setrgb(r*256*256+g*256+b*256);
 i++;
 }
 }
 }
 上面的代码的意思是,判断r,g,b的值,以16进制的0x33为单位减淡颜色,复制出来的
 新的小色块的位置排列是这两句实现的:
 _root["colorbox"+i]._x = 15+int(i/16)*10;
 _root["colorbox"+i]._y = 40+i%16*10;
 里面的15和40分别是小色块排列的x和y起始值,也就是说,我们的小色块群的左上角的坐标是(15,40)
 int(i/16)*10是利用"int取得数字的不大于自身的整数"的性质来判断是否应该变化小色块的横坐标
 再详细点就是:当i<16的时候,int(i/16)的值是0,那么没一行就又16个小色块.因为小色块的高是10,
 所以乘以10.
 第二句里面的i%16*10,是用i除以16的余数来判断是否因该变化小色块纵坐标.这样i=0和i=16时小色块的
 
 
 
 --------------------------------------------------------------------------------

 
 11:上面的步骤已经实现了色块的有序排列,那么下面,我们继续来讲钢笔可以从色库里面提取颜色的问题,
 其实就是"要再当钢笔再小色块上面点下时,钢笔的颜色制动变化为色块的颜色.
 12:我们已经知道钢笔的构成里面有pencolor作为色彩变化的对象
 为了在后面画线的时候,钢笔不会被线条取代,我们需要复制一个新的钢笔,命名为pen1,将他放置倒一个很高的层里面,比如999999,呵呵
 duplicatemovieclip("pen", "pen1", 400000);
 隐藏原来的钢笔
 pen._visible=false;
 当然
 pen._visible=0;
 也可以,呵呵

 再为钢笔的色彩变化对象pencolor1设置颜色对象pencolor,初始颜色为黑色
 pencolor = new color(_root.pen1.pencolor1);
 pencolor.setrgb(0);

 13:打开colorboxmx,再上面的按钮上添加下面的as:

 
 on (release) {
 getcolor = new color(this);
 _root.pencolor.setrgb(getcolor.getrgb());
 }
 大体的意思是:
 再按下的时候,建立一个颜色装载器getcolor取得当前对象(this)的颜色,
 然后设置五台上面的颜色对象pencolor的颜色为getcolor里面所存储的rgb
 在第一帧上面再添加几个变量,用于后面的判断
 n=1;
 x0=0;
 panduan=0;
 //这几个变量你设初始值为多少那是你的哦事情,呵呵,不要问我为什么一定是1,0,0了.
 只要在后面的变化里面设置相应的直就是了.
 
 
 --------------------------------------------------------------------------------

 

 
 14:下面解决第三个问题:
 再第二帧建一个空白关键帧.
 要钢笔在落下的时候实现线条跟着笔尖出现.
 我们要利用鼠标点击事件来完成这件工作.
 而我们的按钮就是那块白板.
 鼠标按下的时候,鼠标有一个位置,鼠标按下再释放的时候
 鼠标又有一个位置,那么可以根据这两个位置来确定线条.
 但是仅仅有两个点的话,画出来的就是直线了,
 所以我们还需要有另外的一帧来和第二帧构成循环,这样我们的
 鼠标运动的时候才能够动态的获得鼠标的位置.
 设置两个变量,当鼠标press时候和release的时候,我们的鼠标的坐标能够被储存.
 在白板按钮上面添加下面的as

 on (press, dragout) {
 //设置panduan的值,他将用于frame2的判断
 panduan = 1;
 }
 on (release, dragout) {
 //还原x0的值
 panduan = 0;
 x0 = 0;
 }

 15:我们能要在鼠标点下的时候和鼠标起来的时候获得鼠标的位置,用于绘制线条.
 //设定线条的函数是他们事先能够鼠标跟随地画出线条
 //鼠标点下的时候记录当时的位置
 if (panduan == 1) {
 //panduan=1的时候也就是鼠标刚按下的时候,赋予x0新的值
 if (x0== 0) {
 x0 = _xmouse;
 y0 = _ymouse;
 //因为x0的值变成了鼠标的位置,所以x0不再为0
 //当鼠标起来的时候,再次记录鼠标的位置 
 } else {
 a1 = _xmouse;
 a2 = _ymouse;
 b1 = _xmouse;
 b2 = _ymouse;
 n = n+1;
 //这时候建立许多的空白电影夹子来储存线条
 createemptymovieclip("xiantiao"+n, n+10000);
 //对每个电影夹子里面设定线条对象 
 with (_root["xiantiao"+n]) {
 linestyle(1, _root.pencolor.getrgb(), 100);
 moveto(x0, y0);
 curveto(a1, a2, b1, b2);
 //赋予x0的值为当前的鼠标位置
 x0 = b1;
 y0 = b2;
 }
 }
 }

 
 //在第三帧里面添加gotoandplay(2);
 其他的就是修饰性的工作了.
 建立一个空白的mc,为他添加as:
 onclipevent(enterframe){
 _root.textx=_root._xmouse-160;
 _root.texty=_root._ymouse-30;
 }

 里面之所以要减去160和30,是因为我们的图画板的位置在(160,30)
 所以为了显示画笔在白板上面的相对位置,我们减去初始值.

 
 //终于完成了,常常的吐了一口气: )

 源文件下载   


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons