cocos2dx获取缩放后大小(cocos2dx 怎么获得spine动画大小)
本文目录
- cocos2dx 怎么获得spine动画大小
- 如何使用cocos2dx-jsbinding 来处理分辨率适配
- cocos2d-x 怎样使父节点缩放子节点不变
- 如何自适应屏幕尺寸
- 怎样制作基于Cocos2d-x的SLG游戏
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 怎样使父节点缩放子节点不变
前两年正好做过这个。。你缩放应该是拖动时候缩放吧?或者其他时候也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)。
怎样制作基于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系统。
更多文章:
asp代码问题?固铂asp-205/55r16单导向汽车轮胎94v怎么样
2024年6月28日 05:30
navigator是什么牌子(“Navigator”是什么手机的牌子)
2024年6月27日 00:32
termux下安装所有渗透工具(【termux】手把手教你在Android上使用termux终端)
2024年7月23日 02:54
网站源码加密破解工具(高分求asp源码加密工具,加密源码下conn文件里面有数据库路径混浠加密都可以,能被破解也没关系)
2024年7月15日 23:47
zblog源码下载((有关zblog) asp源码的问题,如何将以下源码写入c_custom.asp而不错)
2024年7月24日 01:14
transformers读音(变形金刚用英文怎么说带音标的)
2024年7月21日 18:09
yarn安装失败(ubuntu怎么安装hadoop yarn)
2023年7月23日 22:40
c语言中括号的优先级(c语言逻辑运算符,关系运算符,算术运算符,园括号的优先级是怎么样的)
2024年8月7日 22:45
svn的使用的全部流程(jenkins+svn,详细的工作流程是怎样的)
2024年7月23日 01:58
fedora和centos(怎样在RHEL,CentOS和Fedora上安装Git及设置Git账号)
2024年7月22日 23:53