Simple but Charming_0
动态噪点(要求水平方向无缝的噪点图:w=1024,h=640)
DynamicNoiseLayer.h
// // DynamicNoiseLayer.h // HungryBear // // Created by Bruce Yang on 12-8-2. // Copyright (c) 2012年 EricGameStudio. All rights reserved. // #import "cocos2d.h" @interface DynamicNoiseLayer : CCLayer { CCTexture2D* m_texGradientBg; CCTexture2D* m_texNoise; CCSprite* m_spNoise; } +(CCScene*) scene; -(id) init; @end
DynamicNoiseLayer.mm
// // DynamicNoiseLayer.mm // HungryBear // // Created by Bruce Yang on 12-8-2. // Copyright (c) 2012年 EricGameStudio. All rights reserved. // #import "DynamicNoiseLayer.h" #ifndef PORTRAIT_CENTER #define PORTRAIT_CENTER ccp(160, 240) #endif #ifndef LANDSCAPE_CENTER #define LANDSCAPE_CENTER ccp(240, 160) #endif #define SPEED_FACTOR 8 @implementation DynamicNoiseLayer +(CCScene*) scene { CCScene* t_scene = [CCScene node]; DynamicNoiseLayer* t_layer = [DynamicNoiseLayer node]; [t_scene addChild:t_layer]; return t_scene; } -(id) init { if((self = [super init])) { CCTextureCache* tmp_texCache = [CCTextureCache sharedTextureCache]; // 1.背景图片~ m_texGradientBg = [tmp_texCache addImage:@"gbg.png"]; CCSprite* tmp_spBg = [[CCSprite alloc] initWithTexture:m_texGradientBg]; [tmp_spBg setPosition: LANDSCAPE_CENTER]; [self addChild:tmp_spBg]; [tmp_spBg release]; // 2.噪点图片~ m_texNoise = [tmp_texCache addImage:@"noiseTexture.png"]; ccTexParams tmp_texParams = (ccTexParams){GL_LINEAR, GL_LINEAR, GL_REPEAT, GL_REPEAT}; [m_texNoise setTexParameters:&tmp_texParams]; m_spNoise = [[CCSprite alloc] initWithTexture:m_texNoise]; [m_spNoise setPosition: LANDSCAPE_CENTER]; ccBlendFunc tmp_blendFunc = (ccBlendFunc){GL_DST_COLOR, GL_ONE_MINUS_SRC_ALPHA}; [m_spNoise setBlendFunc:tmp_blendFunc]; [self addChild:m_spNoise]; [m_spNoise release]; // 3.定时器~ [self schedule:@selector(tick:)]; } return self; } -(void) tick:(ccTime)dt { static float offset = 0; offset += dt * SPEED_FACTOR; CGSize tmp_texRect = m_spNoise.textureRect.size; [m_spNoise setTextureRect:CGRectMake(offset, 0, tmp_texRect.width, tmp_texRect.height)]; } -(void) dealloc { CCTextureCache* texCache = [CCTextureCache sharedTextureCache]; [texCache removeTexture:m_texGradientBg]; [texCache removeTexture:m_texNoise]; [super dealloc]; } @end