cocos2dx获取缩放后大小(cocos2dx 怎么获得spine动画大小)

:暂无数据 2026-07-11 04:30:09 4

cocos2dx获取缩放后大小(cocos2dx 怎么获得spine动画大小)

“cocos2dx获取缩放后大小”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看cocos2dx获取缩放后大小(cocos2dx 怎么获得spine动画大小)!

本文目录

cocos2dx 怎么获得spine动画大小

1、利用导数和函数图像解题。
2、当x=0时,x的导数为1,sinx的倒数也是1。
3、当x》0时,sinx的导数0时sinx《x,xx。
4、或者,1.8版本以上的atlas做了修改,在第二行添加了size,所以只要删除size这一行即可。
5、动作制作的时候如果层级有发生改变或者切换了skin,slot,请K帧一下,修改的部分:draworder和bone,一般首尾都K一下就行了。
6、别忘记newskeletonanimation在create时候最后一个参数scale。

如何使用cocos2dx-jsbinding 来处理分辨率适配

辨率适配的核心思想是缩放,也就是layer.scale函数,但是一定要是等比缩放,如果用layer.scaleX或者layer.scaleY函数,虽然可以把游戏画面非常简单的搞成分辨率适配成没有黑边,但是整个游戏画面已经被拉伸或者压挤,不能达到我们需要的效果。
游戏中一般有3大类层。
1.大于屏幕的层,可实现拖动、缩放或者可以随着角色移动移动场景画面的,一般这种场景为主城、副本等等。
2.居中的层,一般是同时基于水平方向和竖直方向居中的,也有基于一个方向居中的。这种一般为ui弹层。
3.靠边的层,一般是ui,这些ui分别是紧贴屏幕边缘。
以上几种类型是基本的类型,当然某一个场景可能是上面几种层类型的组合。比如一个传统九宫格的战报场景,人物的排列是基于居中的,ui分布是靠边的,实现的时候我们将人物和ui分别绘制再2个layer中,每个layer基于相应的类型进行缩放,就可以达到想要的效果。
下面分别来说明下,三种类型的layer如何做缩放。
第一种:这种其实最简单,因为这种层的底图超过屏幕(一般都超出很多,因为要做移动和多点缩放,或者要随着角色移动至少一屏),所以只要做一个通用缩放就可以,何谓通用缩放,还是看代码
// 获取屏幕尺寸
var size = cc.Director.getInstance().getWinSize();
this.designResolution = cc.size(960,640);
// 获取高宽系数
var widthRatio = size.width/this.designResolution.width,heightRatio = size.height/this.designResolution.height;
if (widthRatio !=1 || heightRatio!=1){
// 按照比例小的系数去进行缩放
if (widthRatio《heightRatio){
this._scaleRatio = widthRatio;
}else{
this._scaleRatio = heightRatio;
}
}else{
this._scaleRatio = 1;
}
this.setScale(this._scaleRatio);
复制代码
第二种:在上面通用缩放的基础上设定层的坐标,使之可以上下左右居中
var size = cc.Director.getInstance().getWinSize();
this.setPosition(cc.p((size.width-this.designResolution.width*this._scaleRatio)/2,(size.height-this.designResolution.height*this._scaleRatio)/2));
复制代码
第三种:这种layer是紧靠屏幕边缘的,所以我们要分别设定他的锚点,我们将整个layer分为9个点,刚好呈现一个“米”字型,其中每个点都需要new一个单独layer来设定它的锚点。
this._uiLayerMap = this._uiLayerMap || {};
if (this._uiLayerMap){
return this._uiLayerMap;
}
var layer = cc.Layer.create();
layer.setPosition(cc.p(0,0));
this._uiLayerMap = layer;
// 根据directionType设定锚点位置
switch (directionType){
case 1:
layer.setAnchorPoint(cc.p(0,1));
break;
case 2:
layer.setAnchorPoint(cc.p(0.5,1));
break;
case 3:
layer.setAnchorPoint(cc.p(1,1));
break;
case 4:
layer.setAnchorPoint(cc.p(1,0.5));
break;
case 5:
layer.setAnchorPoint(cc.p(1,0));
break;
case 6:
layer.setAnchorPoint(cc.p(0.5,0));
break;
case 7:
layer.setAnchorPoint(cc.p(0,0));
break;
case 8:
layer.setAnchorPoint(cc.p(0,0.5));
break;
}
this.addChild(layer);
复制代码
当然,这些层生成完以后还需要做一个通用缩放。使用的时候要注意2点。
1.设定坐标的时候要按照size.width和size.height来计算大小,例如我设定屏幕右下角ui的坐标为
sprite1.setPositon(size.width,50);
sprite2.setPositon(size.width-80,50);
sprite3.setPositon(size.width-160,50);
复制代码
2.针对每个角的layer需要选择上面设定相应锚点layer。

怎样制作基于Cocos2d-x的SLG游戏

打开工程后,运行程序,你会发现它不是一个空的项目,在Classes和Resource文件夹下Cocos2d-x已经给出了一些实质性的东西,当然这些不是一定都有用的,它们存在的目的是为了给我们展示一个典型的Cocos2d-x的例子。
除了AppDelegate.h 和 AppDelegate.cpp文件,这两个文件夹下其他的东西都是可被删除的(不过在删除之前,可以先看一下HelloWorld类,了解下它的类结构、类方法,以便对Cocos2d-x进行初步的学习,也方便初学者依葫芦画瓢再写一个类似的场景)。AppDelegate类是创建项目时自动生成的一个类,它控制着游戏的生命周期,是Cocos2d-x游戏的通用入口文件,类似于一般 Windows 工程中main函数所在的文件。
打开AppDelegate.cpp文件,在游戏加载期的最后一个applicationDidFinishLaunching()函数中我们可以设置第一个启动的游戏场景,如下:
auto scene = GameScene::createScene();
director-》runWithScene(scene);
GameScene是我们新建的一个游戏场景,下面会讲解。
分辨率适配
在我的游戏中,首先第一件事还是做分辨率适配,这是个恒古不变的定律。现如今市场中各种屏幕尺寸和分辨率的移动设备层出不穷,为了更好地适应这些设备,游戏的分辨率适配是十分有必要的。
在农场游戏中,很最要的一点就是实现大地图背景的拖动、放大缩小等操作,所以可想而知,我们的地图不是全部都显示在屏幕内的,也就是说,我们不能像之前的方式那样把整个显示内容做适配,我们应该留有一定的边距供玩家拖动。如下图所示:
p2
同样是在applicationDidFinishLaunching函数中,我们添加如下一段代码对游戏做分辨率适配,以便它能更好的适应不同的运行环境。
glview-》setDesignResolutionSize(480.0f, 320.0f, ResolutionPolicy::FIXED_HEIGHT);
std::vector searchPath;
searchPath.push_back("H_1920");
FileUtils::getInstance()-》setSearchPaths(searchPath);
director-》setContentScaleFactor(1440.0f / 320.0f);
分辨率适配的原理,建议大家阅读一下:Cocos2d-x 多分辨率适配完全解析这篇文章,虽然它不是针对最新版Cocos2dx引擎,但它还是能很清楚的告诉你分辨率适配的原理和方法。
还有要说明的一点是,我们的游戏地图的高为1920,分辨率适配时则只设为了1440,意思就是说,我们本该全在屏幕内的内容留出了4分之一的高度在屏幕外。
游戏地图
模拟经营游戏中,游戏地图多为拼接而成,这里我们用瓦片地图器(Tiled Map Editor)来制作游戏的地图,它可以把后的地图文件保存为TMX格式的文件,能被Cocos2d-x很好的支持。瓦片地图(Tile Map)不但生成简单,而且可以灵活的用于引擎中。关于瓦片地图的介绍可参考瓦片地图一文。
接下来我们开始创建地图。
运行TiledMap器,新建一个地图文件。填写如下对话框:
p3
在地图方向选项内,可以选择正常、45度(传说中的2.5D)和45度交错,这里我们选择45度。接下来需要设置地图大小,这里的数值是指有多少格tile元件,并不是像素,这里我们选择30×30的地图。
最后是确定tile元件的大小,根据美工提供的地面元件大小设置,这个教程里,我们使用128×64的大小。
在地图大小一栏中,你可以看到最终的地图大小为3840 * 1920。
点击确认之后,你可能已经发现了,这个游戏地图它是菱形的,如下图所示。
p4
这里你可能会想,为什么要菱形的啦,选择45度交错建一个接近矩形的不行吗?呵呵,其实这样也是可以的,只不过啦,Cocos2d-x引擎中默认是不支持45度交错的,如果需要在引擎中加载这种交错的地图必须自己修改引擎代码(看到这,是不是整个人都不好了),而且在修改过后还不能正确的得到地图的大小,需要自己编写计算大小的公式代码。鉴于这一点,我在想,难道《全名农场》、《请叫我海盗》等游戏地图的四个角都不能被点击操作都是因为这个原因吗? 哈哈,就当是我想多了吧。其实菱形就菱形吧,其他的游戏也都这样,可以在菱形地图的下层贴一层背景来掩盖这一现象。
接下来,我们还是回到正题开始拼接地图吧。选择地图-》新图块,然后填写如下所示的对话框。
p5
选择浏览按钮,将准备好的图块文件载入器。接着设置图块的宽度和高度(默认情况下是一个tile元件的大小,但),根据图块文件中图块的大小来设置。边距、间距什么的,可不做修改,0就好。
最后选中相应的图块,拖动到渲染区拼一个理想的地图。
p6
暂时我们就只简单的拼一个地图就可以了,后面再根据游戏需要,设置一些必要的对象和属性。
加载地图资源
新建一个GameScene场景,加载游戏地图。不过在此之前,请把好的tmx和图块文件拷贝到Resource文件夹下。GameScene的结构和HelloWorld差不多,照着HelloWorld类依葫芦画瓢就可以建一个。你可以先看看它是如何实现的,再实现自己的类。这里就不多说了。
在Cocos2d-x中使用TMX,有以下流程供你参考:
首先用地图器你的地图,导出成TMX 格式。
将导出的TMX 文件和相关图片放在工程的Resoure文件夹下。
使用Cocos2d-x中TMXTileMap 类的create方法创建地图对象,TMX 文件的解析是引擎内部完成的,所以我们不需要担心。TMXTileMap 是Node 的子类,因此只要添加到场景中即可。
通过TMXTileMap,可以获得其他相关对象,比如单个瓦片(属Sprite类),比如对象组(ObjectGroup类),比如层(TMXLayer类)等;你可以通过TMXLayer类修改,删除或者添加某个网格位置的瓦片,这样可以动态的修改地图了,你还可以进行其他的操作,相关的API 我们后面使用到了再做讲解。
在GameScene类的init函数中添加如下的代码创建游戏地图:
mapLayer = LayerColor::create(Color4B(78,127,41,255));
this-》addChild(mapLayer,-1);

auto map = TMXTiledMap::create("mymap4.tmx");
mapLayer-》setContentSize(map-》getContentSize());
mapLayer-》addChild(map, 10);

auto treeSprite = Sprite::create("1.png");
treeSprite-》setAnchorPoint(Vec2(0, 0));
treeSprite-》setPosition(Vec2(0, 0));
treeSprite-》setScale(2);
mapLayer-》addChild(treeSprite, 11);
代码中新建了一个带颜色的背景层,背景层的尺寸等于加载的TMX地图大小。接着把地图和如下的一个遮盖层(其实就是为了防止菱形的地图看起来那么突兀而添加的一层)依次添加到层上。
p7
运行程序,你将看到如下图所示的游戏场景:
p8
本教程的美术资源不是很完善,大家就将就看吧,见谅!
下章我们将实现游戏背景的单指拖动,双指缩放的功能,以及利用Cocos Studio来制作一个支持多分辨率的UI系统。

cocos2d-x 怎样使父节点缩放子节点不变

前两年正好做过这个。。你缩放应该是拖动时候缩放吧?或者其他时候也OK,重写缩放函数,或者在拖动的时候实现,父节点scale变化时,实时调整子节点的scale,使其乘积为固定值就OK了。

如何自适应屏幕尺寸

1.首先,在网页代码的头部,加入一行viewport元标签。
viewport是网页默认的宽度和高度,上面这行代码的意思是,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。
所有主流浏览器都支持这个设置,包括IE9,对于那些老式浏览器(主要是IE6、7、8),需要使用css3-mediaqueries.js。
2、不使用绝对宽度由于网页会根据屏幕宽度调整布局,所以不能使用绝对宽度的布局,也不能使用具有绝对宽度的元素。这一条非常重要。具体说,CSS代码不能指定像素宽度:width:xxx px;
只能指定百分比宽度:width: xx%;或者width:auto;
3、相对大小的字体
字体也不能使用绝对大小(px),而只能使用相对大小(em)。
body {
font: normal 100% Helvetica, Arial, sans-serif;
}
上面的代码指定,字体大小是页面默认大小的100%,即16像素。
h1 {
font-size: 1.5em;
}
然后,h1的大小是默认大小的1.5倍,即24像素(24/16=1.5)。
small {
font-size: 0.875em;
}
small元素的大小是默认大小的0.875倍,即14像素(14/16=0.875)。

关于本次cocos2dx获取缩放后大小和cocos2dx 怎么获得spine动画大小的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

cocos2dx获取缩放后大小(cocos2dx 怎么获得spine动画大小)

本文编辑:admin

更多文章:


androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

本篇文章给大家谈谈androidapp源码免费下载,以及如何实现APK的反编译得到APK的源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 18:00

security的反义词(risk的反义词)

security的反义词(risk的反义词)

大家好,今天小编来为大家解答以下的问题,关于security的反义词,risk的反义词这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 15:40

二郎神杨戬简笔画(二郎神怎么画)

二郎神杨戬简笔画(二郎神怎么画)

本篇文章给大家谈谈二郎神杨戬简笔画,以及二郎神怎么画对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:50

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

大家好,关于service pack 3很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思的知识点,相信应该可以解决大家的一

2026年9月22日 10:20

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

本篇文章给大家谈谈html代码怎么写大佬教程,以及html网页的题来个大佬,写代码,题目在图上对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:10

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

本篇文章给大家谈谈结构体内又一个struct,以及c++ 在结构体中再嵌入一个结构体如何调用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 09:40

next是什么意思英语(next是什么单词)

next是什么意思英语(next是什么单词)

本篇文章给大家谈谈next是什么意思英语,以及next是什么单词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 07:50

美国参议院人数(美国每个州的议员人数取决于什么)

美国参议院人数(美国每个州的议员人数取决于什么)

大家好,今天小编来为大家解答以下的问题,关于美国参议院人数,美国每个州的议员人数取决于什么这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 05:20

高中信息技术python(高考信息技术用的是什么语言)

高中信息技术python(高考信息技术用的是什么语言)

今天给各位分享高考信息技术用的是什么语言的知识,其中也会对高考信息技术用的是什么语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月22日 02:50

cocos creator中文(cocoscreator和cocoscreator3d的区别)

cocos creator中文(cocoscreator和cocoscreator3d的区别)

各位老铁们好,相信很多人对cocos creator中文都不是特别的了解,因此呢,今天就来为大家分享下关于cocos creator中文以及cocoscreator和cocoscreator3d的区别的问题知识,还望可以帮助大家,解决大家的

2026年9月22日 02:30

最近更新

舟山陵县个人网站建设多少钱?
2026-09-22 21:55:26 浏览:0
中企动力网站如何制作企业官网
2026-09-22 21:54:58 浏览:0
如何建设一个成功的极速漫画网站
2026-09-22 21:54:20 浏览:0
南京小程序定制开发如何避免踩坑
2026-09-22 21:53:05 浏览:0
热门文章

wait for you杨和苏(大家听下(wait for you)这首英文歌的开头那段音乐)
2026-06-13 16:20:04 浏览:22
刷关键字排名怎么操作最有效?
2026-09-14 20:02:13 浏览:14
oppo a9拆机教程(oppoa9拆机教程)
2026-06-13 10:40:02 浏览:12
标签列表