快速业务通道

体验Flash MX(4):用代码绘图

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-15
m(10),i*random(10));
    endfill();
   }
  }   这里我们先抛弃所谓的程序执行效率,用感性的大脑来写程序。凭空想象可能发生的事情,如果不知道的话,就随便写几个random,然后动态改变颜色和Alpha,最后用curveto方法来画曲线。值得注意的是curveto的后两个参数x轴曲线偏移和y轴曲线偏移,不要做的太大,否则会更慢……,程序写完后执行一下,n秒钟后出现了一幅图画,看起来还有点味道(图3) (图3,我不知道是什么,我想毕加索也不知道)
  看来,艺术的意义永远无法解释,但我们的程序还得继续往下写。上面说的Fill方法的第一种是普通的beginFill,只可以填充固定的颜色;而另一种就比较好用了,叫做beginGradientFill,用途是填充过渡色。还是先来动手再说是怎么回事,加代码:   createEmptyMovieClip("drawobj", 1);
  drawobj.linestyle(.1, 0x111111, 100);
  for (var i=0; i<=100; i++) {
   with (drawobj) {
    cx=random(200);
    cy=random(200);
    makeBox(cx,cy,random(100));
    drawWay=random(2) ===1 ? "linear" : "radial";
    colorRange = [0x111111, 0xeeeeee];
    alphaRange = [random(100), random(100)];
    ra = [0, random(255)];
    colorChart = {a:random(100), b:0, c:0, d:random(100), e:0, f:random(100), g:random(100), h:random(100), i:1};
    beginGradientFill(drawway, colorRange, alphaRange, ra, colorChart);
   }
  }   这里我们分别使用begineGradientFill的两种填充方式:linear线性填充和radial环行填充来演示了一些正方形组合在一起的样子。这种填充方式需要的数据比较多,而且都为数组形式,其格式是唯一的:beginGradientFill(方式,颜色范围,Alpha范围,过渡范围,过渡参数),缺一不可;但是过渡参数的形势可以有两种,一种是以3*3矩阵表示,内容为[a,b,c,d,e,f,g,h,i],分别表示填充的宽,x轴起点,y轴起点,明度,x轴偏移色,y轴偏移色,高,填充角度等填充参数;而另一种比较直观,是以[x轴起点;y轴起点;宽;高;填充角度]组成的数组,我比较喜欢这种方式,方便而且速度快一些。我们随机的放入一些数据来看看能形成什么样子,不过在这个过程中,我意外的发现如果我们先用makeBox,再做Fill,那么将不会用到endfill()来结束填充(这个endfill总感觉没什么用途,或者说没有它应该有的功能)。运行一下,又经过几十秒后,一幅很酷的类似某有名设计师的画面出现了……(图4) (图4,真的眼熟……)   最后,如果你不喜欢这个样子,你可以用drawobj.clear()来清空你画的这些……   程序化的Mask蒙版   Flash MX现在已经可以在程序中直接定义两个Mask的主从关系,让我们从一个例子来看看:(代码)   Movieclip.prototype.makeBox = function(x, y, l) {
   this.lineto(x, y+l);
   this.lineto(x+l, y+l);
   this.lineto(x+l, y);
   this.lineto(x, y);
  };   createEmptyMovieClip("drager",2);
  drager.linestyle(.1, 0x111111, 100);
  drager.beginfill(0x333333, 100);
  drager.makeBox(0,0,30);
  drager.endfill();
  createEmptyMovieClip("jpgObj",1);
  createEmptyMovieClip("loader",3);
  loader.onenterframe=function(){
   if(_root.jpgObj._width<>0){
    _root.jpgObj.setMask
    (_root.drager);removeMovieclip(this)
   }
  };
  jpgObj.loadMovie("boy.jpg");
  drager.startDrag(true);   这个例子我们结合这几天所学的一些东西,而且还用到了那个小男孩。程序开始的时候会画出一个灰色的正方形,当然作为Mask的MovieClip颜色是无所谓的,接

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号