多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 互聯網 > iOS_31_cocos2d_粒子系統ParticleSystem

iOS_31_cocos2d_粒子系統ParticleSystem

來源:程序員人生   發布時間:2014-09-30 03:00:21 閱讀次數:2830次
最終效果圖:


ParticleSystem是基類,
ParticleSystem的唯一一個直接子類是:ParticleSystemQuad
ParticleSystemQuad下面又有n多個子類
當需要自定義粒子系統時,用到的是ParticleSystemQuad,參數是:第3方軟件生成的plist

下面是的粒子系統的繼承結構圖


下面介紹一下【Particle Designer】






生成兩個文件,一個小紋理,一個plist


其中plist文件結構如下:


自定義粒子特效,使用上面生成的plist文件


cocos2d v3版本中,很重要的一點就是:

CCParticleSystemBase替換了以前版本的CCParticleSystem

CCParticleSystem替換了以前版本的CCParticleSystemQuad

因此,在v3以前的版本,自定義粒子時,用CCParticleSystemQuad

因此,在v3之后的版本,自定義粒子時,用CCParticleSystem就可以了



CCParticleBatchNode,

spriteBatchNode一樣,使用同一個紋理創建的多個相同特效的粒子(如位于屏幕不同位置顯示),

可以添加到同一個batchNode,讓它統一管理;

而場景只需與一個batchNode打交道,界面上顯示的Node也只有一個

// // ParticleScene.m // 31_cocos2D入門 // // Created by beyond on 14-9-27. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "ParticleScene.h" @interface ParticleScene() { // 演示系統自帶的粒子特效 CCParticleSystem *_particleSystem; // 顯示粒子特效的名字 CCLabelTTF *_label; } @end @implementation ParticleScene #pragma mark - 覆蓋父類方法 -(id)init { if (self=[super init]) { // 1、場景Node 允許交互 self.userInteractionEnabled = YES; // 2、顯示粒子特效的名字 _label = [CCLabelTTF labelWithString:@"" fontName:@"Marker Felt" fontSize:30]; _label.positionType = CCPositionTypeNormalized; // 屏幕的右上方 注意這里是笛卡爾坐標系,原點在左下方 _label.position = ccp(0.7f, 0.75f); _label.horizontalAlignment = CCTextAlignmentRight; [self addChild:_label]; } return self; } // 直接覆寫,即:不用創建一個sprite In Center - (void)addSpriteInCenter{} // 實現父類的方法,添加一個按鈕到屏幕上 - (void)addShowBtns { // 1.使用系統默認的粒子特效 [self addBtn:@"【系統粒子】" position:ccp(0, 0) target:self sel:@selector(systemParticleClicked)]; // 2.使用粒子設計器 [self addBtn:@"【粒子設計器】" position:ccp(0, 0.1) target:self sel:@selector(diyParticleClicked)]; // 3.使用ParticleBatchNode [self addBtn:@"【粒子Batch】" position:ccp(0, 0.2) target:self sel:@selector(particleBatchNodeClicked)]; } // 展示系統默認的粒子特效 static int i = 0; - (void)systemParticleClicked { // 要添加,先移除 [_particleSystem removeFromParent]; i++; if (i>11) { i=1; } Class cls; switch (i) { case 1: cls = NSClassFromString(@"CCParticleFire"); break; case 2: cls = NSClassFromString(@"CCParticleFireworks"); break; case 3: cls = NSClassFromString(@"CCParticleSun"); break; case 4: cls = NSClassFromString(@"CCParticleGalaxy"); break; case 5: cls = NSClassFromString(@"CCParticleFlower"); break; case 6: cls = NSClassFromString(@"CCParticleMeteor"); break; case 7: cls = NSClassFromString(@"CCParticleSpiral"); break; case 8: cls = NSClassFromString(@"CCParticleExplosion"); break; case 9: cls = NSClassFromString(@"CCParticleSmoke"); break; case 10: cls = NSClassFromString(@"CCParticleSnow"); break; case 11: cls = NSClassFromString(@"CCParticleRain"); break; default: break; } _particleSystem = [cls node]; // 設置自定義紋理和位置后,添加到場景中(默認紋理是fire.png) _particleSystem.texture = [CCTexture textureWithFile:@"circle.png"]; _particleSystem.position = ccp(self.contentSize.width/2,self.contentSize.height*0.3); [self addChild:_particleSystem]; // 2、顯示粒子特效的名字 _label.string = NSStringFromClass(cls); } // 自定義粒子特效,使用粒子設計器 - (void)diyParticleClicked { CCParticleSystem *diyParticleSystem = [CCParticleSystem particleWithFile:@"circle.plist"]; diyParticleSystem.position = ccp(self.contentSize.width/2,self.contentSize.height*0.5); // 添加到場景 [self addChild:diyParticleSystem]; } // 同spriteBatchNode一樣,使用同一個紋理創建的多個粒子特效,可以添加到同一個batchNode中,讓它統一管理;而場景只需與一個batchNode打交道,界面上顯示的Node也只有一個 - (void)particleBatchNodeClicked { // CCParticleBatchNode *batch = [CCParticleBatchNode batchNodeWithFile:@""]; // [batch addChild:p1,p2,p3]; } @end



下面是系統自帶的粒子效果,它們全繼承自ParticleSystemQuad

ParticleSystemQuad繼承自:ParticleSystem

注意:自帶的粒子效果,默認要用到一張名為fire.png圖片作為紋理

但,可以通過texture屬性另行設置











圖片編碼:在特殊的plist文件中,通過一個key,包含了一個圖片的所有編碼,從而,創建粒子特效時,不再需要一張.png圖片

如下面的這個plist文件,

最后一項key:textureImageData,里面所有字串,就代表著一張完整的圖片

從而,無需再另外導入一張.png圖片


類似的圖片編碼,還出現在cocos2d屏幕左下角的幀率顯示的數字上面

導演類,決定顯示在下角的幀率數字


command+單擊,進入


通過再次進入,發現,顯示的幀率,其實是CCFPSLabel


通過為_FPSLabel設置string,從而能夠在屏幕左下角顯示幀率


那么,_FPSLabel是如何實例化的呢?它顯示的數字用的紋理是什么呢?

請看下面這張,重點來了~~~


command+單擊進入 getFPSImageData方法

發現指向指針的指針datapointer指向了內存中另一塊區域:

cc_fps_images_ipadhd_png


進去之后,發現,這些字串,就是圖片經過編碼后的data







生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 欧洲精品码一区二区三区免费看 | 亚洲v天堂 | 亚洲无砖砖区免费 | 中文字幕网站在线 | 成人视屏在线 | 日韩 欧美 亚洲国产 | 精品一区二区三区亚洲 | 中文字幕视频在线观看 | 亚洲在线一区二区 | 一级毛片视频在线 | japanese日本护士com | 免费视频网站在线观看 | 女人一级特纯黄大片色 | 免费网站在线看 | 老司机午夜免费福利 | 欧美一级做一a做片性视频 欧美一级做一级爱a做片性 | 波多野结衣免费一区二区三区香蕉 | 亚洲韩国日本一级二级r级 亚洲韩精品欧美一区二区三区 | 狠狠干天天爱 | 免费中日高清无专码有限公司 | 野外性xxxxfrxxxx | 图片区小说区号综合区 | 精品综合一区二区三区 | 亚洲成a人片在线观看播放 亚洲成a人片在线观看精品 | 日韩一二区 | 国产精品jizz在线观看软件 | 日本a一级毛片免费观看 | 欧美一二三 | 国产一级做a爱片久久片 | www.日本com| 一二三四高清在线手机视频 | 性欧美wideos | 97涩色| 亚洲欧美综合另类图片小说区 | 黑粗硬大欧美视频 | 在线观看日韩 | 亚洲国产色综合有声小说 | 亚洲1页| 欧美视频三区 | 亚洲 欧美 字幕 一区 在线 | a一级毛片视频免费看 |