页游特效笔记,滤镜,位图序列

    技术2025-03-13  41

    最近在研究特效方向,想来想去脑子太乱,弄个笔记梳理一下也好。这里谈到的特效不包括客户端游戏的内容,两码事了。

     

    flash游戏中特效不外乎粒子,滤镜,位图序列三种,其实主要是针对bitmapdata的操作。

     

    位图这块比较繁琐,实现各种效果的算法也非常多,很多都从c、c++的游戏特效算法中引入的,不过很多水土不服,因为flashplayer效率太低了。

    目前来看大部分用的还是位图序列 + 少量的滤镜,粒子特效目前看来效率上很不允许。

     

    针对位图序列:很简单, 写一个可以循环播放图片序列的模块就行了,不过与之配套的有图片的动态切割类,图片存储转化类等辅助单元,基本上很简单。

     

    对于滤镜既简单又麻烦,简单的是flashAPI有10中滤镜可以直接使用,一些简单画面、文字特效很快能实现,麻烦的是一个项目中滤镜用多了会带来效能问题,并且实现很复杂特效的滤镜算法很有看头,或者说很费精力去研究。

     

    还是谈滤镜吧,这玩意比较有意思,小时候家里一台佳能相机就有好多滤镜,放在镜头上的,估计原理是一样一样的哈哈。

     

    我对flash里的滤镜理解源于API中bitmapdata的draw方法,请看描述:

          源显示对象不对此调用使用其任何已应用的转换。 它会被视为存在于库或文件中,没有矩阵转换、没有颜色转换,也没有混合模式。 

     

    所以,滤镜效果不是加在源图像上的,每个现实对象在flash中都被保存为两份,一份是原始现实数据,一份是副本。当你对一个图像加滤镜时

    只体现在这个副本上,最终显示的也是这个副本的显示效果。但跟程序交互运算的还是原始图像数据,例如draw()方法。不知道我这样理解贴切否?

     

    当然这个副本(可以说缓存)我们是可以设置的,cacheAsBitmap属性想必都用过,这个设置的缓存就是前面提过的副本。

    问题来了,如果把这个属性设为falsh,是否还可以加滤镜效果?当然可以,不过系统会把cacheAsBitmap设置回true。

     

     

    现在看下10个滤镜,斜角,投影,发光,模糊,渐变斜角,渐变发光,这六个滤镜属于基础滤镜,除了在代码里外,在flash cs里也可以直接打开面板使用。

    另外的4个滤镜比较麻烦,并只能在as代码中使用,分别是颜色矩阵,卷积,置换图,着色器。这四个滤镜的特点就是都不是为了某一种效果设定的,通过滤镜属性值的变化可以演变出很多效果,所以比较晦涩一些。

     

    最新回复(0)