1 编写MyLayer

头文件:MyLayer.h

#include "cocos2d.h"

USING_NS_CC;   //代表的是: using namespace cocos2d   (通过F12进行查看)

//继承CCLayer

class MyLayer :public CCLayer

{

public:

//没有构造函数和析构函数

CREATE_FUNC(MyLayer);

/*static MyLayer *create();*/

static CCScene * scene();

bool init();

};

MyLayer.cpp

#include "MyLayer.h"

//MyLayer *MyLayer::create(){

//  MyLayer * pRet = new MyLayer();

//  if (pRet && pRet->init())

//  {

//      pRet->autorelease();

//  }

//  else

//  {

//      delete pRet;

//      pRet = NULL;

//  }

//  return pRet;

//}

bool MyLayer::init()

{

if (!CCLayer::init())

{

return false;

}

CCSize winSize = CCDirector::sharedDirector()->getWinSize();

//创建一个精灵

CCSprite * spr = CCSprite::create("anchor3.png");

spr->setPosition(ccp(winSize.width/2,winSize.height /2));

//添加一个精灵

addChild(spr);

return true;

}

CCScene *MyLayer::scene()

{

CCScene * scene = CCScene::create();

MyLayer * layer = MyLayer::create();

scene->addChild(layer);

return scene;

}

要想让写的Layer能够运行,需要在AppDelegate.app中添加如下代码

1、 添加头文件:#include "MyLayer.h"

2、 在bool AppDelegate::applicationDidFinishLaunching() 中修改如下内容:

bool AppDelegate::applicationDidFinishLaunching() {

// initialize director

CCDirector* pDirector = CCDirector::sharedDirector();

CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

pDirector->setOpenGLView(pEGLView);

// turn on display FPS

pDirector->setDisplayStats(true);

// set FPS. the default value is 1.0/60 if you don't call this

pDirector->setAnimationInterval(1.0 / 60);

// create a scene. it's an autorelease object

//CCScene *pScene = HelloWorld::scene();

CCScene * pScene = MyLayer::scene();

// run

pDirector->runWithScene(pScene);

return true;

}

运行结果:

2 锚点

LayerAnchorPoint.h

#ifndef __T01LayerAnchorPoint_H__

#define __T01LayerAnchorPoint_H__

#include "cocos2d.h"

USING_NS_CC;

class LayerAnchorPoint:public CCLayer

{

public:

static LayerAnchorPoint * create();

bool init();

static CCScene * scene();

void draw();

void mySchedule(float dt);

CCSprite *spr;

};

#endif

LayerAnchorPoint.cpp

#include "LayerAnchorPoint.h"

CCScene * LayerAnchorPoint::scene()

{

//创建一个场景

CCScene * scene = CCScene::create();

LayerAnchorPoint * layer = LayerAnchorPoint::create();

scene->addChild(layer);

return scene;

}

LayerAnchorPoint * LayerAnchorPoint::create() {

LayerAnchorPoint *pRet = new LayerAnchorPoint();

if (pRet && pRet->init())

{

pRet->autorelease();

}

else

{

delete pRet;

pRet = NULL;

}

return pRet;

}

bool LayerAnchorPoint::init()

{

CCLayer::init();

CCSize winSize = CCDirector::sharedDirector()->getWinSize();

spr = CCSprite::create("anchor1.png");

//设置锚点

//spr->setAnchorPoint(ccp(0.656,0.5));

spr->setScale(5.0f);

spr->setPosition(ccp(winSize.width/2,winSize.height/2));

addChild(spr);

//设置一个定时器,频率是2秒

schedule(schedule_selector(LayerAnchorPoint::mySchedule), 2);

return true;

}

//通过下面的方法实现画线

void LayerAnchorPoint::draw()

{

CCSize winSize = CCDirector::sharedDirector()->getWinSize();

//RGB颜色,其中最后一个参数是透明率

ccDrawColor4B(255,0,0,255);

ccDrawLine(ccp(0, winSize.height / 2), ccp(winSize.width, winSize.height / 2));

ccDrawLine(ccp(winSize.width / 2, 0),ccp(winSize.width/2,winSize.height));

}

//通过下面的方式设置旋转

void LayerAnchorPoint::mySchedule(float dt) {

static float ro = 0;

ro += 30;

spr->setRotation(ro);

}

修改:AppDelegate.cpp中的代码

头文件:

#include "LayerAnchorPoint.h"

bool AppDelegate::applicationDidFinishLaunching() {

// initialize director

CCDirector* pDirector = CCDirector::sharedDirector();

CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();

pDirector->setOpenGLView(pEGLView);

// turn on display FPS

pDirector->setDisplayStats(true);

// set FPS. the default value is 1.0/60 if you don't call this

pDirector->setAnimationInterval(1.0 / 60);

// create a scene. it's an autorelease object

//CCScene *pScene = HelloWorld::scene();

//CCScene * pScene = MyLayer::scene();

CCScene * pScene = LayerAnchorPoint::scene();

// run

pDirector->runWithScene(pScene);

return true;

}

运行结果:

3 精灵的创建

1、编写:LayerSprite.h

#include "cocos2d.h"

USING_NS_CC;

class LayerSprite:public CCLayer

{

public:

static CCScene * scene();

CREATE_FUNC(LayerSprite);

bool init();

};

编写:表示屏幕大小的头文件AppMacros.h

#ifndef __APPMACROS_H__

#define __APPMACROS_H__

#include "cocos2d.h"

//通过预定义获得屏幕大小

#define  winSize  CCDirector::sharedDirector()->getWinSize()

#endif /* __APPMACROS_H__ */

编写:LayerSprite.cpp

#include "LayerSprite.h"

#include "AppMacros.h"

CCScene *LayerSprite::scene()

{

CCScene * scene = CCScene::create();

LayerSprite * layer = LayerSprite::create();

scene->addChild(layer);

return scene;

}

bool T02LayerSprite::init()

{

CCLayer::init();

CCSprite * bg = CCSprite::create("sprite/background.jpg",CCRectMake(0,0,480,320));

bg->setAnchorPoint(ccp(0,0));

bg->setPosition(CCPointZero);

addChild(bg);

CCImage * image = new CCImage();

image->initWithImageFile("sprite/plant.png");

CCTexture2D * texture = new CCTexture2D();

texture->autorelease();

texture->initWithImage(image);

CCSprite * plant = CCSprite::createWithTexture(texture); //纹理

plant->setPosition(ccp(100,winSize.height/2));

addChild(plant);

CCTexture2D * texture2 = CCTextureCache::sharedTextureCache()->addImage("sprite/bullet.png");

CCSprite * bullet = CCSprite::createWithTexture(texture2);

bullet->setPosition(ccp(200, winSize.height / 2+10));

addChild(bullet);

CCSpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("sprite/zombie.plist");

//CCSpriteFrame *sf = CCSpriteFrameCache::sharedSpriteFrameCache()->spriteFrameByName("z_1_attack_01.png");

//CCSprite *zombie = CCSprite::createWithSpriteFrame(sf);

CCSprite *zombie = CCSprite::createWithSpriteFrameName("z_1_attack_01.png");

zombie->setPosition(ccp(400, winSize.height / 2-50));

addChild(zombie);

CCJumpBy * by = CCJumpBy::create(2, ccp(0,0),40,3);

zombie->runAction(CCRepeatForever::create(by));

CCSpriteFrame * frame = CCSpriteFrame::create("sprite/p_1_01.png", CCRectMake(0, 0, 80, 80));

CCSprite * sun = CCSprite::createWithSpriteFrame(frame);

sun->setPosition(ccp(400, winSize.height / 2 + 50));

addChild(sun);

return true;

}

同上,将LayerSprite.h加到AppDelegate.cpp中,并添加上:

CCScene * pScene = LayerSprite::scene();

运行结果:

4 zorder

LayerZorder.h

#include "cocos2d.h"

USING_NS_CC;

class LayerZorder:public CCLayer

{

public:

static CCScene * scene();

CREATE_FUNC(LayerZorder);

bool init();

};

LayerZorder.cpp

#include "LayerZorder.h"

#include "AppMacros.h"

CCScene *LayerZorder::scene()

{

CCScene * scene = CCScene::create();

LayerZorder * layer = LayerZorder::create();

scene->addChild(layer);

return scene;

}

bool LayerZorder::init()

{

CCLayer::init();

CCSprite * man = CCSprite::create("zorder/car42.png");

//将图片缩放

man->setScale(0.3f);

CCSprite * woman = CCSprite::create("zorder/car43.png");

woman->setScale(0.3f);

CCSprite * smallThree = CCSprite::create("zorder/car51.png");

smallThree->setScale(0.3f);

man->setPosition(ccp(winSize.width / 2 + 40, winSize.height / 2 - 30));

smallThree->setPosition(ccp(winSize.width / 2, winSize.height / 2 + 30));

woman->setPosition(ccp(winSize.width / 2 - 40, winSize.height / 2 + 30));

addChild(man);

addChild(smallThree);

addChild(woman);

//通过setZOrder来设置图片显示顺序

man->setZOrder(100);

smallThree->setZOrder(50);

woman->setZOrder(0);

return true;

/*CCLog("%d", man->getZOrder());

CCLog("%d", smallThree->getZOrder());

CCLog("%d", woman->getZOrder());*/

return true;

}

修改AppDelegate.cpp

1.  将zorder的头文件进入:#include "LayerZorder.h"

2.  CCScene * pScene = LayerZorder::scene();

运行结果:

编写MyLayer,2 锚点,3 精灵的创建,4 zorder相关推荐

  1. cocos2dx之锚点/坐标系/精灵 详解

    (1)什么是锚点 当我们插入一张图片时,我们需要调整它的位置.假如一张空白的画布是背景,那么当我们插入一张图片时,我们如何确定图片的位置呢?图片可以看做一个精灵,也就是一个节点.那么对于一个节点的位置 ...

  2. 【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象

    精灵在Cocos2d-x中的地位就像一场电影中的主角,男主角/女主角,是一场电影中的灵魂所在.也是我们游戏中的灵魂 无论我们控制的对象还是电脑控制的对象,我们都称之为精灵,或者背景中的图片,也可以称为 ...

  3. 【DirectX 2D游戏编程基础】DirectX精灵的创建

    首先,说明一下,我的博客里的代码均为完整代码,只要环境搭建没有问题,复制代码即可运行 工程文件下载地址:http://download.csdn.net/detail/shangdi712/90520 ...

  4. 从零开始编写自己的C#框架(11)——创建解决方案

    从零开始编写自己的C#框架(11)--创建解决方案 参考文章: (1)从零开始编写自己的C#框架(11)--创建解决方案 (2)https://www.cnblogs.com/EmptyFS/p/37 ...

  5. 曾经花上数十小时编写过的QQ农场辅助精灵

    QQ农场辅助精灵DotNet(c#)版是2009年8月份自已编写的,开发工具是vs2005,语言c#,花了数十小时编写与调试,也算是检验编写辅助外挂类程序的能力. 编写基于http协议的辅助外挂类程序 ...

  6. 定位、锚点、精灵图、帧动画详解

    1.定位 1.定位 position 说法 文档流 偏移位置(top left right bottom)时候的参照物 1.position:static; 默认值 默认值 默认 2.position ...

  7. 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件

    在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的 ...

  8. linux qt 自定义控件,编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件...

    要想在Qt Designer中使用自定义控件,必须要使Qt Designer能够知道我们的自定义控件的存在.有两种方法可以把新自定义控件的信息通知给Qt Designer:"升级(promo ...

  9. 编写js,使用对象字面量的形式创建一个名字为可可的狗的对象,具体信息如下:

    名称:可可 类型:阿拉斯加犬 年龄:5岁 颜色:棕红色 技能:汪汪叫,摇尾巴 <!DOCTYPE html> <html lang="en"> <he ...

最新文章

  1. DeepFaceLab史上最快的环境搭建(虚拟环境)
  2. MFC中Spin control的使用
  3. python图片二进制流转换成图片_python将图片二进制数据转换成Django file对象
  4. ‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
  5. 红米airdots掉了怎么查找_红米K30 Pro 荣耀V30pro 这两款手机该怎么选呢?
  6. 2014-07-28 使用Axure RP进行手机端BBS的原型设计
  7. 机器学习与计算机视觉(移动端深度学习优化框架)
  8. 5.10地址信息函数
  9. 纯CSS3实现牛奶般剔透的3D按钮特效
  10. 《像计算机科学家一样思考Python》——4.4 封装
  11. BricsCAD 21 for Mac(CAD建模软件)多语言版
  12. 为什么设置 height 100% 不起作用
  13. 刚刚,蚂蚁金服荣膺“中国金融大数据领军企业”称号 1
  14. android导航工厂设置密码,导航工厂设置密码大全,所有导航工厂密码多少
  15. 【图像增强】基于matlab直方图均衡化图像增强【含Matlab源码 960期】
  16. 微软卸载工具msicuu2(附带资源)
  17. 讲解三层代码讲解(DLL规则层如何接收服务器的数据,又如何交回给服务器)--第四课(*****) DATE :2004-06-01...
  18. 世界上最神奇的网站收录--不是最无聊就是最有意思
  19. 西游记中荆棘岭五个树精
  20. 怎样无损压缩视频?试试这个视频压缩大小的工具

热门文章

  1. 2.Android的学习(Android的环境搭建)
  2. Java 中的四种引用
  3. JavaScript实现递归楼梯问题(动态规划解决方案)算法(附完整源码)
  4. JavaScript实现阶乘递归factorialRecursive算法(附完整源码)
  5. OpenCASCADE绘制测试线束:布尔运算命令之两个操作数的布尔运算
  6. boost::type_erasure模块实现了支持多个签名的 Boost.Function 扩展
  7. boost::serialization模块实现快速二进制归档的测试程序
  8. boost::hana::hash用法的测试程序
  9. boost::log模块使用属性关键字的示例
  10. boost::graph模块实现斐波那契堆的测试程序