COCOS2D-X源码分析之初始化游戏

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情
#include "cocos2d.h"
/**
 CCEGLView  自适应模块业务
**/
#include "CCEGLView.h"
#include "AppDelegate.h"
#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"
/**
@see 委托类
**/
using namespace CocosDenshion;
// #define USING_NS_CC                     using namespace cocos2d 创建一个声明用于创建场景类
USING_NS_CC;


AppDelegate::AppDelegate()
{
}


AppDelegate::~AppDelegate()
{
/**
@see 设置游戏的音效
**/
    SimpleAudioEngine::end();
}
/**


(1)初始化CCEGLView,在不同平台下,CCEGLView是不同的
(PS:cocos2d-x中有很多这样的用法,即同一个头文件,在不同平台上实现不同)


win32平台下的CCEGLView是一个windows窗口,具体情况CCEGLView::Create()


(PS:CCEGLView还用来处理鼠标点击模拟器触摸,按键等事件的处理,如果要自定义,请参看CCEGLView::WindowProc(),这个函数是Windows程序接收消息回调)


(2)游戏引擎的主循环
在完成CCEGLView初始化之后,将开启游戏渲染的主循环,即调用CCDirector::sharedDirector()->mainLoop()。这样,程序就又交给CCDirector类来处理,CCDirector主要处理两件事情
a. 通过引用计数实现对内存的管理
b. 游戏内元素的渲染
**/
bool AppDelegate::applicationDidFinishLaunching()
{
    //初始化导演类
    CCDirector *pDirector = CCDirector::sharedDirector();
//如果stop了动画,则调用此函数
    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());
    //设置OpenGL的默认值为true
    pDirector->setDisplayStats(true);


    //设置FPS。默认值是1.0/60,30FPS是一般录像的常用帧数,60是一般游戏的常用帧数
    pDirector->setAnimationInterval(1.0 / 60);


    // 创建一个场景。它是一个自动释放的对象
    CCScene *pScene = HelloWorld::scene();


    //运行场景
    pDirector->runWithScene(pScene);
    return true;
}


/**
游戏中,突然间来了一个接收到电话事件,这时候,调用该函数到后台,暂停游戏
**/
void AppDelegate::applicationDidEnterBackground()
{
//停止游戏脚本
    CCDirector::sharedDirector()->stopAnimation();
//暂停音乐
    SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();
}


//游戏恢复
void AppDelegate::applicationWillEnterForeground()
{
//
    CCDirector::sharedDirector()->startAnimation();
//系统恢复
    SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();
}
cocos2dx的初始化流程 1.首先知道cocos2dx的都知道,框架会创建一个AppDelegate单例对象,AppDelegate的run方法里面会创建一个CCEGLView单例对象,CCEGLView会做一些窗口的注册,还有窗口过程的回掉函数WindowProc 在窗口第一次激活显示的时候CCEGLView::WindowProc 这个方法立马回去调用CCApplication::sharedApplicatio... 阅读详情

相关推荐

Cocos2d-x 3.x】 调度器Scheduler类源码分析

结合官方文档和引擎源代码,对调度器的一个浅显的理解,估计有很多不足之处,请读者指出,万分感谢!

Mccree的博客专栏 1580

cocos2d-x应用窗口相关源码剖析5-其他细节

Cocos2d-x 的“HelloWorld” 细节分析   打开 HelloWorld 工程 , 里面有两个文件目录 Classes 和 win32 。 Classes 下有 HelloWorldScene.h/cpp ,AppDelegate.h/cpp. win32 下有 main.h/cpp 首先看一下 win32 目录下的 main.h, 其中定义了使用

bombing的专栏 953

dshow windowed mode

dshow里面的windowed mode 其实就是把graphedt弹出的框框以windowed mode的方式嵌入到mfc的对话框中

在Windows下让游戏窗口全屏

原文地址:http://www.eoeandroid.com/thread-250863-1-1.html 參考了一下NeHe 的教程, 在 cocos2d-x 2.0 上可以做點小手腳在 Windows 上全屏顯示! 主要修改兩個檔案: CCEGLView.h CCEGLView.cpp 它們在工程里的位置是 libcocos2d->platform->win32 先打開

爱在一毛钱 1549

基础2 win 32 Helloworld

来自:http://wangjunle23.blog.163.com/blog/static/1178381712012113075040878/ 博主注:如果想详细学习一下cocos2d-x,建议学习一下它的祖先:cocos2d《Learn IPhone and IPad cocos2d Game Development》 为什么要定义windows平台

qqGeQi的专栏 636

cocos2dx入门一之引擎初始化

代码执行流程: Cocos2dxRenderer.onSurfaceCreated()-Cocos2dxRenderer.nativeInit()->main.cpp.Java_org_cocos2dx_lib_Cocos2dxRenderer_nativeInit()->CCApplication.run()->AppDelegate.applicationDidFinishLaunchi

风生水起 5259

Cocos2d-x3.0源码分析之跨平台适配层

下面是Cocos2dx的整个架构图,今天要分析的是Android和iOS

huangkunkunkun的专栏 3203

cocos2d-x启动过程

游戏~ 1.建立cocos2d-x-3.5的项目 进入cocos.py所在的文件夹,使用python cocos.py new HelloCpp3 -p com.cocos2dx.org -l cpp -d ~/destination 2.打开HelloCpp3的文件夹,看一下文件结构: 可以看到proj.android,proj.ios_mac,proj.linux,pro

liufang1a2b的专栏 1849

cocos2d-x游戏开发系列教程-坦克大战游戏关卡选择场景的编写下

上篇文章写了Paddle类来处理精灵的点击、触摸事件,现在我们在Paddle的基础上写一个MyPaddle类,来处理上一关、下一关、开始游戏按钮的点击事件。1.类声明如下:class MyPaddle : public Paddle { CC_SYNTHESIZE(enum_evt, m_evttyp, evttyp); CC_SYNTHESIZE(ChoiceScene*, m_pSenc

尹成的技术博客 4591

cocos2d-x整体框架源码分析以及启动过程原理(win32)

引言:如果你想深入了解cocos2d-x的整个框架和运行流程,如果你想知道整个启动过程的细节,如果你想知道自己写的代码是在什么时候和在哪里被调用的,下面可以为你解答其中奥秘。 对象:适合刚刚入门了cocos2d-x的初学者,编写并运行过简单的demo,并且想仔细探究其中的原理机制。

1818

cocos2d-x 之 CCArray 源码分析

cocos2d-x 自己实现了一个数组CCArray ,下面我们来分析一下CCArray的源码 CCArray继承CCObject,所以,CCArray也具有引用计数功能和内存自动管理功能。 数组的源码如下: class CC_DLL CCArray : public CCObject { public: /********************************...

xhm1211的专栏 494

cocos2D-X源码分析之从cocos2D-X学习OpenGL(6)---cocos内置着色器

上一篇我们介绍了cocos2d-x绘制基本图形的基本流程,我们还留下了一个着色器的部分没有讲,本篇内容将从openGL的渲染流程讲起,介绍cocos2d-x中的着色器,openGL的渲染流程如图所示:              openGL的绘制通常就是将顶点数据传输到openGL服务端。我们可以将一个顶点视为一个需要统一处理的数据包,这个包中的数据可以是我们需要的任何数据,通常其中几乎始终会包含

手机游戏开发学习笔记 9146

cocos2d-x 源码解析】创建 OpenGL 环境

cocos2d-x 是基本 OpenGL 实现的,所以游戏启动之后做的第一件事就是创建 OpenGL 上下文,之后才能进行渲染。在 win32 上,创建 OpenGL context 的过程就是创建一个 OpenGL 窗口,cocos2d-x 使用的是 glfw 库

xingxinmanong的博客 2198

cocos2D-X源码分析之从cocos2D-X学习OpenGL(1)----cocos2D-X渲染结构

cocos2D-X 3.0渲染结构代码讲解,也是cocos2D-X源码讲解系列文章和从cocos2D-X学习OpenGL系列文章的开始

手机游戏开发学习笔记 1万+

Cocos2d-x游戏逆向分析:从引擎识别到脚本解密实战指南

游戏逆向工程是理解软件内部运行机制、进行安全审计与漏洞挖掘的重要技术领域。其核心原理在于通过静态与动态分析手段,解析程序的二进制代码、资源文件及运行时行为,从而还原其设计逻辑与数据流。在移动游戏开发中,Cocos2d-x作为广泛使用的开源跨平台游戏引擎,其技术栈与架构特点为逆向分析提供了明确的切入点。掌握针对Cocos2d-x应用的逆向技术,对于游戏安全研究、外挂对抗与机制学习具有重要价值。典型的应用场景包括分析游戏资源加载逻辑、修改核心数值参数以及研究通信协议。本文聚焦于Cocos2d-x游戏逆向的完整方

weixin_34129696的博客 360

cocos2d-x CCMenu详细源码分析

.h typedef enum { kCCMenuStateWaiting, // 表示没有菜单项被选中 kCCMenuStateTrackingTouch // 表示有菜单项被选中 } tCCMenuState; enum { //* priority used by the menu for the event handler kCCMenuHandle

CrazysPopcorn_qian的专栏 894

Cocos2d-x 3.x RenderTexture渲染纹理源码分析

最近在学习3.x的源码,3.x的渲染机制改动比较大,改变了之前在每帧遍历所有的Node树节点时通过draw()方法中的直接渲染,而是通过生成渲染指令并将渲染指令发送到渲染队列,在每一帧结束时进行延迟渲染,这样就把游戏循环和渲染分离开来,2dx官方说要把渲染放在一个独立的线程来处理,按照3.x现在的架构可能不久就会实现。 Cocos2d-x提供了一个RenderTexture类来支持把帧缓冲中的数

CC专栏 1万+

cocos2D-X源码分析之从cocos2D-X学习OpenGL(2)----QUAD_COMMAND

个人原创,欢迎转载,转载请注明原文地址http://blog.csdn.net/bill_man        上一篇文章介绍了cocos2d-x的基本渲染结构,这篇顺着之前的渲染结构介绍渲染命令QUAD_COMMAND命令的部分,通过这部分的函数,学习opengl处理图片渲染的方法,首先介绍这节需要涉及到的基本概念VAO和VBO。VAO和VBO:    顶点数组对象(Vertex Array O

手机游戏开发学习笔记 1万+
上一篇: Openfire业务统计模块
下一篇: Extjs基本业务处理事件之MVC
jecon
博客等级 码龄15年 10粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值