COCOS2D基础知识-CCScene
最后更新于:2022-04-01 20:15:01
接着上次的基础知识,我们今天讲解后面的知识点
1.CCscene 场景 ,这个类主要是说明和场景切换有关的类
- 创建、初始化一个场景
~~~
//1)创建一个 场景切换的类
//初始化或者创建一个一个场景
CCTransitionScene *transitionScene = [CCTransitionScene transitionWithDuration:4 scene:newScene];
[transitionScene initWithDuration:1 scene:newScene];
~~~
- 场景过渡效果结束
~~~
//2过渡效果结束的时候使用
[transitionScene finish];
~~~
-
~~~
//3部分过渡效果会使用该方法隐藏更外层的场景
[transitionScene hideOutShowIn];
//一个实例
~~~
- 这是关于一个场景的延迟出现。
~~~
///**creates a base transition with duration and incoming scene */
// +(id) transitionWithDuration:(ccTime) t scene:(CCScene*)s;
~~~
2。CCLayer
~~~
//2CCLayer类的使用
//1)作用 其他子节点的的容器和组织者
//2 接受触摸事件
self.isTouchEnabled = YES;
//3 接受加速器事件
self.isAccelerometerEnabled = YES;
//同样,我们层里需要加入一个特定的方法来接受加速计事件
//4CCLayerColor色彩层
//可以设置RGB颜色的层,试下 CCRGBAprotocol协议的CCLayer子类
//1)CCLayerColor的属性 color,opacity透明度,blendFunc.混合模式
//2)CClayerColor类的方法。
ccColor4F c4f = ccc4f(100, 100, 100, 100);
ccColor4B c4b = ccc4BFromccc4F(c4f);
//
CCLayerColor *layerColor = [[CCLayerColor alloc]init];
//初始化方法
CCLayerColor *layerColor1 = [[CCLayerColor alloc]initWithColor:c4b];
//初始化一个带长宽的色彩层
CCLayerColor *layerColor2 =[[CCLayerColor alloc]initWithColor:c4b width: 100 height:100];
[layerColor2 changeHeight:10];
[layerColor2 changeWidth:22];
[layerColor2 changeWidth:10 height:22];
//5 CCLayerGrdient 渐变色层
//是CClayerColor的子类,继承了其所有的属性,增加了渐变方向,插值模式
//初始化一个特定渐变效果的色彩层
CCLayerGradient *gradient = [[CCLayerGradient alloc]initWithColor:c4b fadingTo:c4b:ccp(0, -1)];
//6CCMenu菜单类 MenuItem 类实例组成各种按钮
//CCmenuItem 子类如下:
// 1)CCmenuItemLabel 点击具有放大效果 iCCLabelBMFont ii:CCLabelAtlas,CCLabelTTF
CCLabelBMFont *label1 = [CCLabelBMFont labelWithString:@"Seeting" fntFile:@"font1.fnt"];
CCMenuItemLabel *item1 = [CCMenuItemLabel itemWithLabel:label1 target:self selector:nil];
//2)CCMenuItemAtlasFont,CCmenuItemSprite,CCMenuItemImage,CCMenuItemToggle
//7CCTexture 纹理类
//1)纹理 Texture,2)纹理图集 TextureAylas
//3纹理的三种方式
//iCCTextureCache 单例使用,用于加载和管理纹理
NSString *filename = @"hell.png";
CCTexture2D *texture = [[CCTextureCache sharedTextureCache] addImage:filename];
//ii:CCTextureAtlas
//8.CCSprite
CCSprite *sprite = [CCSprite spriteWithFile:filename];
//1.)纹理集的索引
[sprite setAtlasIndex:1];//通常不建议修改
//2对渲染CCSprite 的CCSpriteBatchNode的弱引用
//[sprite setBatchNode:<#(CCSpriteBatchNode *)#>]
//3 blendFunc 遵循CCtextureProtocol协议
//4 color:RGB颜色 遵循CCRGBAProtocol协议
//5dirty:判断精灵是否需要在纹理集中更新
//6 filpx:判断精灵是否会沿水平方向旋转
//7 filpy
//8 offsetPosition 以点值计量精灵位置的偏移
//9 opacticy 透明度
//等
//9。精灵的类方法
//很多都是初始化方法,不再赘述
//10 CCSpriteBatchNode 精灵表单需要 OPENGL ES 一次性处理所有的纹理图,减少GPU的压力
//精灵表单的三种方法
//1.初始化一个精灵表单,可以最多容纳 29*1.33
CCSpriteBatchNode *sprites = [CCSpriteBatchNode batchNodeWithFile:filename];
CCSpriteBatchNode *sprites2 = [CCSpriteBatchNode batchNodeWithFile:filename capacity:12];
//CCSpriteBatchNode *sprite3 = [[CCSpriteBatchNode batchNodeWithTexture:[CCTexture2D alloc]];
//2。移除一个子精灵,由于操作速度很慢,不建议使用
// [sprites removeChild:one cleanup:YES];
~~~
3.重启游戏的场景切换
~~~
- (void)onRestartGame
{
CCTransitionFade *tramsitionFade = [CCTransitionFade transitionWithDuration:3 scene:[HelloWorldLayer scene] withColor:ccWHITE];
//重新开游戏的时候使用白色作为过度场景。 当然,除了 fade,还有很多别的过度场景
//使用过度场景对象替代helloworld场景,作为中间过渡场景,也就是延迟helloWorldLyer场景的出现
[[CCDirector sharedDirector]replaceScene:tramsitionFade];
}
~~~
4.加速计的使用
~~~
#pragma mark 如何操作加速计
/*
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
float deceleration = 0.4f;
float sensitivity = 6.0f;
float maxVelocity = 100;
_playerVelocity.x =_playerVelocity.x *deceleration + acceleration.x *sensitivity;
if (_playerVelocity.x > maxVelocity)
_playerVelocity.x = maxVelocity;
else if(_playerVelocity.x < -maxVelocity)
_playerVelocity.x = -maxVelocity;
}
*/
~~~
';