编写MyLayer,2 锚点,3 精灵的创建,4 zorder

??

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

执行结果:

时间: 2024-10-20 09:19:49

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

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

在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的需求,但是有时候,也会产生一些特殊的需要,比如一个输入框,我们要输入的是经纬度,此时就会有两种输入方式,一种是小数形式,一种是度分秒的形式,此时只使用一个简单的LineEdit是无法满足需求的.我们设想构造这样一个输入控件,它可以支持浮点数输入,同时它还具有一个属性,更改这个属性可以使其切换为经纬度

第四讲:CCSprite精灵类 -- 创建精灵

创建精灵类的6种方法: 1.最常用的方法 //获取屏幕大小 CCSize size = CCDirector::sharedDirector()->getWinSize(); CCSprite *sp1 = CCSprite::create("icon.png"); sp1->setPosition(size.width*0.2, size.height*0.7); this->addChild(sp1); 2. CCSprite *sp2 = CCSprite::c

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

最近正在学习OpenGL,我认为学习的最快方法就是做一个小项目了. 如果对OpenGL感兴趣的话,这里推荐一个很好的学习网站 https://learnopengl-cn.github.io/ 我用的是 vs2013,使用C++语言编写项目.这个小项目叫Simple2D,意味着简易的2D框架.最终的目的是可以渲染几何图形和图片,最后尝试加上一个2D粒子系统和Box2D物理引擎,并编译一个简单的游戏. 第一步,就是创建一个Win32项目. 接下来,生成一个窗口.编写一个RenderWindow类,

按要求编写Java应用程序。 (1)创建一个叫做People的类: 属性:姓名、年龄、性别、身高 行为:说话、计算加法、改名 编写能为所有属性赋值的构造方法; (2)创建主类: 创建一个对象:名叫“张三”,性别“男”,年龄18岁,身高1.80; 让该对象调用成员方法: 说出“你好!” 计算23+45的值 将名字改为“李四”

package java1; public class People { public String name; public int age; public String sex; public String height; People(String name, int age, String sex, String height) { this.name = name; this.age = age; this.sex = sex; this.height = height; } publ

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

package com.hanqi.test; public class jidongche { private String chepaihao;//车牌号 private int speed;//速度 private double weight;//载重量 //无参构造方法 jidongche() { } public String getChepaihao() { return chepaihao; } public void setChepaihao(String chepaihao)

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

package java1; public class Che { //属性 public String nub; public int speed; public double weight ; Che() { nub="XX1234"; speed=100; weight=100; } Che(String nub, int speed,double weight) { this.nub = nub; this.speed = speed; this.weight = weight

cocos2d-x ios游戏开发初认识(五) CCsprite精灵类

这次写一下精灵创建的几种类型: 一.通过文件创建: 在原有的基础上添加如下代码: //一.通过文件创建精灵 CCSprite *bg =CCSprite::create("map.png"); CCSize winSize  =CCDirector::sharedDirector()->getWinSize(); //得到屏幕的尺寸 bg->setPosition(ccp(winSize.width/2, winSize.height/2)); this->addCh

第五讲:OpenGL坐标系和UIKit坐标系、锚点、addChild函数详解

一.坐标系 OpenGl坐标系 原点在左下角(0,0),与数据的二维坐标系一致 UIKit坐标系 又称为屏幕坐标系,原点在左上角,X轴越右越大,Y轴越下越大: 由OpenGL转化为UIKit的方法: CCPoint point = CCDirector::sharedDirector()->convertToUI(sp1->getPosition); 二.锚点 锚点默认为(0.5,0.5) 就是在精灵的中间 : *****坐标系已锚点定位(先确定锚点在哪,ccp(X,Y)是描述锚点在哪个位置)

单例模式的应用___网络电视精灵

网络电视精灵 首先创建几个基本类 编写节目类 属性:播出时间.时段.名称.视频路径 编写频道基类 属性:频道名称.频道节目单位置.节目列表 抽象方法:Fetch() 编写频道子类 继承“频道基类”,实现Fetch()[只写方法声明] 编写频道工厂类 方法:实现创建频道子类 private void tsmAddToFavor_Click(object sender, EventArgs e) { //如何将电台从所有电台加载到我的电台 TreeNode tn = tvChannel.Select