3、利用bitmapdata.draw,把曲线不断绘制,并利用ColorTransform做一定的颜色和透明度变化。
transform是flash.Display.DisplayObject的属性之一,而colorTransform又是transform的属性,这也就意味着几乎所有对象都可以使用colorTransform 属性 这是官方的解释: 当 ColorTransform 对象应用于显示对象时,将按如下方法为每个颜色通道计算新值: 新红色值 = (旧红色值 * redMultiplier) + redOffset = new ColorTransform(redMultiplier, greenMultiplier, blueMultiplier, alphaMultiplier, redOffSet, greenOffSet, blueOffSet, alphaOffSet); R.transform.colorTransform = G.transform.colorTransform = B.transform.colorTransform = RGB.transform.colorTransform = img.transform.colorTransform = color
); private var bounds:Rectangle; private var blur:BlurFilter=new BlurFilter(5,5); private var colorTransform :ColorTransform=new ColorTransform(0.9,0.9,0.9); public function MouseAvoiderTest() { addEventListener (bounds, colorTransform);//应用颜色滤镜(r,g,b颜色值均变成原来的90%) for (var i:uint = 0; i < container.numChildren =new ColorTransform(1,1,1,1,Math.random()*30,Math.random()*30,Math.random()*30); } } } } 看完 在线演示 注:没有找到Silverlight中对应的ColorTransForm方法,所以用白色替换了。同时相对Flash版的原效果而言,没有运动时的拖尾效果。哪位仁兄帮忙改进下,谢谢。 源文件下载
121 } 渲染时的执行优先级依次为: normalMethod >ambientMethod >shadowMethod >diffuseMethod >specularMethod >colorTransform subsurfaceMethod; WrapDiffuseMethod 包裹散射方式,接近于SSS满散射方式,但更粗糙一些 ColorTransformMethod 颜色转换方法,效果与直接设置material.colorTransform 一样,在执行顺序上会晚于material.colorTransform的设置 一般情况下不推荐使用,请直接使用material.colorTransform,除非你需要解决一些特殊的问题或Bug 1 var m:ColorTransformMethod = new ColorTransformMethod();2 m.colorTransform = new ColorTransform(1,0,0
flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.geom.ColorTransform _bmp:BitmapData = new BitmapData(_w, _h, true, 0xFFFFFFFF); var transform:ColorTransform = new ColorTransform(0, 0, 0, 1); var matrix:Matrix = new Matrix(); matrix.translate
this.addChild(bm2); 3.颜色变换 var bmd:BitmapData = new BitmapData(80, 30, false, 0xFF0000); var cTransform:ColorTransform = new ColorTransform(); cTransform.alphaMultiplier = 0.8;//设置透明度因子为0.8 var rect:Rectangle = new Rectangle (0, 0, 40, 30);//定义左半边矩形区域 bmd.colorTransform(rect, cTransform);//对rect区域应用colorTransform var bm:Bitmap =new ColorTransform(0.96,0.86,0); private var stgw:Number=stage.stageWidth; private var stgh:Number trace("Total: " + gArr.length); } private function run(evt:Event):void { bmd.lock(); bmd.colorTransform
e.target.stopDrag(); e.target.filters=null; if (e.target.dropTarget is Shape){ e.target.dropTarget.transform.colorTransform =e.target.transform.colorTransform; //将目标对象颜色设置为与源对象一致 } //还原初始位置 e.target.x = _originPoint.x; e.target.y
summary>
/// 表示蓝色
///
public byte B { set; get; }
}
定义颜色变化相关类ColorTransform 的相互转换逻辑方法:
///
<xsd:group name="EG_<em>ColorTransform</em>"> <xsd:choice> <!
;// 让颜色变暗 color = ColorTransform.HandleShade(color, shade); 此时的效果如下 本文以上所有测试文件和代码放在github ;// 让颜色变暗 color = ColorTransform.HandleShade(color, shade); }
height=2560, fps=60.0}], colorTransformId 1, defaultColorTransformId 1, supportedColorTransforms [{id=1, colorTransform
至于碰撞检测出来以后再如何处理,就要发挥想象了 package { import flash.display.Sprite; import flash.events.Event; import flash.geom.ColorTransform Number=Math.sqrt(dx*dx+dy*dy+dz*dz); if (dist<ballA.radius+ballB.radius) { var newTransform:ColorTransform = new ColorTransform(0, 1, 1, 1, Math.random()*255, Math.random()*255, Math.random()*255, 0); ballA.transform.colorTransform=newTransform; ballB.transform.colorTransform=newTransform;