cocos2d-x深入运行启动过程(win32)

初触cocos2d-x,win32平台搭建以及创建第一个cocos2d-x项目遇到问题总结 应项目需要使用cocos2d-x开发,又要学习新东东了。·cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,用C++重写cocos2d-iphone引擎的一个开源项目,想了解更多的童鞋美去百度吧。一切回到原点,还是老样子先从helloworld开始搭建开发环。         网上有很多关于cocos2d-x部署安装部署的文章,开始不复杂,但是装在自己本本上还有遇到的些问题。 阅读详情
程序入口main.cpp
int APIENTRY _tWinMain(HINSTANCE hInstance,
                       HINSTANCE hPrevInstance,
                       LPTSTR    lpCmdLine,
                       int       nCmdShow)
{
    ...
    // create the application instance
    AppDelegate app;
    ...
    return CCApplication::sharedApplication()->run();
}
以上两行是关键代码
(1)代码AppDelegate app;调用了AppDelegate的构造函数,而它的父类是CCApplication,所以CCApplication的构造函数也被调用了
CCApplication::CCApplication()
: m_hInstance(NULL)
, m_hAccelTable(NULL)
{
    m_hInstance    = GetModuleHandle(NULL);
    m_nAnimationInterval.QuadPart = 0;
    CC_ASSERT(! sm_pSharedApplication);
    sm_pSharedApplication = this;
}
这里完成了AppDelegate和CCApplication之间的联系,由于AppDelegate是CCApplication的子类,故CCApplication里面的静态单例指针指的便是AppDelegate的实例。之后调用CCApplication::sharedApplication()的相关操作是基于AppDelegate的实现。
(2)代码CCApplication::sharedApplication()->run();调用了下面的代码
int CCApplication::run()
{
    ...
    // Initialize instance and cocos2d.
    if (!applicationDidFinishLaunching())
    {
        return 0;
    }
    ..
    while (1)
    {
        if (! PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
        {
            // Get current time tick.
            QueryPerformanceCounter(&nNow);

            // If it's the time to draw next frame, draw it, else sleep a while.
            if (nNow.QuadPart - nLast.QuadPart > m_nAnimationInterval.QuadPart)
            {
                nLast.QuadPart = nNow.QuadPart;
                CCDirector::sharedDirector()->mainLoop();
            }
            else
            {
                Sleep(0);
            }
            continue;
        }

        if (WM_QUIT == msg.message)
        {
            // Quit message loop.
            break;
        }

        // Deal with windows message.
        if (! m_hAccelTable || ! TranslateAccelerator(msg.hwnd, m_hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return (int) msg.wParam;
}
在这里,run()函数里面是一个while死循环,不过里面有判断条件 if (WM_QUIT == msg.message)可以跳出循环,终止程序。循环里面每隔一段时间m_nAnimationInterval就调用CCDirector::sharedDirector()->mainLoop(),完成游戏的刷新。
cocos2d-x接入live2d3.0学习 1. cocos2d-x接入live2d3.0学习 live2d3.0的sdk Cubism SDK for Native https://live2d.github.io/ cocos2d-x 3.16 https://cocos2d-x.org/download/version 2. 参考 .\cocos2d-x-3.16\README.md安装运行cocos2d cd \coc... 阅读详情

相关推荐

ESP32连接PDM麦克风操作指南:新手入门必看

手把手教你如何将ESP32与PDM麦克风连接,采集音频数据并用于音频分类应用。内容涵盖硬件接线、代码配置及实际调试技巧,适合初学者快速上手esp32在声音识别场景中的使用。

weixin_42590539的博客 1329

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

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

1822

蓝桥杯FPGA赛道积分赛

代码如下: 按键驱动 代码如下 按键驱动 代码如下: 顶层文件 按键驱动 数码管驱动 声明:本代码借鉴网络资料,如有侵权和错误请联系作者删除。我是从寒假开始备赛的,由于我基础不行,备赛过程中也是混混呃呃的,备赛效率不高,总体来说备赛不认真,有点拖拉,但是最后我也坚持备赛到了今天,在备赛过程中,即复习了旧的东西,也学到了新的东西,总结起来还是有点收获的,后天北京、天津、河北地区就要进行省赛了,我会全力以赴,不管结果怎么样,尽力就好,最后祝大家都能

weixin_69804913的博客 1991

cocos2dx 在win32打开黑色命令行

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34416754的博客 204

堆内存管理核心逻辑 超详细复习笔记

本文详细解析了堆内存管理的核心逻辑,包括初始化、分配和释放三个关键环节。系统通过全局堆管理结构体和链表机制实现动态内存管理:初始化时标记整块内存为空闲;分配时遍历链表查找合适空闲块并进行分割;释放时定位内存块头并重新标记为空闲,支持相邻块合并以减少碎片。文章对比了链表式管理和线性分配的优缺点,指出链表式更灵活但实现复杂,线性分配简单但无法释放。最后总结了常见错误(如指针回推错误、碎片问题)和扩展知识(不同内存管理算法)。这套机制是理解嵌入式系统和RTOS内存管理的基础。

2502_92009732的博客 1201

NVIDIA - 人形机器人扼要

人形机器人是仿照人类外形设计的通用双足机器人,旨在与人类并肩工作,提高生产效率。它们能够学习和执行各种任务,如抓取物体、移动集装箱、装卸箱子等。

机器人控制与仿真应用 1290

cocos2d-x3.2——启动过程[Win32]

1.

liufang1a2b的专栏 741

4位无符号比较器设计

4位无符号比较器设计

好好学习,天天向上 7891

Cocos Creator 引擎启动流程

index.html index.html 文件中,主要定义了游戏启动页面的布局显示,并且还有一段立即执行的脚本代码。这里截取文件中一部分比较关键的代码: // 加载引擎脚本 loadScript(debug ? 'cocos2d-js.js' : 'cocos2d-js-min.ec334.js', function () { // 是否开启了物理系统? if (CC_PHYSICS_BUILTIN || CC_PHYSICS_CANNON) { // 加载物理系统脚本并启

qq_14965517的博客 1453

【大模型】从0到1:DeepSeek + Coze API调用全攻略,企业,开发个人专属AI智能体使用详解,小白也能轻松上手

本文介绍了如何通过API将Coze智能体集成到自有系统中的完整步骤:1)获取API token和个人工作空间的space_id;2)通过GET请求获取bot_id;3)使用POST发起对话请求,需包含bot_id、user_id和问题内容;4)通过两次API调用异步获取响应消息。文章还解释了Coze采用异步处理机制的原因,并预告了下期将讲解Java调用Coze接口的实现方法。整个过程需要使用API工具进行调试,确保了系统集成的可行性。

qq_27246521的博客 822

QGis软件 —— 1、Windows10下载安装QGis及插件

QGis —— 1、Windows10下载安装QGis及插件

5160

【cocos2d-x 源码剖析】启动窗口

不仅游戏,任何程序都必须有一个启动的入口;几乎每个程序员接触编程的第一个程序都是 HelloWorld 控制台程序,这个最简单的程序的入口就是 Main 函数。接下来就让我们看看 cocos2d-x 创建的游戏是从哪里开始启动的,这里只探讨 win32 程序,其它平台以后有时间再探讨。

xingxinmanong的博客 681

STM32入门教程:WiFi通信

第四步:初始化串口 在生成的代码中,您可以找到一个名为 "USARTx_Init" 的函数,其中 "x" 是您选择的串口号。然后,我们使用 "AT+CIPSEND" 命令发送UDP数据,接收到服务器的回复,并在终端上显示收到的数据。在配置向导中,您可以选择启用USART串口功能,并根据您的硬件连接,将串口设置为与WiFi模块连接的串口。在上述代码中,我们使用了 "HAL_UART_Receive" 函数来接收串口数据,并使用 printf 来在终端上显示收到的数据。如果有任何问题,请随时向我提问。

2401_85258012的博客 1075

cocos2d-x如何实现跨平台

【cocos2d-x入门之四】cocos2d-x怎么实现跨平台 原创作品,转载请标明:http://blog.youkuaiyun.com/jackystudio/article/details/12610287 cocos2d-x到底是这样实现跨平台的呢?这里以Win32和Android为例。 1.跨平台项目目录结构 先看一下一个项目创建后的目

W_han__的博客 1405

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

cocos2dx+VS2019环境配置

在cocos解压文件夹目录下创建build文件夹来存储cmake命令生成的文件。 在build文件夹下,打开终端,在已经安装VS2019的前提下运行 cmake .. -G Visual Studio 16 2019 -A win32 #现在cocos2d只能在win32环境下编译成功,win64中没有定义``GWL_WNDPROC ``变量。 使用VS2019打开Cocos2d-x.sln,设置cpp-tests为startup project,并build,完成: ...

qq_41285311的博客 1535

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

cocso引擎整体流程

  任何程序都有入口,mian.cpp; Cocos2d也不免俗,在win32平台下,有一个mian.cpp 入口,从这里进入cocos的世界。 #ifndef __MAIN_H__ #define __MAIN_H__ //WIN32_LEAN_AND_MEAN 是WINDOWS API用于屏蔽一些不常用的API(优化应用程序)才用的。 #define WIN32_LEAN_...

weixin_30586085的博客 377

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

[cocos2d-x 学习] 第一个cocos2d-x win32程序和NDK交叉编译

第一个cocos2d-x win32程序 打开cocos2d-x工程,(如何打开?上一篇有讲过了,点这里),选择项目解决方案右键->添加->新建项目->选择cocos2d-x win32Application, 填写项目名称确定出现如下: 有相关可选参数,box2d,support Lua(支持Lua脚本),Simple Audio Engine(支持音频播放,游戏声音播放

Coding and Thinking 1万+

[cocos2d-x 学习] 如何编译自己的项目(从win32交叉编译到android)

前言 学习cocos2d-x,很多人都是从 win32 开发然后直接交叉编译到 android project,而中间过程怎么弄? 如何交叉编译 新建 win32 程序(可以参照这里),写好自己的代码,假设我们新建一个类PractiseCocos2d,代码如下: #ifndef __PRACTISE_COCOS2D_H__ #define __PRACTISE_COCOS2D_H_

Coding and Thinking 5493

[cocos2dx]在windows7下搭建Cocos2D-X win32开发环境

Cocos2D-X 是一个开源的2D 移动游戏框架,它的原型是Cocos2D。此框架的目的是简化游戏开发的流程,让开发者能够专注于开发游戏本身。 选择Cocos2D-X 的理由 Cocos2d-X 的核心点是围绕Cocos2D 跨平台。使用Cocos2D-X 创建的项目可以很容易地运行在iOS、Android、Windows Phone 等移动设备上。Cocos2D-X 还支持Windows、

超越 3723

Cocos2d-x Win32环境部署实战:从工具链配置到项目调试全解析

跨平台游戏开发中,本地开发与调试环境的搭建是提升效率的关键环节。Win32平台作为基于Windows系统的原生开发环境,凭借其与Visual Studio等成熟IDE的无缝集成,为游戏逻辑验证、性能剖析和快速迭代提供了高效的反馈循环。理解其构建原理,涉及从编译器工具链(如MSVC)、项目构建系统(CMake)到运行时库依赖的完整技术栈。掌握Win32部署不仅能优化个人开发工作流,更是构建自动化CI/CD流水线、确保团队协作与版本稳定的工程基础。对于Cocos2d-x这类以C++为核心的跨平台引擎,在Win3

congdi7904的博客 366

COCOS2D-x 启动之 main详解

环境配置,项目创建就直接跳过了 COCOS2D-x 版本为2.2.2,开发环境为WIN 7,VS2012,开发语言 C++。(注意区别与以前老版本的工程创建的区别) 1、创建工程,这里使用修改网上的一个 处理文件 进行创建 @CLS @ECHO OFF ECHO 欢迎使用Python创建Cocos2d-x工程

PersonFly_小逗 1467

cocos2dx完整运行过程_win32

main函数作为所有C语言程序的入口 cocos2dx也不例外 在win32文件夹下我们可以看到 main.cpp这个文件 其中代码如下: #include "main.h" #include "AppDelegate.h" #include "cocos2d.h" USING_NS_CC; int APIENTRY _tWinMain(HINSTANCE hIn

ChenXiang_IT的博客 1063

Cocos2d-lua的运行理解

关键词: cocos2d-lua项目启动流程 lua调用cocos2d引擎API 这里是个小测试 环境 引擎版本:Cocos2d-x 3.10 开发工具:Xcode8.1 简述 所谓的Cocos2d-lua,其实只是Cocos2d引擎添加了Lua绑定的版本。 从创建命令可以看出来 cocos new TestProj -d Desktop/

5822

cocos2d-x项目的开始

环境:win7+vs2010 版本:2.2.2 在win32平台的环境中,是从传统的main函数开始执行的。打开cocos2d-x引擎根目录\projects\你的项目\proj.win32文件夹中的main.cpp

kingabcde的专栏 1331

cocos2d-x 3.2 启动过程分析 - win32 与 android 平台(一)

我是从3.2版,也就是目前的最新版本开始接触cocos2dx的。不得不说cocos2dx确实是一款优秀的游戏引擎,使用它的这段时间里我也学到了很多知识。好了,话不多说,今天试着来分析一下cocos2dx-3.2的启动过程。

笔架凌霄 833
上一篇: win7系统下安装XP双系统
下一篇: TexturePacker——cocos2d-x游戏开发用来自动打包图片资源,生成plist和png文件(比如保卫萝卜)
jinble03
博客等级 码龄17年 38粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值