我们先把前面的模型简化,我们最后要看到的是这样:

这个图上,构成这个效果的主要因素有3个。

一、x方向的位置,就是图上绿点标记的地方,锚点0.5。(这里我不需要Y方向的变化,需要的也可以自己类推)

二、大小,有了大小的差别,就有了远近的差别

三、zorder,这个是决定遮挡关系,然后我们就会产生一种立体的错觉

PS:其实图上,每个item的图片还用了投影。。。但是这是美工的事情)


我们再来看决定上面3个因素的东西(俯视图):

按标准坐标系,x轴正方向为0度,x轴负方向为180度。

图上的x,决定的是x方向的位置,图上的Y,是距离我们的距离,距离越远,自然就应该越小。而且距离我们越远,也就应该越靠后,zorder越低。


然后就应该补习下透视相关的东西了。请参考这里,只需要知道视椎体就行了。然后我们看侧面图:

为了方便,直接取Y轴所在平面为视平面,所做连线与Y轴的焦点,就是实际显示大小。这里涉及3个变量。物体距视点的距离d,视点到视平面之间的距离d1,视平面到物体的距离dx。设物体高度为L,物体显示高度为L'。通过相似三角形,可以轻易的得出L'的长度,但是我们其实只需要scale就够了,所以:

scale = d1 / (d1+dx)

但是这个d1和dx又怎么去获取,根据视椎体,有如下:

斜着的那个,就是上面侧面图我们要求的那个。根据相似三角形,又可以轻易得出:

scale = d‘ / (d' + dx ')

这个d'和dx',可以通过俯视图,就是上面一个圆圈圈,那个图算出来。要算这个,涉及3个变量还未知。一是角度,二是圆圈半径,3是上图的d',也就是视点到视平面的距离。简单的说,这3个值只能自己试。。。。不过是有一定规律的

角度是根据想看多少自己来分布,实际能看到的部分,只有整个园的前半圆,一共180度,加入我想一共放5个,我就按45度分布就行了。

半径可以推测,比如我想看我全部的半圆,那么直径就是窗口的大小。

最后一个,主要是涉及一个缩放比例,通过公式可以看出,如果d'越大,那么最前面的item和最后面的item,大小差距就越大,反之差距就越小。




然后就开始写代码了。。。

cocos2dx 实现gallery 二的更多相关文章

  1. canvas简单连线动画的实现代码

    这篇文章主要介绍了canvas简单连线动画的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  2. ios – 无论设备方向如何,物体落在地球上

    使用CoreMotion框架,我已经看到了两种方式来描述不同设备方向的落后对象行为.我已经在代码中尝试过这两个版本,它们似乎都像我期望的一样,即不论设备方向如何,都落在地球上.我只是好奇为什么两个版本的行为都一样,即使在第一个版本中,x和y方向的加速度,即dx和dy,是以横向切换的?1)2)解决方法我想你正在使用模拟器,所以重力总是与底部正交.在真实的设备上,行为应该有所不同,因为您将始终至少轻轻地倾斜设备.

  3. 运行Android Studio项目时出现DX错误

    我正在尝试使用其依赖项设置我的AndroidStudio项目.但是,当我尝试运行我的项目时,我收到以下错误消息:任何人都可以帮助我解决方法检查是否多次添加相同的jar文件.如果是,请从libs文件夹中删除其中任何一个并清理项目.

  4. 从命令行管理android项目

    我在不使用ant的情况下从命令行管理和运行我的Android应用程序,我按照以下步骤操作:>生成R.java>将src中的R.java和所有.java文件编译为.class文件>使用以下命令将类文件集合成dex文件dx–dex–verbose–output=./bin/classes.dex./bin.class文件位于bin目录中.但是我在这些步骤中遇到以下错误:因此,我无法创建Classes.

  5. 快速实现一个简单的canvas迷宫游戏的示例

    本篇文章主要介绍了快速实现一个简单的canvas迷宫游戏的示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  6. 脸部磨皮:一个高阶正则化 ( higher-order regularisation ) 模型的应用

    通过最小化∫Ω|u|dx这一项来进行正则化,被称作totalvariationregularization.在最优解中,它保留了图像的边,同时希望边中间的区域是等值的,因为它的梯度被最小化。因此笔者在此介绍两个高阶模型,它们都是对解函数的二阶导数进行正则化,因此得到的解是一个分段仿射函数。

  7. 如何用IOS检测Fingersize?

    是否可以在IOS应用程序中检测到fingerize?我想要实现的目标:我需要在我的OpenGLES应用程序中使用虚拟“按钮”.如果有人像游戏手柄一样拿着iPhone,他会用一根手指按两个按钮.我希望我的意思是可以理解的……

  8. c – 使用数组避免OpenMP中的虚假共享

    是否有我可以使用的条款,我没有听说过?或者这是我需要重构代码以实现正确的并行化的任务?所有形式的输入将不胜感激!

  9. java – 多个dex文件定义/ BuildConfig,找不到原因:

    我正在使用新的毕业生构建系统,我正面临以下问题:依赖关系我看不到任何东西,这里是:我试图验证问题不是一个重复的支持库,所以我试图添加:哪些导致一些支持-V4库类找不到的错误,所以这个库不能从任何其他位置编译.我想到的一件事可能是导致这个问题的事实是,我使用Flavorsfeautreinoreder来创建我的应用程序的不同版本的文件.当我看到错误中的文件,我看到:所以包中的文件和包中指定的Stri

  10. cocos2dx 实现gallery 二

    而且距离我们越远,也就应该越靠后,zorder越低。物体距视点的距离d,视点到视平面之间的距离d1,视平面到物体的距离dx。设物体高度为L,物体显示高度为L'。

随机推荐

  1. 【cocos2d-x 3.x 学习笔记】对象内存管理

    Cocos2d-x的内存管理cocos2d-x中使用的是上面的引用计数来管理内存,但是又增加了一些自己的特色。cocos2d-x中通过Ref类来实现引用计数,所有需要实现内存自动回收的类都应该继承自Ref类。下面是Ref类的定义:在cocos2d-x中创建对象通常有两种方式:这两中方式的差异可以参见我另一篇博文“对象创建方式讨论”。在cocos2d-x中提倡使用第二种方式,为了避免误用第一种方式,一般将构造函数设为protected或private。参考资料:[1]cocos2d-x高级开发教程2.3节[

  2. 利用cocos2dx 3.2开发消灭星星六如何在cocos2dx中显示中文

    由于编码的不同,在cocos2dx中的Label控件中如果放入中文字,往往会出现乱码。为了方便使用,我把这个从文档中获取中文字的方法放在一个头文件里面Chinese.h这里的tex_vec是cocos2dx提供的一个保存文档内容的一个容器。这里给出ChineseWords,xml的格式再看看ChineseWord的实现Chinese.cpp就这样,以后在需要用到中文字的地方,就先include这个头文件然后调用ChineseWord函数,获取一串中文字符串。

  3. 利用cocos2dx 3.2开发消灭星星七关于星星的算法

    在前面,我们已经在GameLayer中利用随机数初始化了一个StarMatrix,如果还不知道怎么创建星星矩阵请回去看看而且我们也讲了整个游戏的触摸事件的派发了。

  4. cocos2dx3.x 新手打包APK注意事项!

    这个在编译的时候就可以发现了比较好弄这只是我遇到的,其他的以后遇到再补充吧。。。以前被这两个问题坑了好久

  5. 利用cocos2dx 3.2开发消灭星星八游戏的结束判断与数据控制

    如果你看完之前的,那么你基本已经拥有一个消灭星星游戏的雏形。开始把剩下的两两互不相连的星星消去。那么如何判断是GameOver还是进入下一关呢。。其实游戏数据贯穿整个游戏,包括星星消除的时候要加到获得分数上,消去剩下两两不相连的星星的时候的加分政策等,因此如果前面没有做这一块的,最好回去搞一搞。

  6. 利用cocos2dx 3.2开发消灭星星九为游戏添加一些特效

    needClear是一个flag,当游戏判断不能再继续后,这个flag变为true,开始消除剩下的星星clearSumTime是一个累加器ONE_CLEAR_TIME就是每颗星星消除的时间2.连击加分信息一般消除一次星星都会有连击信息和加多少分的信息。其实这些combo标签就是一张图片,也是通过控制其属性或者runAction来实现。源码ComboEffect.hComboEffect.cpp4.消除星星粒子效果消除星星时,为了实现星星爆裂散落的效果,使用了cocos2d提供的粒子特效引擎对于粒子特效不了

  7. 02 Cocos2D-x引擎win7环境搭建及创建项目

    官网有搭建的文章,直接转载记录。环境搭建:本文介绍如何搭建Cocos2d-x3.2版本的开发环境。项目创建:一、通过命令创建项目前面搭建好环境后,怎样创建自己的Cocos2d-x项目呢?先来看看Cocos2d-x3.2的目录吧这就是Cocos2d-x3.2的目录。输入cocosnew项目名–p包名–lcpp–d路径回车就创建成功了例如:成功后,找到这个项目打开proj.win32目录下的Hello.slnF5成功了。

  8. 利用cocos2dx 3.2开发消灭星星十为游戏添加音效项目源码分享

    一个游戏,声音也是非常的重要,其实cocos2dx里面的简单音效引擎的使用是非常简单的。我这里只不过是用一个类对所有的音效进行管理罢了。Audio.hAudio.cpp好了,本系列教程到此结束,第一次写教程如有不对请见谅或指教,谢谢大家。最后附上整个项目的源代码点击打开链接

  9. 03 Helloworld

    程序都有一个入口点,在C++就是main函数了,打开main.cpp,代码如下:123456789101112131415161718#include"main.h"#include"AppDelegate.h"#include"cocos2d.h"USING_NS_CC;intAPIENTRY_tWinMain{UNREFERENCED_ParaMETER;UNREFERENCED_ParaMETER;//createtheapplicationinstanceAppDelegateapp;return

  10. MenuItemImage*图标菜单创建注意事项

    学习cocos2dx,看的是cocos2d-x3.x手游开发实例详解,这本书错误一大把,本着探索求知勇于发现错误改正错误的精神,我跟着书上的例子一起调试,当学习到场景切换这个小节的时候,出了个错误,卡了我好几个小时。

返回
顶部