ActionScript3游戏中的图像编程(连载七)
2014-07-30 17:18
169 查看
总目录:/article/9486655.html
在后续的章节中,我们会经常使用圆来表示一个点或者创建一个色块。为了便于这一功能的重用,我决定把这个可爱的圆封装成一个Circle类并放到公共类库里(有的书喜欢用Ball来命名这样的类,但我个人认为取名Circle更加合适,因为纯色的圆并没有球的那种立体感):
代码创建了两个外观一模一样的显示对象,然后添加到舞台上显示(使用BlendMode只是为了方便创建多个色块,后续章节将会详细介绍它),其中一个将会使用ColorTransform进行变换,从而跟不变换的那个进行比较。
1.2.1 测试用例的书写
新建一个ActionScript项目,名为ShapeColorTransformTest,我在里面创建几个不同颜色的小圆,观察它们在应用了colorTransform之后的变化。代码如下:package{ [SWF(width = "800", height = "600")] public class ShapeColorTransformTest extends Sprite{ private var _testSprite_src:Sprite; //用于测试的显示对象(变换前) private var _testSprite_dst:Sprite; //用于测试的显示对象(变换后) private var _myColorTransform:ColorTransform; //颜色转换对象 public function ShapeColorTransformTest(){ init(); } private function init():void{ _testSprite_src = getTestSprite(); addChild(_testSprite_src); _testSprite_dst = getTestSprite(); _testSprite_dst.x = 200; addChild(_testSprite_dst); applyTransform(); } //创建用于测试的显示对象 private function getTestSprite():Sprite{ var _testSprite:Sprite = new Sprite(); var _shape1:Shape = new Shape(); //添加一个黑色的矩形底 _shape1.graphics.beginFill(0x000000); _shape1.graphics.drawRect(40, 30, 170, 290); _shape1.graphics.endFill(); _testSprite.addChild(_shape1); /*依次添加颜色分别为暗蓝,暗红,暗绿和纯白的4个圆*/ _testSprite.addChild(new Circle(50, 0x0000CC, 100, 200, "add")); _testSprite.addChild(new Circle(50, 0xCC0000, 150, 200, "add")); _testSprite.addChild(new Circle(50, 0x00CC00, 125, 250, 1,"add")); _testSprite.addChild(new Circle(50, 0xFFFFFF, 125, 100, 1, add")); return _testSprite; } private function applyTransform():void{ _myColorTransform = _testSprite_dst.transform.colorTransform; //初始化颜色变换对象(从显示对象里获取) _myColorTransform.redMultiplier = 1.5; _testSprite_dst.transform.colorTransform = _myColorTransform; //应用到显示对象上(变换后必须重新赋值,否则变换效果不起作用,详情可查阅帮助文档) } }
在后续的章节中,我们会经常使用圆来表示一个点或者创建一个色块。为了便于这一功能的重用,我决定把这个可爱的圆封装成一个Circle类并放到公共类库里(有的书喜欢用Ball来命名这样的类,但我个人认为取名Circle更加合适,因为纯色的圆并没有球的那种立体感):
package com.gemei.display{ public class Circle extends Sprite{ //为节省本书篇幅,我把x,y,alpha, blendMode这些基本属性都封装到Circle类里面了,项目开发中不推荐这么做 public function Circle(radius:Number = 50, color:uint = 0x000000, x:Number = 0, y:Number = 0, alpha:Number = 1, blendMode:String = BlendMode.NORMAL){ super(); this.x = x; this.y = y; this.blendMode = blendMode; graphics.beginFill(color, alpha); graphics.drawCircle(0, 0, radius); graphics.endFill(); } } }
代码创建了两个外观一模一样的显示对象,然后添加到舞台上显示(使用BlendMode只是为了方便创建多个色块,后续章节将会详细介绍它),其中一个将会使用ColorTransform进行变换,从而跟不变换的那个进行比较。
相关文章推荐
- [原创]ActionScript3游戏中的图像编程(连载五)
- [原创]ActionScript3游戏中的图像编程(连载七)
- [原创]ActionScript3游戏中的图像编程(连载十四)
- ActionScript3游戏中的图像编程(连载十四)
- ActionScript3游戏中的图像编程(连载十三)
- ActionScript3游戏中的图像编程(连载十九)
- ActionScript3游戏中的图像编程(连载十八)
- [原创]ActionScript3游戏中的图像编程(连载十二)
- ActionScript3游戏中的图像编程(连载十六)
- ActionScript3游戏中的图像编程(连载二十一,第1章完)
- [原创]ActionScript游戏中的图像编程(连载十一)
- ActionScript3游戏中的图像编程(连载二)
- [原创]ActionScript3游戏中的图像编程(连载二)
- ActionScript3游戏中的图像编程(连载八)
- [原创]ActionScript3游戏中的图像编程(连载六)
- [原创]ActionScript3游戏中的图像编程(连载九)
- ActionScript3游戏中的图像编程(连载五)
- ActionScript3游戏中的图像编程(连载十一)
- ActionScript3游戏中的图像编程(连载十七)
- [原创]ActionScript3游戏中的图像编程(连载十三)