编写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(); 运行结果: |
编写MyLayer,2 锚点,3 精灵的创建,4 zorder相关推荐
- cocos2dx之锚点/坐标系/精灵 详解
(1)什么是锚点 当我们插入一张图片时,我们需要调整它的位置.假如一张空白的画布是背景,那么当我们插入一张图片时,我们如何确定图片的位置呢?图片可以看做一个精灵,也就是一个节点.那么对于一个节点的位置 ...
- 【Cocos2d-x】Sprite精灵类-创建Sprite精灵对象
精灵在Cocos2d-x中的地位就像一场电影中的主角,男主角/女主角,是一场电影中的灵魂所在.也是我们游戏中的灵魂 无论我们控制的对象还是电脑控制的对象,我们都称之为精灵,或者背景中的图片,也可以称为 ...
- 【DirectX 2D游戏编程基础】DirectX精灵的创建
首先,说明一下,我的博客里的代码均为完整代码,只要环境搭建没有问题,复制代码即可运行 工程文件下载地址:http://download.csdn.net/detail/shangdi712/90520 ...
- 从零开始编写自己的C#框架(11)——创建解决方案
从零开始编写自己的C#框架(11)--创建解决方案 参考文章: (1)从零开始编写自己的C#框架(11)--创建解决方案 (2)https://www.cnblogs.com/EmptyFS/p/37 ...
- 曾经花上数十小时编写过的QQ农场辅助精灵
QQ农场辅助精灵DotNet(c#)版是2009年8月份自已编写的,开发工具是vs2005,语言c#,花了数十小时编写与调试,也算是检验编写辅助外挂类程序的能力. 编写基于http协议的辅助外挂类程序 ...
- 定位、锚点、精灵图、帧动画详解
1.定位 1.定位 position 说法 文档流 偏移位置(top left right bottom)时候的参照物 1.position:static; 默认值 默认值 默认 2.position ...
- 编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件
在使用Qt Designer设计窗体界面时,我们可以使用Widget Box里的窗体控件非常方便的绘制界面,比如拖进去一个按钮,一个文本编辑器等.虽然Qt Designer里的控件可以满足我们大部分的 ...
- linux qt 自定义控件,编写Qt Designer自定义控件(一)——如何创建并使用Qt自定义控件...
要想在Qt Designer中使用自定义控件,必须要使Qt Designer能够知道我们的自定义控件的存在.有两种方法可以把新自定义控件的信息通知给Qt Designer:"升级(promo ...
- 编写js,使用对象字面量的形式创建一个名字为可可的狗的对象,具体信息如下:
名称:可可 类型:阿拉斯加犬 年龄:5岁 颜色:棕红色 技能:汪汪叫,摇尾巴 <!DOCTYPE html> <html lang="en"> <he ...
最新文章
- DeepFaceLab史上最快的环境搭建(虚拟环境)
- MFC中Spin control的使用
- python图片二进制流转换成图片_python将图片二进制数据转换成Django file对象
- ‘ping‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
- 红米airdots掉了怎么查找_红米K30 Pro 荣耀V30pro 这两款手机该怎么选呢?
- 2014-07-28 使用Axure RP进行手机端BBS的原型设计
- 机器学习与计算机视觉(移动端深度学习优化框架)
- 5.10地址信息函数
- 纯CSS3实现牛奶般剔透的3D按钮特效
- 《像计算机科学家一样思考Python》——4.4 封装
- BricsCAD 21 for Mac(CAD建模软件)多语言版
- 为什么设置 height 100% 不起作用
- 刚刚,蚂蚁金服荣膺“中国金融大数据领军企业”称号 1
- android导航工厂设置密码,导航工厂设置密码大全,所有导航工厂密码多少
- 【图像增强】基于matlab直方图均衡化图像增强【含Matlab源码 960期】
- 微软卸载工具msicuu2(附带资源)
- 讲解三层代码讲解(DLL规则层如何接收服务器的数据,又如何交回给服务器)--第四课(*****) DATE :2004-06-01...
- 世界上最神奇的网站收录--不是最无聊就是最有意思
- 西游记中荆棘岭五个树精
- 怎样无损压缩视频?试试这个视频压缩大小的工具
热门文章
- 2.Android的学习(Android的环境搭建)
- Java 中的四种引用
- JavaScript实现递归楼梯问题(动态规划解决方案)算法(附完整源码)
- JavaScript实现阶乘递归factorialRecursive算法(附完整源码)
- OpenCASCADE绘制测试线束:布尔运算命令之两个操作数的布尔运算
- boost::type_erasure模块实现了支持多个签名的 Boost.Function 扩展
- boost::serialization模块实现快速二进制归档的测试程序
- boost::hana::hash用法的测试程序
- boost::log模块使用属性关键字的示例
- boost::graph模块实现斐波那契堆的测试程序