程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> cocos2d-基本概念(5)-Effects效果

cocos2d-基本概念(5)-Effects效果

編輯:關於.NET

Effects 效果

Introduction 介紹

Effects 是一些列特別的動作。相比於改變通常的屬性,像透明度,位置,旋轉,或者縮放而言,它們修改的一種新的屬性,Grid(網格)屬性。

一個Grid 屬性就好像一個矩陣,是一個網絡的線,組成一系列的方塊和矩陣。

這些特別的動作把任何一個cocosNode 對象(層,場景,精靈等)變化成Grid,你可以通過它們的頂點來改變它們。

有兩種不同的Grid:tiled 和 non-tiled網格,不同的是tiled網格是通過各自tiled組成,而non-tiled是通過頂點組成的。

一個Grid有2個維度,行和列。但是任何一個vertex都有3個維度,xyz。所以你可以建立一個2d或者是3d的效果,不同的是通過tiled-grid-3d 或者是grid-3d。

你可以通過提高增加grid的大小來提高效果的質量,但是效果的速度將會降低。

一個(16,12)大小的grid將會運行的非常快,但是並不會看起來非常的好。(32,24)的將會看起來非常棒,但是在iphone1代中,運行起來不會太快。

How they work 如何工作

Each frame the screen is rendered into a texture (FBO). This texture is transformed into a vertex array and this vertex array (the grid!) is transformed by the grid effects. Finally the vertex array is rendered into the screen.

任何一個屏幕的Frame都會改稱成一個Texture(FBO),這個紋理會轉換城一個頂點array,這個頂點坐標array是通過grid的效果轉換來的。最後,這個頂點數組被顯示到屏幕上。

For more information about the internals refer to:

TiledGrid3D and TiledGrid3DAction for tiled grids

Grid3D and Grid3DAction for non-tiled grids

For example, if you have an scene or layer that renders this image:

我們可以把圖片轉換成以上這樣,使用的是Ripple3D action. 就像你砍刀的古怪的圖片,踏實用一個32X24的方塊,這個grid是一個non-tiled(所有的方塊在一起)

 

以上的是通過一個16X12的方塊,並且grid是一個tiled的(所有的方塊或者是tiled可以被分開)

 

3D actions 3D動作

以3D作為它們的後綴命名的,意味著將會產生一個虛擬的3d效果,它們通過改變Grid的z軸。

如果你將要去使用3D動作,你可能會需要用到深度緩存,比較簡單的調用方式就是:

// IMPORTANT: Call this function at the very beginning,
//before running your 1st scene
// Create a depth buffer of 24 bits
// These means that openGL z-order will be taken into account
[[Director sharedDirector] setDepthBufferFormat:kDepthBuffer16];

如下的這一段代碼,你可能還是需要設著RGBA8888格式像素。這將會使得到透明的效果。

// IMPORTANT: Call this function at the very beginning,
// before running your 1st scene
// Use this pixel format to have transparent buffers
[[Director sharedDirector] setPixelFormat:kRGBA8];

Index of grid effects 效果索引

可用的Grid3DAction

Available Grid3DAction actions:

FlipX3D

FlipY3D

Lens3D

Liquid

Ripple3D

Shaky3D

Twirl

Waves

Waves3D

Available TiledGrid3DAction actions:

FadeOutBLTiles

FadeOutTRTiles

FadeOutUpTiles

FadeOutDownTiles

JumpTiles3D

ShakyTiles3D

ShatteredTiles3D

ShuffleTiles

SplitCols

SplitRows

TurnOffTiles

WavesTiles3D

Examples 例子

Some examples:

// execute a Waves action on sprite 1
id waves = [Waves actionWithWaves:5 amplitude:20 horizontal:YES vertical:NO 
                            grid:ccg(15,10) duration:5];
[sprite1 runAction: [RepeatForever actionWithAction: waves]];

// and execute a Shaky3D action on sprite 2
id shaky = [Shaky3D actionWithRange:4 shakeZ:NO grid:ccg(15,10) duration:5];
[sprite2 runAction: [RepeatForever actionWithAction: shaky]];

出處:http://alexliu.cnblogs.com/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved