【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
转载:9RIA游戏开发者社区(天地会)
作者:伱永远不可以(原天地会大神)
大概是要发个专题吧....把自己学到的总结下,顺便能给不懂的同学们提供思路!
【s7教你做特效】系列教程(总目录)
效果:--鼠标乱移动一下就能看见效果咯
大家知道显示器放大了其实长这样:
--
这次就是模拟这种效果
RGB原理就不多说,说说实现原理吧:
--接下来只要把 像素逐个分解就好了:
代码,复制到帧上即可【里面没有什么复杂的API,请注意提示哦】-----主要用到:BitmapData的 setPixel getPixel 没啥难度哦,但是效果不错!!!
[Actionscript3] 纯文本查看 复制代码 import flash.display.Bitmap;
import flash.display.BitmapData;
import flash.geom.Rectangle;
//放大镜的大小
var glassW:uint=15
var glassH:uint=15
var bmp:Bitmap =new Bitmap (new Pic())//#####请将这个Pic类 换成自己的########
addChild(bmp)
//放大镜-----glassW*3 之所以乘以三 是因为 要分解成RGB三种颜色
var glass:Bitmap=new Bitmap (new BitmapData (glassW*3,glassH,false,0x0))
glass.scaleX=2
glass.scaleY=2*3
addChild(glass)
this.addEventListener ( Event .ENTER_FRAME ,update)
//更新
function update(e:Event ):void
{
glass.x=mouseX//-glass.width *.5
glass.y=mouseY//-glass.height *.5
glassEffect()
}
function getRGB(c:uint ):Object
{
var rgb:Object ={}
//把颜色值分解成 RGB了!
rgb.r=c>>16 & 0xff
rgb.g=c>>8 & 0xff
rgb.b=c & 0xff
return rgb
}
function getColor(r:uint,g:uint,b:uint):uint
{
return r << 16 | g << 8 | b//合成颜色
}
function glassEffect():void
{
for(var i:int=0;i<glassW;i++)
{
for(var j:int=0;j<glassH;j++)
{
var c:uint=bmp.bitmapData .getPixel (mouseX+i,mouseY+j)
glass.bitmapData .setPixel (0,0,c)
piexl(i*3,j,c)
}
}
}
//将分解后的颜色显示
function piexl(cx:uint,cy:uint,color:uint):void
{
var rgb=getRGB(color)
glass.bitmapData .setPixel (cx,cy,getColor(rgb.r,0,0))
glass.bitmapData .setPixel (cx+1,cy,getColor(0,rgb.g,0))
glass.bitmapData .setPixel (cx+2,cy,getColor(0,0,rgb.b))
}
TKCB:因为作者没有提供源文件,但是为了新手理解,所以特意简单的做了一下分享给大家
无标题-1.fla
(203.45 KB, 下载次数: 1)
|