`
473687880
  • 浏览: 535342 次
文章分类
社区版块
存档分类
最新评论

cocos2d-x3.0打飞机学习之纠正上一篇的一个问题

 
阅读更多

声明:模仿偶尔e网事童鞋。


虽然改变了代码风格,但有一个关键点忽略了,就是autorelease。cocos2d-x一般用静态的create函数来搞,里面封装了autorelease。

现在我这种写法需要在外部显式调用。

#pragma once
#include "cocos2d.h"
USING_NS_CC;

class PlaneLayer : public Layer
{
public:
	PlaneLayer();
};
#include "PlaneLayer.h"

PlaneLayer::PlaneLayer()
{
	Layer::init();

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

	auto spriteFrameCache = cocos2d::SpriteFrameCache::sharedSpriteFrameCache(); 
	spriteFrameCache->addSpriteFramesWithFile("shoot.plist");

	Sprite* plane = Sprite::createWithSpriteFrame(spriteFrameCache->spriteFrameByName("hero1.png"));
	plane->setPosition(ccp(winSize.width/2, plane->getContentSize().height/2));
	addChild(plane);

	Blink* blink = Blink::create(1,3);

	CCAnimation* animation = CCAnimation::create();
	animation->setDelayPerUnit(0.1);
	animation->addSpriteFrame(spriteFrameCache->spriteFrameByName("hero1.png"));
	animation->addSpriteFrame(spriteFrameCache->spriteFrameByName("hero2.png"));

	CCAnimate* animate = CCAnimate::create(animation);

	plane->runAction(blink);
	plane->runAction(CCRepeatForever::create(animate));
}

在GameLayer里包含PlaneLayer,这里我没有用全局对象,因为不是所有对象都应该有权限访问PlaneLayer。谁需要才给他。

class GameLayer : public cocos2d::Layer
{
public:
	GameLayer();
	void backGroupMove(float dt);

private:
	cocos2d::Sprite* m_pBackground1;
	cocos2d::Sprite* m_pBackground2;
	PlaneLayer* m_pPlaneLayer;
};

GameLayer::GameLayer()
{
	cocos2d::Layer::init();

	auto spriteFrameCache = cocos2d::SpriteFrameCache::sharedSpriteFrameCache(); 
	spriteFrameCache->addSpriteFramesWithFile("shoot_background.plist");

	m_pBackground1= Sprite::createWithSpriteFrame(spriteFrameCache->getSpriteFrameByName("background.png"));
	m_pBackground1->setPosition(ccp(0,0));
	m_pBackground1->setAnchorPoint(ccp(0,0));
	addChild(m_pBackground1);

	m_pBackground2= Sprite::createWithSpriteFrame(spriteFrameCache->getSpriteFrameByName("background.png"));
	m_pBackground2->setPosition(ccp(0,m_pBackground2->getContentSize().height-5));
	m_pBackground2->setAnchorPoint(ccp(0,0));
	addChild(m_pBackground2);

	schedule(schedule_selector(GameLayer::backGroupMove), 0.01f);

	m_pPlaneLayer = new PlaneLayer;
	m_pPlaneLayer->autorelease();
	addChild(m_pPlaneLayer);
}

看到木有,我这里要显式调用m_pPlaneLayer->autorelease();但代码有木有比之前的清晰,如果感觉木有,就忽略吧,个人喜好。偷笑

分享到:
评论

相关推荐

    cocos2d-x 3.0

    cocos2d-x 3.0是cocos2d-x系列的一个重要升级,它基于C++编写,支持跨平台开发,包括iOS、Android、Windows等多个操作系统。该版本引入了新的渲染系统、性能提升、新的动画系统以及更友好的API,极大地提高了开发...

    Cocos2d-x3.0正式版 练练看 源码

    4. **多平台支持**:作为一款跨平台框架,Cocos2d-x3.0支持iOS、Android、Windows、Mac、Linux等多个平台,开发者只需要编写一次代码,就可以在多个平台上发布游戏。 5. **游戏资源管理**:框架提供了强大的资源...

    Cocos2d-x 3.0的俄罗斯方块代码

    《Cocos2d-x 3.0的俄罗斯方块代码》是一个基于Cocos2d-x游戏引擎3.0及以上版本实现的经典游戏项目。Cocos2d-x是一个广泛使用的开源跨平台2D游戏开发框架,它允许开发者用C++、Lua或JavaScript编写游戏,并在iOS、...

    cocos2d-x-3.0 类图

    这是我重新弄的cocos2d-x-3.0的类图.之前别人兄台弄的,有些不全面,有些地方错误.我这个可以说是最新的了.每个类添加了中文的详细注解,同时也添加了中文的类名称翻译.这样对cocos2d-x-3.0的框架比较好上手. 有兴趣的...

    Cocos2d-x 3.0 过渡学习

    Cocos2d-x是一个开源的游戏开发框架,它被广泛应用于iOS、Android、Windows、MacOS、Linux等平台,为游戏开发者提供了一个快速开发跨平台2D游戏的解决方案。Cocos2d-x版本的更新通常会带来许多新的特性和改进,同时...

    cocos2d-x3.0rc0 中文API

    在cocos2d-x中,Scene代表游戏的一个独立阶段,而Layer则是在Scene上进行游戏逻辑和视觉元素展示的基本单元。3.0版本中,Scene和Layer的创建、管理及过渡都有清晰的API说明,包括`CCScene`、`CCLayer`及其子类。 三...

    cocos2d-x 3.0-alpha0 Lib文件

    3.0-alpha0是cocos2d-x的一个重要版本,它引入了诸多新特性与优化,旨在提升开发效率和游戏性能。本篇文章将详细介绍cocos2d-x 3.0-alpha0中的Lib文件,以及其在游戏开发中的应用。 首先,Lib文件是cocos2d-x框架的...

    animatepacker +cocos2d-x3.0接口封装

    总的来说,animatepacker与cocos2d-x3.0的接口封装是游戏开发中的一个重要环节,它提升了开发效率,降低了资源管理的复杂性,同时也优化了游戏的性能。通过理解和掌握这一技术,开发者可以更好地利用animatepacker的...

    兄弟连cocos2d-x3.0 final视频教程完整版

    ### Cocos2d-x3.0 Final视频教程知识点解析 #### 一、Cocos2d-x简介 Cocos2d-x是一款开源的游戏开发框架,它支持多种编程语言,包括C++、JavaScript和Lua等。该框架特别适用于移动平台游戏的开发,支持iOS、...

    cocos2d-x 3.0 类关系图

    这是cocos2d-x 3.0 类关系图, 这个制作者是:gamecocos2dx 他做的Xmind,我导出的PNG格式,我推荐还是看Xmind,里面还有一些注释 gamecocos2dx Xmind下载地址:...

    cocos2d-x 3.0创建项目

    在cocos2d-x 3.0中创建项目是一个重要的步骤,这标志着你的游戏或应用开发的起点。Cocos2d-x 是一个跨平台的2D游戏开发框架,支持多种编程语言,包括C++和Lua。以下是使用Cocos2d-x 3.0创建项目的详细步骤: 1. **...

    cocos2d-x3.0导出自定义类到lua的测试源文件

    《cocos2d-x3.0中自定义类与Lua交互的深度解析》 在cocos2d-x 3.0版本中,开发者们经常需要将C++自定义的类暴露给Lua脚本使用,以便在游戏中实现更复杂的逻辑和交互。这篇文档将详细解释如何将C++自定义类导出到Lua...

    Cocos2d-x3.0游戏实例《别救我》源码

    Cocos2d-x3.0是一款广泛应用于游戏开发的开源框架,主要支持2D游戏的构建,基于C++,同时也提供了Lua和JavaScript的绑定。它以其高效、跨平台的特性,使得开发者能够轻松地在iOS、Android、Windows等多个平台上发布...

    SneakyJoystick-Cocos2d-x 3.0rc0

    标题中的"SneakyJoystick-Cocos2d-x 3.0rc0"指的是该库的一个特定版本,即3.0发布候选版0。 SneakyJoystick是由开发者SneakyBox制作的,它为Cocos2d-x游戏提供了模拟摇杆的功能,让玩家能够通过触摸屏幕来控制角色...

    cocos2d-x 3.0 骨骼动画 demo

    cocos2d-x 是一个广泛使用的开源游戏开发框架,而3.0版本在原有的基础上引入了骨骼动画功能,大大增强了2D游戏的角色表现力和动态效果。本篇文章将围绕“cocos2d-x 3.0 骨骼动画 demo”进行深入探讨,包括其工作原理...

    cocos2d-x 3.0 +cocostudio 1.4 奇怪的大冒险

    本篇将深入探讨如何利用cocos2d-x 3.0与cocostudio 1.4来构建一个"奇怪的大冒险"游戏。 一、cocos2d-x 3.0基础 cocos2d-x 3.0是cocos2d-x系列的一个重要版本,它基于C++,提供了丰富的API和优化的性能。主要特点...

    Cocos2d-x3.0final自学教程贪食蛇项目源码

    《Cocos2d-x3.0final自学教程贪食蛇项目源码》是针对游戏开发初学者的一个宝贵资源,它提供了使用Cocos2d-x3.0final版本开发经典游戏"贪食蛇"的完整代码。Cocos2d-x是一个跨平台的2D游戏开发框架,广泛应用于iOS、...

    cocos2d-x 3.0 离线文档

    cocos2d-x是一个开源的游戏开发框架,基于C++,并支持多平台,包括iOS、Android、Windows以及Mac OS等。它为游戏开发提供了丰富的功能,如图形渲染、动画处理、物理引擎、音频管理以及用户界面设计等。 离线文档...

    cocos2d-x 3.0简单例子(超详细)

    总结来说,cocos2d-x 3.0是一个强大的游戏开发工具,其3.0版本引入了许多改进,使得开发过程更加高效和便捷。通过理解并熟练运用其核心概念和新特性,开发者可以创造出各种各样的2D游戏。同时,对项目结构的理解有助...

    cocos2d-x 3.0-alpha0 SDK头文件和DLL文件

    《cocos2d-x 3.0-alpha0 SDK:头文件与DLL的解析与应用》 Cocos2d-x是一款广泛使用的开源游戏开发框架,它基于C++,为开发者提供了跨平台的游戏开发能力,覆盖了iOS、Android、Windows等多个平台。在cocos2d-x 3.0-...

Global site tag (gtag.js) - Google Analytics