博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cocostudio骨骼动画 -- 原点
阅读量:4215 次
发布时间:2019-05-26

本文共 1983 字,大约阅读时间需要 6 分钟。

1、如果把一个元素如CCSprite加入到CCArmature中,那么必须先要知道CCArmature的原点位置,

经过测试发现:原点大致在(下图所示),x居中,y位于底部。

2、

CCArmature本身继承与CCNode,所以可以设置

锚点和位置,但是CCArmature的大小,也可以说是上下左右的边界如何计算还不是很明白。

看下面的代码:

void CCArmature::updateOffsetPoint(){    // Set contentsize and Calculate anchor point.    CCRect rect = boundingBox(); //计算大小    setContentSize(rect.size);    m_pOffsetPoint = ccp(-rect.origin.x,  -rect.origin.y);    if (rect.size.width != 0 && rect.size.height != 0)    {        setAnchorPoint(ccp(m_pOffsetPoint.x / rect.size.width, m_pOffsetPoint.y / rect.size.height));    }}

-->>

CCRect CCSkeleton::boundingBox () {	float minX = FLT_MAX, minY = FLT_MAX, maxX = FLT_MIN, maxY = FLT_MIN;	float scaleX = getScaleX();	float scaleY = getScaleY();	float vertices[8];	for (int i = 0; i < skeleton->slotCount; ++i) {		Slot* slot = skeleton->slots[i];		if (!slot->attachment || slot->attachment->type != ATTACHMENT_REGION) continue;		RegionAttachment* attachment = (RegionAttachment*)slot->attachment;		RegionAttachment_computeVertices(attachment, slot->skeleton->x, slot->skeleton->y, slot->bone, vertices);		minX = min(minX, vertices[VERTEX_X1] * scaleX);		minY = min(minY, vertices[VERTEX_Y1] * scaleY);		maxX = max(maxX, vertices[VERTEX_X1] * scaleX);		maxY = max(maxY, vertices[VERTEX_Y1] * scaleY);		minX = min(minX, vertices[VERTEX_X4] * scaleX);		minY = min(minY, vertices[VERTEX_Y4] * scaleY);		maxX = max(maxX, vertices[VERTEX_X4] * scaleX);		maxY = max(maxY, vertices[VERTEX_Y4] * scaleY);		minX = min(minX, vertices[VERTEX_X2] * scaleX);		minY = min(minY, vertices[VERTEX_Y2] * scaleY);		maxX = max(maxX, vertices[VERTEX_X2] * scaleX);		maxY = max(maxY, vertices[VERTEX_Y2] * scaleY);		minX = min(minX, vertices[VERTEX_X3] * scaleX);		minY = min(minY, vertices[VERTEX_Y3] * scaleY);		maxX = max(maxX, vertices[VERTEX_X3] * scaleX);		maxY = max(maxY, vertices[VERTEX_Y3] * scaleY);	}	CCPoint position = getPosition();	return CCRectMake(position.x + minX, position.y + minY, maxX - minX, maxY - minY);}

你可能感兴趣的文章
Web前端学习笔记——模块化开发
查看>>
Web前端学习笔记——VueJS基础
查看>>
Web前端学习笔记——VueJS之过滤器、生命周期、请求、动画
查看>>
Web前端学习笔记——VueJS之组件、路由
查看>>
Web前端学习笔记——HTML基础
查看>>
Web前端学习笔记——CSS基础、选择器
查看>>
Web前端学习笔记——Webpack
查看>>
Web前端学习笔记——CSS样式、外观、复合选择器
查看>>
Web前端学习笔记——CSS显示模式、特性、背景
查看>>
Web前端学习笔记——CSS盒子模型、浮动
查看>>
Web前端学习笔记——CSS版心和布局流程、清除浮动
查看>>
Web前端学习笔记——CSS之Photoshop切图
查看>>
Web前端学习笔记——CSS定位、高级技巧、文字溢出、精灵图、Web字体
查看>>
Web前端学习笔记——CSS京东案例、BFC
查看>>
Web前端学习笔记——HTML5新标签与特性
查看>>
Web前端学习笔记——CSS3 新增选择器
查看>>
Web前端学习笔记——Webpack结合VueJS使用、Mint-UI、MUI
查看>>
Web前端学习笔记——VueJS-APP案例
查看>>
Web前端学习笔记——JavaScript之对象
查看>>
Web前端学习笔记——JavaScript之数组、函数、作用域
查看>>