【三】CocosCreator-CCDirector.js源码分析

cocos2dx3.2学习笔记之Director(导演类) 在Cocos2d-x中,把统筹游戏大局的类抽象为导演类(Director),Director是整个cocos2d-x引擎的核心,是整个游戏的导航仪。游戏中的一些常用操作就是由Director来控制的,比如OpenGL ES的初始化,场景的转换,游戏暂停继续的控制,世界坐标和GL坐标之间的切换,对节点的控制等,还有一些游戏数据的保存调用,屏幕尺寸的获取等都要由Director类来管理控制的。 阅读详情

PS:只是看源码学习过程中把认为重要的内容以笔记的形式记录下来。

【1】cc.director:cc.Director的一个单例对象。
        如果需要用到导演类的内容,统一通过cc.director这个单例对象来调用。

【2】init():对导演类的成员变量进行初始化操作。
        在构造函数对此init函数注册了消息监听,当接收到来自CCGame的EVENT_ENGINE_INITED事件后才执行导演类的init函数。
        在init里面会new大量的manager,动作管理器、事件管理器、动画管理器、物理管理器、3D物理管理器等,并且设置他们的scheduleUpdate,所以这些manager的update函数就是从这里设置的了。这些new出来的管理器通过成员变量保存下来了,所以如果通过导演类这个单例去调用这些管理器,这些管理器也成为单例使用了。

【3】calculateDeltaTime():用于计算每次update的时间差。
        每次游戏的主循环都会调用这个函数,用于计算这次update与上次update的时间差,保存到this._deltaTime当中,在主循环内调用update时作为参数传递过去。 我们平时常用的update(dt)的dt时间差就是这样产生的了。
        

【4】convertToGL():把屏幕坐标转成webGL坐标

【5】convertToUI():把webGL坐标转成屏幕对应坐标

【6】end():关闭导演类。
        此方法只是设置了一个布尔值,等下一次主循环时才真正调用purgeDirector函数来关闭导演类,purgeDirector内部会清空_scheduler和_compScheduler、停止事件管理器、烧毁当前场景、清理renderer,清理内建资源、暂停game的主循环、重置资源管理器。

【7】getWinSize()和getWinSizeInPixels():获取视图大小
        两个方法内部实则都是通过cc.winSize获取大小……如果需要获取分辨率应该使用cc.view.getFrameSize()

【8】_paused:暂停游戏逻辑
        与game的_paused不同,导演类的_paused只会暂停游戏逻辑,不会暂停渲染、音频、事件等

【9】purgeCachedData():调用cc.assetManager.releaseAll()释放资源管理器内的所有资源。

【10】reset():重置导演类。
        先调用purgeDirector()清除导演类的相关内容(在【6】里面说过),然后再重新设置各大管理器的scheduleUpdate,再调用game的resume()恢复主循环。

【11】runSceneImmediate():立即切换场景。具体流程如下:
1.scene._load():初始化scene
2.处理常驻节点:从game中拿出常驻节点数组,然后遍历数组,把所有的常驻节点的parent指向新的scene,如果新的scene里面已经包含了与常驻节点相同uuid的对象,则删除scene里面的node再把常驻节点的node加进scene里面来。
3.cc.assetManager._releaseManager._autoRelease():释放assetManager里面oldScene的资源。
4.oldScene.destroy():销毁oldScene。
5.onBeforeLoadScene():处理切换scene之前需要处理的内容。
6.scene._activate():激活节点。
7.cc.game.resume():恢复主循环
8.onLaunched(null, scene); 加载完成场景后的时间回调
PS:切换scene前和后都有对应的消息推送,我们只需监听对应的事件即可收到对应消息并处理我们想要处理的逻辑。

【12】runScene():运行指定的场景。
        大致就是在当前帧绘制结束后调用【11】runSceneImmediate()来进行场景切换。

【13】loadScene():通过场景的名字来加载场景。
        在assetManager里面通过场景名字来查找对应的bundle,如果有对应的bundle,就通过bundle.loadScene来加载场景,顺利获得scene后再调用【11】runSceneImmediate()来进行场景切换。

【14】preloadScene():预加载场景
        通过assetManger来查找bundle,找到后调用bundle.preloadScene来预加载场景资源。

【15】setDepthTest():是否开启深度测试。
        开启深度测试后,会把深度信息存贮在一个深度缓冲中,在进行渲染时,会从深度缓冲获取Z值进行比较,把最靠近屏幕的片段保存下来,其他片段则会被丢弃(简单来讲就是显示最前面的,后面被前面挡住那些反正看不到,就把他丢弃掉得了)。

扩展延伸-深度冲突:当两个平面或者三角形非常非常接近的时候,深度缓冲精度不足导致判断不了两个三角形哪个在前面时,两个三角形就会不断变换前后顺序导致最后出来奇怪的花纹。解决方案:1.别把两个物体摆太靠近……2.牺牲性能用更高精度的缓冲区…… 个人喜欢方案1,当物体太靠近时,我们人工设置一点偏移值让其避免深度冲突。

【16】_scene:当前正在运行的场景。
getScene()和getRuningScene()在源码里都是返回这个值。

【17】_deltaTime:上一帧和当前帧的时间差。

【18】_startTime:游戏开始的时间(导演类init的时间)

【19】_totalFrames:游戏启动以来运行的总帧数(在每一次主循环+1)

【20】_scheduler:定时器对象,在这里面设置了各大管理器的update。

【21】startAnimation()和stopAnimation():其实调用的是game的pause,暂停主循环。

【22】mainLoop:主循环。具体流程如下(只讨论正式模式下):
1.执行上面说到的【4】,检测布尔值,如果为true则清理导演类
2.this.calculateDeltaTime(now);:计算dt
3.this._compScheduler.startPhase();:执行start函数(component-scheduler.js内部保证start只执行一次)
4.this._compScheduler.updatePhase(this._deltaTime);:执行update函数。
5.this._scheduler.update(this._deltaTime);执行各大管理器的update函数。
6.this._compScheduler.lateUpdatePhase(this._deltaTime);:执行lateUpdate函数。
PS:3,4,6三个步骤也可以看出这3个生命周期函数的执行顺序。
7.Obj._deferredDestroy();:销毁被移除的实体。
8.renderer.render(this._scene, this._deltaTime);:渲染场景
9.eventManager.frameUpdateListeners();:更新事件处理器,检测是否有新的监听需要增加或者有旧的监听需要移除。
10.this._totalFrames++;:总帧数+1
以上过程中间涉及到某些步骤的消息分发,此处跳过不提了……需要用到时去看看有什么相关消息可以监听即可。

cocos creator入门教程(十八)—— creator_Director对象与资源加载策略 cc.Director与 资源加载策略 cc.Director对象 1:游戏里面控制管理整个游戏全局对象,包括了场景切换等,为cc.Director对象; 2:导演对象全局只有一个cc.director,大写的为类, 小写的cc.director为全局的导演对象; 3: cc.director来获取导演对象实例; 4: 游戏中各种管理对象都可以通过cc.director获取,比如物理引擎... 阅读详情

相关推荐

7、Cocos2d游戏开发:Director、场景与图层详解

本文详细介绍了Cocos2d游戏开发中的核心概念,包括Director、场景和图层的使用方法。内容涵盖Director类型的选择、场景的创建与切换、内存管理技巧、过渡效果的使用建议以及多图层的优势。通过合理运用这些技术,开发者可以提升游戏性能和用户体验,同时避免常见的内存和兼容性问题。

gg901的博客 71

Cocos creator 微信小游戏 加载远程资源启动页

直接上流程 1. 在项目的根路径下添加文件结构 2. loading-scene.js文件内容 var loadingBg = "https://com-eonsun-public.oss-cn-shanghai.aliyuncs.com/product/HappinessLength/LoadingPicture/bg.png"; var scene = new cc....

nihaoqlw的博客 5430

QuestaSim使用Xilinx库的设置

安装QuestaSim

miracle_eicont的专栏 3409

cocos runScene和loadScene的区别

cocos creator 提供runScene和loadScene的使用和区别

做个手艺人的博客 2306

基于UWB技术的自动跟随避障系统设计研究

基于UWB技术的自动跟随避障系统设计研究 摘要:目前我国针对自动跟随避障系统方面的研究较少,同时国内自动跟随避障系统仍然处在未成熟阶段,多数仍停留在应用蓝牙控制或摄像头捕捉这类跟随方式,但这类方式在实际应用过程中往往会出现易受干扰,精度差,易受环境干扰等问题,这不仅会降低自动跟随避障系统的性能,同时也会对用户造成诸多困扰。因此,就需要结合目前较为有效的UWB技术,对自动跟随避障系统进行设计。基于此,本文首先将会针对UWB技术展开概述,而后对基于UWB技术的自动跟随避障系统组成展开分析,进而对基于UWB技术的

qq_43543515的博客 7992

ScanNet数据集下载全攻略:从申请到解析的保姆级教程(含常见问题解决)

本文提供了ScanNet数据集从申请授权到下载、解析的完整实战指南。针对这个大规模室内RGB-D数据集,详细介绍了官方申请流程、优化下载策略、数据验证方法,并重点解决了深度图解析等常见问题,帮助三维视觉研究者高效获取和使用这一宝贵资源。

5f4d3s2a1q的博客 621

Cocos Creator 资源加载流程剖析【六】——场景切换流程

这里讨论场景切换的完整流程,从我们调用了loadScene开始切换场景,到场景切换完成背后发生的事情。整个流程可以分为场景加载和场景切换两部分,另外还简单讨论了场景的预加载。 加载场景的流程 loadScene主要做了3件事,通过_getSceneUuid获取要加载场景的信息,对于原生平台的非启动场景执行了cc.LoaderLayer.preload(但查询了所有的代码,并没有发...

alteken5150的博客 1751

【多媒体交互】Unity+普通摄像头实现UI事件分析

利用摄像头捕捉用户的手势或动作,结合坐标映射与事件系统触发UI交互

qq_38350004的博客 1325

Cocos2dx 游戏的主导者导演类-Director

在Cocos2dx的基本组成篇里,我简单地介绍了导演的基本概念和含义作用。但他实际要做些什么呢? 在本篇文章里将介绍一下承担着导演作用的导演类Director。 导演类Director 继承自 ref类 才用单例设计模式(即这个类智能拥有一个实例)。 主要功能如下 1、负责场景之间的切换。 2、对视图的访问和OpenGLES接口的封装。 3、游戏的基本控制如暂停游戏、终止游戏等。 4

GladiolusLai的博客 1526

YOLOv12改进策略【独家融合改进】| MobileNetV4+BiFPN,轻松实现降参涨点,适用专栏内所有的骨干替换

可扩展的高效物体检测BiFPN(加权双向特征金字塔网络)

Limiiiing的博客 980

3、图像中文字信息提取技术全解析

本文全面解析了图像中文字信息提取(Text Information Extraction,TIE)的技术原理、挑战及应用领域。详细介绍了图像中三种主要文字形式:场景文字、字幕文字和文档文字的特点及提取难点。系统阐述了TIE技术的主要流程步骤,包括文字检测、定位、提取与增强、识别等关键阶段,并对主流技术方法进行了分类比较,包括基于连通组件、边缘、纹理等方法的优缺点分析。文章还介绍了多种其他提取技术,如二值化方法、混合方法、基于梯度的方法等,并提出了一种基于立体帧的新型场景文字提取方法,通过实验验证了该方法在召

ll5678的博客 119

【五】CocosCreator-CCScheduler.js源码分析

【五】CocosCreator-CCScheduler.js源码分析

zien的博客 1100

华为OD机试真题 新系统-字符串格式调整(C/C++/Py/Java/Js/Go)

华为OD机试 新系统真题【字符串格式调整】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串格式调整】多语言题解

qq_45776114的博客 1142

Cocos2d-x之Director

| 版权声明:本文为博主原创文章,未经博主允许不得转载。 Director类简介 在Cocos2d-x-3.x引擎中,采用节点树形结构来管理游戏对象,一个游戏可以划分为不同的场景,一个场景又可以分为不同的层,一个层又可以拥有任意个可见的游戏节点(即对象,游戏中基本上所有的类都派生于节点类Node)。可以执行Action来修改游戏节点的属性,使其移动、旋转、放大、缩小等等...

weixin_30572613的博客 224

黑猫带你学eMMC协议第26篇:eMMC的硬件复位操作(H/W reset)

本文依据eMMC JEDEC5.1及个人工作经验整理而成,如有错误请留言。 文章为个人辛苦整理,付费内容,禁止私自转载。 文章所在专栏:《黑猫带你学:eMMC协议详解》 1 概述 什么是硬件复位? 硬件复位就是使用一个特殊硬件信号(这个信号在RST_n这根实实在在的物理线路上传输)将emmc复位到pre-idle state,而不需要使用cmd0或者power cycle讲emmc复位到pre-idle state。 如何进行硬件复位? 1、设置RST_n_FUNCTION [162]为1,使emm.

黑猫奥利奥的博客 6319

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

cocos creator学习笔记 十分详细

property(“数据类型”):写在属性定义的上一行,属性就会出现在属性面板,使用基本数据类型时可以省略数据类型脚本将属性显示在属性面板上,可以很方便的调节属性而不需要改变代码,使得代码可以满足不同的需求,很好的实现复用。

thdlrt的博客 6407

lwip-2.0.3

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

[cocos2d-x] --- CCDirector类详解

  Email : hahayacoder@gmail.com   1 CCDirecor(导演)在cocos2d-x引擎中是一个很重要的类,CCDirector使用单例模式实现,所以整个游戏中只有一个导演。CCDirector在整个游戏中扮演很重要的角色:(1)在开始游戏和结束游戏时负责游戏的初始化和销毁工作。(2)管理游戏的关卡,即场景。负责各个场景之间的切换。(3)设置、获取系统信息...

系统运维 242

假人有限元模型

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

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

cocos creator学习17——cc.Director&资源加载

cc.Director对象 cc.director各模块管理对象实例,全局只存在一个。比如物理引擎管理,Action管理, 碰撞检测管理等都可以从cc.director获得。 cc.director常用API 方法 功能说明 getWinSize 获取视图的大小,以点为单位,简单来说就是逻辑大小 getWinSizeInPixels 获取视图大小,以像...

章鱼仔的博客 6748

cocos2dx[3.2](8) ——核心类Director/Scene/Layer/Sprite

【核心类】 导演Director、场景Scene、布景层Layer、精灵Sprite的概念请移步:cocos2dx基础篇(3)——第一个程序HelloWorld导演控制场景,场景控制图层,图层控制精灵,精灵控制动作。 相互之间的关系框架如下图所示:由此看出:(1)整个游戏一般只有一个导演。(2)一个游戏可以由多个场...

weixin_34075551的博客 328

coocs2d之导演

上一节课我们通过 HelloWorld 示例快速认识了 cocos2d 的基本内容,这节课我们将认识cocos2d 中的一个重要模块 —— director(导演)。cocos2d 中的导演是十分重要的,同现实的导演一样在游戏中起着导演的作用。

m0_73552311的博客 243

24. cc.Director与资源加载策略

1. cc.Director对象 游戏里面控制管理整个游戏全局对象,包括了场景切换等,为cc.Director对象; 导演对象全局只有一个cc.director,大写的为类, 小写的cc.director为全局的导演对象; cc.director来获取导演对象实例; 游戏中各种管理对象都可以通过cc.director获取,比如物理引擎管理,Action管理, 碰撞检测管理等; 2. 常用...

qaz540411484的专栏 1617

cocos2dx学习笔记之Director(导演类)

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

weixin_33908217的博客 520

Cocos2D-X学习4:几个重要的类:Node、Director、Scene、Layer

Cocos2D-X引擎中与渲染有关的大多数类都来自于一个基类,它被称作根源种子Node。场景Scene、层次Layer、精灵Sprite以及精灵集合SpriteBatchNode的父类都是Node。根源种子的父类是Ref,是整个引擎的根源。 下表为Node类的一些常用属性,这些属性都和画面的绘制有关。 属性 描述 默认值 position 位置 0,0

慢慢积累 2988

CCDirector类详解

1 CCDirecor(导演)在cocos2d-x引擎中是一个很重要的类,CCDirector使用单例模式实现,所以整个游戏中只有一个导演。CCDirector在整个游戏中扮演很重要的角色:(1)在开始游戏和结束游戏时负责游戏的初始化和销毁工作。(2)管理游戏的关卡,即场景。负责各个场景之间的切换。(3)设置、获取系统信息,比如调整OpenGL相关的设置,获取屏幕的大小等   2 co

偶尔e网事 3010

CCDirector

首先接触到的是CCDirector类,顾名思义是2d动画的导演类,负责 引用 CCDirector 负责scenes之间的前进或后退。 CCDirector是singleton模式的共享的对象。它知道当前哪个scene是激活。 CCDirector以stack的方式处理scenes的调用(当另一个scene进入的时候,暂停当前的scene,完成之后再返回原来的 scene),CCDirect

tonyXf121的专栏 2390

cocos creator 碰撞检测

1.普通的碰撞检测 a.给精灵添加boxCollision b.代码里面开启碰撞管理 cc.director.getCollisionManager().enabled = true;//开启碰撞功能cc.director.getCollisionManager().enabledDebugDraw = true;//开启调试功能,碰撞体上面会有碰撞范围 c.碰撞回调函数 /** * 当碰撞产生的时候调用 * @param {Collider} other 产生碰撞的另一个碰撞.

wangshang1320的博客 7640
上一篇: 【二】CocosCreator-CCGame.js源码分析
下一篇: 【四】CocosCreator-修改引擎源码
0zien0
博客等级 码龄15年 159粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值