×

关注微信公众号

免备案网站空间虚拟主机双线空间域名查询PS数码后期
photoshop互助课堂数百G视频教程下载英语培训机构初中英语如何学随时随地聆听大师开讲/课堂
酷素材!视频教程打包下手绘教程抠图教程路径专辑photoshop cs3视频教程
查看: 6374|回复: 12

Ball类(1)

[复制链接]
发表于 2010-9-24 17:47:00 | 显示全部楼层 |阅读模式
本帖最后由 sanbos 于 2010-9-26 11:52 编辑

Ball类
  1. package
  2. {       
  3.         import flash.display.Sprite;   
  4.         public class Ball extends Sprite
  5.         {               
  6.                 private var radius:Number;
  7.                 private var color:uint;
  8.       
  9.                 public function Ball(radius:Number=40,color:uint=0xff0000)
  10.                 {
  11.                         this.radius = radius;
  12.                         this.color = color;
  13.                         init();
  14.                 }               
  15.                 public function init():void
  16.                 {
  17.                         graphics.beginFill(color);
  18.                         graphics.drawCircle(0,0,radius);
  19.                         graphics.endFill();
  20.                 }
  21.         }
  22. }
复制代码
这个Ball类很简单,就是绘制一个圆。保存名为Ball。

使用方法。建一个FLA文件,保存在Ball类的同一目录下。
在图层1的第一帧写入下面的代码:
  1. var radius:uint = 80;

  2. var ball:Ball = new Ball(radius,0x3366CC);
  3. addChild (ball);
  4. ball.x = stage.stageWidth / 2;
  5. ball.y = stage.stageHeight / 2;
复制代码
测试一下,一个蓝色的圆已经在播放器中了。

(有人说了这么丑陋)没关系让我们来修改它
  1. package
  2. {
  3.         import flash.display.Sprite;
  4.         import flash.display.Shape;
  5.         import flash.filters.DropShadowFilter;
  6.         import flash.filters.GlowFilter;
  7.         import flash.geom.Matrix;
  8.         import flash.display.GradientType;
  9.         import flash.display.SpreadMethod;
  10.         import flash.display.InterpolationMethod;
  11.         import flash.display.BlendMode;

  12.         public class Ball extends Sprite
  13.         {
  14.                 private var radius:uint;
  15.                 private var color:uint;
  16.                 private var ball0:Sprite;
  17.                 private var base:Shape;
  18.                 private var shadow:Shape;
  19.                 private var light:Shape;
  20.                 private var reflection:Shape;
  21.                 private var shade:Shape;
  22.                 private static var bColor:uint = 0xFFFFFF;
  23.                 private static var sColor:uint = 0x000000;
  24.                 public var angle:Number = 0;               

  25.                 public function Ball(r:uint,c:uint)
  26.                 {
  27.                         radius = r;
  28.                         color = c;
  29.                         draw();
  30.                 }

  31.                 private function draw():void
  32.                 {
  33.                         shade = new Shape  ;
  34.                         addChild(shade);
  35.                         shade.y = radius;
  36.                         createShade();
  37.                         ball0 = new Sprite  ;
  38.                         addChild(ball0);
  39.                         base = new Shape  ;
  40.                         ball0.addChild(base);
  41.                         shadow = new Shape  ;
  42.                         ball0.addChild(shadow);
  43.                         light = new Shape  ;
  44.                         ball0.addChild(light);
  45.                         reflection = new Shape  ;
  46.                         ball0.addChild(reflection);
  47.                         createBase();
  48.                         createShadow();
  49.                         createLight();
  50.                         createReflect();
  51.                 }

  52.                 private function createBase():void
  53.                 {
  54.                         base.graphics.clear();
  55.                         base.graphics.beginFill(color,0.8);
  56.                         base.graphics.drawCircle(0,0,radius);
  57.                         base.graphics.endFill();
  58.                 }

  59.                 private function createShadow():void
  60.                 {
  61.                         var colors:Array = [sColor,sColor,sColor];
  62.                         var alphas:Array = [0,0.2,0.3];
  63.                         var ratios:Array = [0,191,255];
  64.                         var matrix:Matrix = new Matrix  ;
  65.                         matrix.createGradientBox(radius * 3.2,radius * 3.2,0, -  radius * 2,

  66. -  radius * 2);
  67.                         shadow.graphics.beginGradientFill

  68. (GradientType.RADIAL,colors,alphas,ratios,matrix,SpreadMethod.PAD,InterpolationMethod.RGB,0)

  69. ;
  70.                         shadow.graphics.drawCircle(0,0,radius);
  71.                         shadow.graphics.endFill();
  72.                         shadow.blendMode = BlendMode.HARDLIGHT;
  73.                 }

  74.                 private function createLight():void
  75.                 {
  76.                         var colors:Array = [bColor,bColor,bColor];
  77.                         var alphas:Array = [1,0.2,0];
  78.                         var ratios:Array = [0,191,255];
  79.                         var matrix:Matrix = new Matrix  ;
  80.                         matrix.createGradientBox(radius * 3.2,radius * 3.2,0, -  radius * 2,

  81. -  radius * 2);
  82.                         light.graphics.beginGradientFill

  83. (GradientType.RADIAL,colors,alphas,ratios,matrix,SpreadMethod.PAD,InterpolationMethod.RGB,0)

  84. ;
  85.                         light.graphics.drawCircle(0,0,radius);
  86.                         light.graphics.endFill();
  87.                         light.blendMode = BlendMode.OVERLAY;
  88.                 }

  89.                 private function createReflect():void
  90.                 {
  91.                         var colors:Array = [bColor,bColor];
  92.                         var alphas:Array = [0.7,0];
  93.                         var ratios:Array = [0,191];
  94.                         var matrix:Matrix = new Matrix  ;
  95.                         var w:Number = radius * 1.44;
  96.                         var h:Number = radius * 1.35;
  97.                         var yOffset:Number = radius * 0.95;
  98.                         matrix.createGradientBox(w,h,0.5 * Math.PI, -  w * 0.5, -  yOffset);
  99.                         reflection.graphics.beginGradientFill

  100. (GradientType.LINEAR,colors,alphas,ratios,matrix,SpreadMethod.PAD,InterpolationMethod.RGB,0)

  101. ;
  102.                         reflection.graphics.drawEllipse( -  w * 0.5, -  yOffset,w,h);
  103.                         reflection.graphics.endFill();
  104.                 }

  105.                 private function createShade():void
  106.                 {
  107.                         shade.graphics.beginFill(sColor,0.6);
  108.                         shade.graphics.drawEllipse( -  radius * 0.75, -  radius *

  109. 0.1775,radius * 1.5,radius * 0.375);
  110.                         shade.graphics.endFill();
  111.                         var shadow:DropShadowFilter = new DropShadowFilter

  112. (0,90,sColor,0.5,radius * 0.15,radius * 0.15,1,3,false,false,true);
  113.                         shade.filters = [shadow];
  114.                 }
  115.         }

  116. }
复制代码
我们再来测试,一个有高光有阴影,立体感很强的球已经出现在我们面前。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?[免费注册]

x

评分

参与人数 1 +8 +2 收起 理由
sanbos + 8 + 2 多谢教程,辛苦了。

查看全部评分

发表于 2010-9-24 19:11:45 | 显示全部楼层
cao4811老师太厉害了,学生佩服!
回复 支持 反对

使用道具 举报

发表于 2010-9-24 20:02:03 | 显示全部楼层
支持一下
回复 支持 反对

使用道具 举报

发表于 2010-9-25 06:45:03 | 显示全部楼层
“测试一下,一个蓝色的圆已经在播放器中了。”这句不大明白,不知道这圆有什么用。见笑了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2010-9-25 09:32:35 | 显示全部楼层
4# nxasd
这个圆(Ball类)只是一个绘制圆形的类的结构。包含了ActionScript 3面向对象编程语法相关的常用关键字:package、import、public、class。
package定义包
import 导入所需的类
public 控制类成员的访问权限
class  定义类的名称

这个类是用来描述圆形的,它包含以下内容:圆形的半径,颜色。用两个变量来记录半径和颜色,这两个变量就是圆形的属性。我们要绘制这个圆形,那么就将绘制圆形设计成Ball类所拥有的一个方法。这个方法就是根据两个属性半径和颜色来绘制圆形。

但是只有这个类还不行,我们要在屏幕上看到它,就必需创建一个它的实例。在FLA文件中我们首先定义了半径,然后new一个实例出来,并把它放在舞台上,并确定了它在舞台上的位置。
回复 支持 反对

使用道具 举报

发表于 2012-1-11 11:42:10 | 显示全部楼层
多谢Cao4811老师。
回复 支持 反对

使用道具 举报

发表于 2013-5-26 09:00:10 | 显示全部楼层
强烈支持楼主。。。
回复 支持 反对

使用道具 举报

发表于 2014-5-26 10:51:09 | 显示全部楼层
感谢老师的好教程,学到很多。
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:08:26 | 显示全部楼层
楼主是超人
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:35:48 | 显示全部楼层
真心顶。。。。
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:43:44 | 显示全部楼层
不错不错
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:33:17 | 显示全部楼层
LZ真是人才
回复 支持 反对

使用道具 举报

发表于 2018-9-24 18:50:44 | 显示全部楼层
果断收藏了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | [免费注册]

本版积分规则