cocos2dx tolua传递参数分析: tolua_Cocos2d_CCNode_addChild00 == void CCNode::addChild(CCNode *child) tolua_Cocos2d_CCNode_addChild01 == void CCNode::addChild(CCNode *child, int zOrder) tolua_Cocos2d_CCNode_addChild02 == void CCNode 我们这里分析一下最后一个:/* method: addChild of class CCNode */#ifndef TOLUA_DISABLE_tolua_Cocos2d_CCNode_addChild02static tolua_isusertype(tolua_S,1,"CCNode",0,&tolua_err) || ! CCNode* self = (CCNode*) tolua_tousertype(tolua_S,1,0); -- middleBg -- 1 CCNode* child = ((CCNode
CCNode 继承关系 前言 在cocos2d中,CCNode是最基本的显示对象. 在3.0后的新版本中CCNode继承自CCResponder类,可以响应用户的交互事件(点击,触摸等),也正由于这个原因,在新版本中去除了CCLayer(在旧版本中响应用户的交互). CCNode 在cocos2d中的重要性类似于UIView之于UIKit. cocos2d 坐标系 图片来自网络 cocos2d中的坐标系统是以左下角为坐标原点(与macOS 相同) positionType 属性 CCNode中比较重要的一个属性是positionType,它是结构体类型,用来解释CCNode中position属性含义的! 如果我们没有设置CCNode对象的positionType属性,那么系统会采用CCPositionTypePoints为默认值来解析position的数值含义.
} = node; const { width, height } = props.style; const { x, y, source } = props.attrs; const ccNode = new cc.Node(); ccNode.name = id; ccNode.width = width; ccNode.height = height; ccNode.x = x; ccNode.y = y; parent ? parent.addChild(ccNode) : cc.find('Canvas').addChild(ccNode); if (source) { const dbPath ; sprite.spriteFrame = spriteFrame; }); } children.forEach((child) => addNodeToScene(ccNode
bulletRemove)), NULL)); //子弹飞完记得要销毁 销毁子弹的方法看project而定,这是我自己的project写法: void BaseLayer::bulletRemove(CCNode * spend) { CCSprite* sprite = (CCSprite*)spend;//把传过来的CCNode转换成子弹 //从数组里把子弹销毁掉 _bulletArray->removeObject
(NULL) , m_fMinScale(0.0f) , m_fMaxScale(0.0f) { } CCScrollView* CCScrollView::create(CCSize size, CCNode CC_SAFE_DELETE(pRet); } return pRet; } bool CCScrollView::initWithViewSize(CCSize size, CCNode kCCScrollViewDirectionBoth //双向滚动 } CCScrollViewDirection; 初始化就先讲到这,在看看属性设置上一些东西 void CCScrollView::setContainer(CCNode * make sure all children go to the container */void CCScrollView::addChild(CCNode * child, int zOrder
Facility method (it’s expected to have it soon in COCOS2DX) void incrementOffset(CCPoint offset, CCNode CCParallaxNodeExtras(); } void CCParallaxNodeExtras::incrementOffset(CCPoint offset,CCNode num; i++) { CCPointObject *point = (CCPointObject *)m_pParallaxArray->arr[i]; CCNode float randomValueBetween(float low, float high); //Set visibility of Node void setInvisible(CCNode + (time.tv_usec/1000); return (float) millisecs; } void HelloWorld::setInvisible(CCNode
我们的很多UI模块代码并没有特别去重置CCNode,而是依赖析构作为资源回收和重置。 这导致了很多地方如果回收作为缓存的话,这次改动的地方,就变成下次读入以后的默认值。 为了解决这个问题,我们不得不改动了cocos的源代码,对CCNode里一些公用的属性,比如children、position、anchor等属性做了快照。然后下次pull完以后恢复到快照。 而cocostudio创建的一些子类的ui对象比如ListView、ImageView等等里那些不属于CCNode的属性,就要求使用前手动reset,因为如果每个子类都去加缓存的话对cocos的改动有点大
_onSiblingIndexChanged(); } } }, 源码 CCNode.js#L1549: https://github.com/cocos-creator/engine/blob /2.4.5/cocos2d/core/CCNode.js#L1549 ️ 做了什么? __fastOff(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this); } }, 源码 CCNode.js#L3680: https ://github.com/cocos-creator/engine/blob/2.4.5/cocos2d/core/CCNode.js#L3680 上半部分 (Part 1) 随着一步步深入,我们终于来到了关键部分
p=86 Action是CCNode对象的一种顺序.这些动作经常改变对象的一些属性,比如位置,旋转,缩放等 … 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。
什么是纹理(Texture)纹理,我们可以认为是cocos2d中需要在屏幕上显示的所有节点(CCNode)的样子,可以把它理解为外貌,有时候也常常被称为皮肤,也就是显示在我们眼前的形状,颜色的统称. batchNode addChild:s3]; [self addChild:batchNode]; cocos2d- 3.1+之后,CCSpriteBatchNode已被标记为废弃,这是因为CCNode
_onSiblingIndexChanged(); } } }, [源码] CCNode.js#L1549: https://github.com/cocos-creator/engine /blob/2.4.5/cocos2d/core/CCNode.js#L1549 ️ 做了什么? __fastOff(cc.Director.EVENT_AFTER_UPDATE, this.sortAllChildren, this); } }, [源码] CCNode.js#L3680: https://github.com/cocos-creator/engine/blob/2.4.5/cocos2d/core/CCNode.js#L3680 >上半部分 (Part 1) 随着一步步深入
)->getTouchDispatcher()->addTargetedDelegate(this, 0, true); 8.注冊触摸事件后不能正确推断触摸点的位置 错误原因:未将触摸点坐标转化为CCNode
CCScene子类的draw和visit调用,如果你之前使用过draw或者visit方法进行CCScene的绘制或添加颜色,官方都推荐使用CCDrawNode来实现(因为draw方法比较耗费性能,它会在CCNode
pLevel = Level::levelWithNum(1); dealRandomAnagram(); 2)创建单词的View 在project中新增一个继承于CCNode的类,名字叫做TileView TargetView.h中加入以下代码: class TargetView : public CCNode { public: TargetView(void); ~TargetView(void)
此时很容易想到应该有什么地方事件被拦截了,于是去ccnode中断点,查看具体是哪个拦截了。 ? 最后再2064行断住,查看this的值 ? 确实印证了上面推测事件拦截层永久显示了。
,但大抵采用的也都是3D渲染的实现方式,远不是什么操作屏幕像素了,但是这些实现细节对于一般的引擎使用者而言其实是不必关心的,因为我们开发者平日所使用的功能基本都是围绕2D的:看看Cocos2d-x中的CCNode
2.1、移除"CC"前缀以及free functions (1)移除C++类的"CC"前缀 | v2.1 | v3.0 || CCSprite | Sprite || CCNode
countY), touchRadius(radius), updateInterval(interval) { } }; class PhysicsRippleSprite : public CCNode