11RIA 闪客社区 - 最赞 Animate Flash 论坛

搜索
查看: 2216|回复: 0
上一主题 下一主题

[特效 & 粒子 & 滤镜] 【9RIA—伱永远不可以】—【s7教你做特效】1. 叠加模式的应用—光斑效果

[复制链接] TA的其它主题
发表于 2018-2-7 17:22:34 | 显示全部楼层 |阅读模式

【游客模式】——注册会员,加入11RIA 闪客社区吧!一起见证Flash的再次辉煌……

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 TKCB 于 2018-2-7 17:35 编辑

转载:9RIA游戏开发者社区(天地会)
作者:伱永远不可以(原天地会大神)


大概是要发个专题吧....把自己学到的总结下,顺便能给不懂的同学们提供思路!
【s7教你做特效】系列教程(总目录)


【叠加模式】(混合模式BlendMode)
可以到下面的网站先了解:
AS3 BlendMode(混合模式)的测试 ——http://www.11ria.com/forum.php?mod=viewthread&tid=737


----效果如下:
QQ截图20180207170637.jpg
---------------
新手们可千万别一看到代码就头晕的--


1.初始化个  mcVec Vector.<MovieClip> r来储存 光斑MC 【Vector效率比Array高,而且有代码提示哦!】
----mcLayer:Sprite 用于显示 光斑的

[Actionscript3] 纯文本查看 复制代码
//装入MC的
var mcVec:Vector.<MovieClip>=new Vector.<MovieClip>()
//
var mcLayer:Sprite =new Sprite()
//
addChild(this.mcLayer )


2.写个函数叫 initMc() 用来初始化 光斑的! n是光斑数量-
[Actionscript3] 纯文本查看 复制代码
//初始化光斑-------------------------
function initMc(n:uint=20):void 
{
        
        while(n-->0)
        {
                var mc:MovieClip =new MovieClip ()
                drawCirle(mc.graphics )//画圆
                //在舞台上上随机分布
                mc.x=stage.stageWidth *Math.random ()
                mc.y=stage.stageHeight *Math.random ()
                //设置速度,
                mc.vx=Math.random ()*2-1
                mc.vy=Math.random ()*2-1
                //让MC看起模糊些
                var b:Number =Math.random ()*4+1
                mc.filters =[new BlurFilter (b,b)]
                mc.blendMode =BlendMode.ADD
                //加入到显示容器
                this.mcLayer .addChild (mc)

---请看代码注释!

3.让MC动起来!

[Actionscript3] 纯文本查看 复制代码
//移动MC---------------
function move():void 
{
        var mc:MovieClip 
        for(var i in mcVec)
        {
                mc=mcVec[i]


4.这些函数都准备好了,来一个驱动吧,就用 帧事件好了
[Actionscript3] 纯文本查看 复制代码
this.addEventListener ( Event .ENTER_FRAME ,update)
//更新
function update(e:Event ):void 

{
        move()
}


看看效果吧!



源代码【直接粘贴到帧上运行--须注意,舞台背景不能为白色啊,请随便画个渐变什么的,不然看不见哦】:
[Actionscript3] 纯文本查看 复制代码
import flash.events.Event;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.Graphics;
import flash.display.BlendMode;
import flash.filters.BlurFilter;

//装入MC的
var mcVec:Vector.<MovieClip>=new Vector.<MovieClip>()
//
var mcLayer:Sprite =new Sprite()
//
addChild(this.mcLayer )
this.initMc (50)
this.addEventListener ( Event .ENTER_FRAME ,update)


//初始化光斑-------------------------
function initMc(n:uint=20):void 
{
        
        while(n-->0)
        {
                var mc:MovieClip =new MovieClip ()
                drawCirle(mc.graphics )//画圆
                
                mc.x=stage.stageWidth *Math.random ()
                mc.y=stage.stageHeight *Math.random ()
                
                mc.vx=Math.random ()*2-1
                mc.vy=Math.random ()*2-1
                
                var b:Number =Math.random ()*4+1
                mc.filters =[new BlurFilter (b,b)]
                mc.blendMode =BlendMode.ADD
                
                this.mcLayer .addChild (mc)
                mcVec.push (mc)
        }
        
}

//画圆-----------------
function drawCirle(g:Graphics ):void 
{
        g.beginFill (Math.random ()*0xffffff,0.8)
        g.drawCircle (0,0,Math.random ()*10+12)
        g.endFill ()
}

//移动MC---------------
function move():void 
{
        var mc:MovieClip 
        for(var i in mcVec)
        {
                mc=mcVec[i]
                mc.x+=mc.vx
                mc.y+=mc.vy
                //简单的边界检测---
                mc.x=mc.x>stage.stageWidth?0:mc.x
                mc.x=mc.x<0?stage.stageWidth:mc.x
                mc.y=mc.y>stage.stageHeight ?0:mc.y
                mc.y=mc.y<0?stage.stageHeight:mc.y
        }
}
//更新
function update(e:Event ):void 

{
        move()
}


该有的都有了,现在有了封装好的两个效果 ...1.本帖效果 2.位图爆破
---使用方法就变得简单多了
[Actionscript3] 纯文本查看 复制代码
var sls:LightSpot =new LightSpot ()
//参数:num:光斑数量 r: 光斑大小 rect :光斑生存范围 pic:光斑的图片
sls.init ({num:20,r:20,rect:new Rectangle (-50,-50,600,450)})
sls.show (this)



下载:
教你做特效0.0.0.0.1.zip (1.24 MB, 下载次数: 6)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)



快速回复 返回顶部 返回列表