| 首页 | 新闻 | 网页 | 设计 | 色彩 | 原创 | 视觉 | 素材 | 动漫 | 酷站 | 策划 | 文案 | 访谈 | 运营 | 编程 | 数据库 | 服务器 | 下载 | 图库 | 
您的位置: 幽幽天空 > 网页 > 网页制作 > Flash教程 > ActionScript教程 > 文章正文 用户登录
手绘教程之背景的
鬼火的AS画线教程
鬼火loading完全手
as的画圆形的动画
好玩的画板教程

鬼火的画图板教程           

鬼火的画图板教程

作者:佚名 来源:闪吧 作者: 鬼火 更新:2007-1-13 20:48:14 错误报告 我要投稿

+++鬼火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)
 所以为了显示画笔在白板上面的相对位置,我们减去初始值.

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

 源文件下载:
 http://file.flash8.net/2003up/2003/6/7/200367002246158.rar
文章录入:skyuu    责任编辑:skyuu 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    发表评论:
    姓名:  评 分: 1分 2分 3分 4分 5分
     
  • 严禁发表危害国家安全、政治、黄色淫秽等内容的评论。
  • 用户需对自己在使用幽幽天空服务过程中的行为承担法律责任。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表机友个人观点,与本网站立场无关。