日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

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

iOS_31_cocos2d_粒子系統ParticleSystem

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


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







生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 蜜桃视频一区二区三区在线观看 | 成人免费一区二区三区视频网站 | 国产成人精品在线观看 | 色婷婷国产 | 亚洲黄色免费 | 欧美在线播放一区 | 午夜日韩 | 国产高清在线视频 | 777色淫网站女女免费 | 97在线视频免费 | 福利毛片 | 亚洲精品久久久久久久久久久久久 | 性猛交xxxx乱大交孕妇2十 | 久久精品久久久久 | 久久福利网 | 在线二区 | 久久免费一区 | 久久性| 国产欧美久久久久久 | 黄色片免费在线观看 | 国产精品久久久久久久久久98 | 欧美91| 国产亚洲欧美一区二区 | 综合久| 久久久精| 日韩中文字幕在线播放 | 久草热在线 | av爽爽 | 亚洲国产视频一区 | 欧美综合一区 | 天天噜 | 日韩精品在线看 | 日本大片免a费观看视频的特点 | 日韩精品视频在线播放 | 日韩免费在线视频 | 免费91视频| 精久久| 精品一区久久 | 欧美国产一区二区 | 日韩视频在线观看 | 欧美亚洲福利 |