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;

}

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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();

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

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();

执行结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdG90b3R1enVvcXVhbg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">

编写MyLayer,2 锚点,3 精灵的创建,4 zorder的更多相关文章

  1. cocos2d-x 精灵的创建和基本使用

    在cocos2d-x中.精灵能够说是一个最重要的组成元素,它代表游戏中一个最小的可见单位.同一时候也是CCNode一个最为灵活的子类,由于它能够通过装载一个平面纹理,从而具有丰富的表现力. 在进一步说 ...

  2. [Unity3D插件]2dtoolkit系列二 动画精灵的创建以及背景图的无限滚动

    经过昨天2dtoolkit系列教程一的推出,感觉对新手还有有一定的启发作用,引导学习使用unity 2dToolKit插件的使用过程,今天继续系列二——动画精灵的创建,以及背景图的无限循环滚动,在群里 ...

  3. react-native-pg-style使用方法(以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式.)

    react-native-pg-style 以最简单的方式编写样式代码,抛弃react-native标准的样式创建方式. 看大家写的源码中都是按照react-native标准的样式创建方式来写样式代码 ...

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

    这段时间一直在充电,拜读了园子中大神们的博文(wayfarer的<设计之道>.TerryLee的<.NET设计模式系列文章>.卡奴达摩的<设计模式>还有其他一些零散 ...

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

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

  6. 基于OpenGL编写一个简易的2D渲染框架-01 创建窗口

    最近正在学习OpenGL,我认为学习的最快方法就是做一个小项目了. 如果对OpenGL感兴趣的话,这里推荐一个很好的学习网站 https://learnopengl-cn.github.io/ 我用的 ...

  7. RuPengGame游戏引擎 精灵 createSprite 创建 setSpritePosition 设置位置 playSpriteAnimate 播放动画 setSpriteFlipX设置翻转 精灵图片下载地址

    package com.swift; import java.awt.Point; import com.rupeng.game.GameCore;//导入游戏引擎包 public class Gam ...

  8. cocos2d-android学习四 ---- 精灵的创建

    上篇文章我们创建了一个黑乎乎的界面.以下我们就给它增加一个精灵. 我们这次就一起来学习精灵的基础知识. 1.什么是精灵 游戏中全部会动的对象都是精灵,能够是主人公,背景元素,一个子弹或者是敌人. 一个 ...

  9. 11.按要求编写Java应用程序。 (1)创建一个叫做机动车的类: 属性:车牌号(String),车速(int),载重量(double) 功能:加速(车速自增)、减速(车速自减)、修改车牌号,查询车的载重量。 编写两个构造方法:一个没有形参,在方法中将车牌号设置“XX1234”,速 度设置为100,载重量设置为100;另 一个能为对象的所有属性赋值; (2)创建主类: 在主类中创建两个机动车对象。

    package java1; public class Che { //属性 public String nub; public int speed; public double weight ; C ...

随机推荐

  1. Jquery IE8兼容性

    环境: jsp+jquery-1.11.1.min.js 问题描述: 使用$("#article标签id名").append(“xxxxxxxxx") ,chrome.f ...

  2. SQLServer2008 有用的判断函数

    ISNULL(参数1,参数2) 若参数1为空,则返回参数2 NULLIF(参数1,参数2) 若参数1和参数2不等,则返回参数1 若参数1和参数2相等,则返回NULL 例子:ISNULL(NULLIF( ...

  3. 查找索引/ie滤镜/动态背景/属性attr和prop

    1. 查找索引 查找当前元素在指定范围内的索引序号,示例: $('.right_newestState_con').find('em').index($(this)); 2. ie滤镜 利用ie的私有 ...

  4. javascript中计算点击多少次

    点击事件:onclick <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...

  5. python特性小记(一)

    一.关于构造函数和析构函数 1.python中有构造函数和析构函数,和其他语言是一样的.如果子类需要用到父类的构造函数,则需要在子类的构造函数中显式的调用,且如果子类有自己的构造函数,必然不会自动调用 ...

  6. ROS:ubuntuKylin17.04-Ros使用OrbSLAM2

    忙于图像处理和DCNN,很长时间不使用ROS,重新安装系统后,再次使用ORB-SLAM2(ROS)进行三维重建和实时追踪的演示. 参考以前的文章:ROS:ubuntu-Ros使用OrbSLAM ORB ...

  7. 时序分析:DTW算法(基于模板)

    对时序对象进行分析,使用KMP算法可以分析速率不变的模式,参考时序分析:欧式空间轨迹模式识别.使用基于模板匹配的方法,对于速率发生变化的模式,需要用新的对速率要求松散的方法,DTW方法为一种广泛使用的 ...

  8. Vue2 封装的 Quill 富文本编辑器组件 Vue-Quill-Editor

    1.安装 npm install vue-quill-editor --save 2.使用 import { quillEditor } from 'vue-quill-editor' 3.组件中 & ...

  9. Tomcat 服务器中jsp页面乱码

    <Connector port="80" protocol="HTTP/1.1"               connectionTimeout=&quo ...

  10. Java实验环境搭建

    1.JDK的下载一.JDK的下载及安装 (1).网站网址搜索http://www.oracle.com/technetwork/java,进入浏览页(2)找到Trials and Download 点 ...