cocos2dx Animate3D(二)
Twirl
扭曲旋转特效

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 扭曲中心位置
// 扭曲的数量
// 振幅
static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude);
源码
void Twirl::update(float time)
{int i, j;Vec2 c = _position;for (i = 0; i < (_gridSize.width+1); ++i){for (j = 0; j < (_gridSize.height+1); ++j){Vec3 v = getOriginalVertex(Vec2(i ,j));Vec2 avg(i-(_gridSize.width/2.0f), j-(_gridSize.height/2.0f));float r = avg.getLength();float amp = 0.1f * _amplitude * _amplitudeRate;float a = r * cosf( (float)M_PI/2.0f + time * (float)M_PI * _twirls * 2 ) * amp;Vec2 d(sinf(a) * (v.y-c.y) + cosf(a) * (v.x-c.x),cosf(a) * (v.y-c.y) - sinf(a) * (v.x-c.x));v.x = c.x + d.x;v.y = c.y + d.y;setVertex(Vec2(i ,j), v);}}
}
示例
cc.Twirl:create(2, cc.size(12,8), cc.p(size.width/2, size.height/2), 1, 2.5)
ShakyTiles3D
瓷砖晃动特效

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 晃动的范围
// z轴是否晃动
static ShakyTiles3D* create(float duration, const Size& gridSize, int range, bool shakeZ);
源码
void ShakyTiles3D::update(float /*time*/)
{int i, j;for (i = 0; i < _gridSize.width; ++i){for (j = 0; j < _gridSize.height; ++j){Quad3 coords = getOriginalTile(Vec2(i, j));// Xcoords.bl.x += ( rand() % (_randrange*2) ) - _randrange;coords.br.x += ( rand() % (_randrange*2) ) - _randrange;coords.tl.x += ( rand() % (_randrange*2) ) - _randrange;coords.tr.x += ( rand() % (_randrange*2) ) - _randrange;// Ycoords.bl.y += ( rand() % (_randrange*2) ) - _randrange;coords.br.y += ( rand() % (_randrange*2) ) - _randrange;coords.tl.y += ( rand() % (_randrange*2) ) - _randrange;coords.tr.y += ( rand() % (_randrange*2) ) - _randrange;if (_shakeZ){coords.bl.z += ( rand() % (_randrange*2) ) - _randrange;coords.br.z += ( rand() % (_randrange*2) ) - _randrange;coords.tl.z += ( rand() % (_randrange*2) ) - _randrange;coords.tr.z += ( rand() % (_randrange*2) ) - _randrange;}setTile(Vec2(i, j), coords);}}
}
示例
cc.ShakyTiles3D:create(t, cc.size(16,12), 5, false)
ShatteredTiles3D
破碎的3D瓷砖特效

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 晃动的范围
// z轴是否晃动
static ShatteredTiles3D* create(float duration, const Size& gridSize, int range, bool shatterZ);
源码
void ShatteredTiles3D::update(float /*time*/)
{int i, j;if (_once == false){for (i = 0; i < _gridSize.width; ++i){for (j = 0; j < _gridSize.height; ++j){Quad3 coords = getOriginalTile(Vec2(i ,j));// Xcoords.bl.x += ( rand() % (_randrange*2) ) - _randrange;coords.br.x += ( rand() % (_randrange*2) ) - _randrange;coords.tl.x += ( rand() % (_randrange*2) ) - _randrange;coords.tr.x += ( rand() % (_randrange*2) ) - _randrange;// Ycoords.bl.y += ( rand() % (_randrange*2) ) - _randrange;coords.br.y += ( rand() % (_randrange*2) ) - _randrange;coords.tl.y += ( rand() % (_randrange*2) ) - _randrange;coords.tr.y += ( rand() % (_randrange*2) ) - _randrange;if (_shatterZ) {coords.bl.z += ( rand() % (_randrange*2) ) - _randrange;coords.br.z += ( rand() % (_randrange*2) ) - _randrange; coords.tl.z += ( rand() % (_randrange*2) ) - _randrange;coords.tr.z += ( rand() % (_randrange*2) ) - _randrange;}setTile(Vec2(i, j), coords);}}_once = true;}
}
示例
cc.ShatteredTiles3D:create(t, cc.size(16,12), 5, false)
ShuffleTiles
瓷砖洗牌特效

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 随即速度基数(即会用此值作为底数来随机产生值)
static ShuffleTiles* create(float duration, const Size& gridSize, unsigned int seed);
源码
void ShuffleTiles::update(float time)
{Tile *tileArray = (Tile*)_tiles;for (int i = 0; i < _gridSize.width; ++i){for (int j = 0; j < _gridSize.height; ++j){tileArray->position = Vec2((float)tileArray->delta.width, (float)tileArray->delta.height) * time;placeTile(Vec2(i, j), tileArray);++tileArray;}}
}
示例
local shuffle = cc.ShuffleTiles:create(t, cc.size(16,12), 25)
local shuffle_back = shuffle:reverse()
local delay = cc.DelayTime:create(2)return cc.Sequence:create(shuffle, shuffle_back, delay)
FadeOutTRTiles、FadeOutBLTiles、FadeOutUpTiles、FadeOutDownTiles
- FadeOutTRTiles :淡出效果,从左下角到右上角
- FadeOutBLTiles :淡出效果,从右上角到左下角
- FadeOutUpTiles :折叠效果,从下到上
- FadeOutDownTiles :折叠效果,从上到下




// 时间
// 网格大小
static FadeOutTRTiles* create(float duration, const Size& gridSize);
static FadeOutBLTiles* create(float duration, const Size& gridSize);
static FadeOutUpTiles* create(float duration, const Size& gridSize);
static FadeOutDownTiles* create(float duration, const Size& gridSize);
示例
local function FadeOutTRTilesDemo(t)local fadeout = cc.FadeOutTRTiles:create(t, cc.size(16,12))local back = fadeout:reverse()local delay = cc.DelayTime:create(0.5)return cc.Sequence:create(fadeout, back, delay)
endlocal function FadeOutBLTilesDemo(t)local fadeout = cc.FadeOutBLTiles:create(t, cc.size(16,12))local back = fadeout:reverse()local delay = cc.DelayTime:create(0.5)return cc.Sequence:create(fadeout, back, delay)
endlocal function FadeOutUpTilesDemo(t)local fadeout = cc.FadeOutUpTiles:create(t, cc.size(16,12))local back = fadeout:reverse()local delay = cc.DelayTime:create(0.5)return cc.Sequence:create(fadeout, back, delay)
endlocal function FadeOutDownTilesDemo(t)local fadeout = cc.FadeOutDownTiles:create(t, cc.size(16,12))local back = fadeout:reverse()local delay = cc.DelayTime:create(0.5)return cc.Sequence:create(fadeout, back, delay)
end
TurnOffTiles
方块消失特效

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
static TurnOffTiles* create(float duration, const Size& gridSize);
// seed 随即速度基数(即会用此值作为底数来随机产生值)
static TurnOffTiles* create(float duration, const Size& gridSize, unsigned int seed);
示例
local function TurnOffTilesDemo(t)local fadeout = cc.TurnOffTiles:create(t, cc.size(48,32), 25)local back = fadeout:reverse()local delay = cc.DelayTime:create(0.5)return cc.Sequence:create(fadeout, back, delay)
end
WavesTiles3D
瓷砖波浪特效

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 波动的速率
// 振幅
static WavesTiles3D* create(float duration, const Size& gridSize, unsigned int waves, float amplitude);
示例
local function WavesTiles3DDemo(t)return cc.WavesTiles3D:create(t, cc.size(15,10), 4, 120)
end
JumpTiles3D
3D效果tiles跳跃

// 持续时间(时间过后不会回到原来的样子)
// 整个屏幕被分成几行几列
// 跳几下
// 振幅
static JumpTiles3D* create(float duration, const Size& gridSize, unsigned int numberOfJumps, float amplitude);
示例
local function JumpTiles3DDemo(t)return cc.JumpTiles3D:create(t, cc.size(15,10), 2, 30)
end
SplitRows、SplitCols
- SplitRows 分多行消失特效
- SplitCols 分多列消失特效


// 时间
// 行数或者列数static SplitRows* create(float duration, unsigned int rows);static SplitCols* create(float duration, unsigned int cols);
示例
local function SplitRowsDemo(t)return cc.SplitRows:create(t, 9)
endlocal function SplitColsDemo(t)return cc.SplitCols:create(t, 9)
end
PageTurn3D
3D翻页特效,从右下角往左上角翻

// 时间
// 网格大小
static PageTurn3D* create(float duration, const Size& gridSize);
示例
local function PageTurn3DDemo(t)cc.Director:getInstance():setDepthTest(true)return cc.PageTurn3D:create(t, cc.size(15,10))
end
相关文章:
cocos2dx Animate3D(二)
Twirl 扭曲旋转特效 // 持续时间(时间过后不会回到原来的样子) // 整个屏幕被分成几行几列 // 扭曲中心位置 // 扭曲的数量 // 振幅 static Twirl* create(float duration, const Size& gridSize, const Vec2& position, unsigned int twirls, float amplitude)…...
基于java技术的社区交易二手平台
基于java技术的社区交易二手平台的设计与实现 (一)开发背景 随着因特网的日益普及与发展,更多的人们开始通过因特网来寻求便利。但是,许多人都觉得网上商店里的东西不贵。所以,有些顾客宁愿去那些用二次定价建立起来的…...
(Matalb回归预测)GA-BP遗传算法优化BP神经网络的多维回归预测
目录 一、程序及算法内容介绍: 基本内容: 亮点与优势: 二、实际运行效果: 三、部分代码: 四、分享本文全部代码数据说明手册: 一、程序及算法内容介绍: 基本内容: 本代码基于M…...
【Docker】从零开始:10.registry搭建私有仓库
【Docker】从零开始:10.registry搭建私有仓库 为什么要使用私有仓库关于Docker Registry基于容器搭建registry私有仓库1.下载镜像2. 启动镜像3.修改系统配置文件4.下载ubuntu镜像,修改名称3.提交镜像4.查看镜像 本地搭建私有仓库(目前编译报错找不到包&a…...
树莓派上使用Nginx通过内网穿透实现无公网IP访问内网本地站点
前言 安装 Nginx(发音为“engine-x”)可以将您的树莓派变成一个强大的 Web 服务器,可以用于托管网站或 Web 应用程序。相比其他 Web 服务器,Nginx 的内存占用率非常低,可以在树莓派等资源受限的设备上运行。同时结合c…...
长征故事vr互动教育体验系统让师生感同身受
红色文化是贯穿于新民主主义革命、社会主义建设的各个时期,具有深厚的历史价值和文化内涵的先进文化,是高效、优质的教育资源。思政课vr红色数字展馆充分开发和大力弘扬红色文化资源,发挥其独特资源优势和教育功能,应用到教学中&a…...
汽车级芯片NCV7518MWATXG 可编程六沟道低压侧 MOSFET预驱动器 特点、参数及应用
NCV7518MWATXG 可编程六沟道低压侧 MOSFET 预驱动器属于 FLEXMOS™ 汽车级产品,用于驱动逻辑电平 MOSFET。该产品可通过串行 SPI 和并行输入组合控制。该器件提供 3.3 V/5 V 兼容输入,并且串行输出驱动器可以采用 3.3 V 或 5 V 供电。内部通电重置提供受…...
【分布式】小白看Ring算法 - 03
相关系列 【分布式】NCCL部署与测试 - 01 【分布式】入门级NCCL多机并行实践 - 02 【分布式】小白看Ring算法 - 03 【分布式】大模型分布式训练入门与实践 - 04 概述 NCCL(NVIDIA Collective Communications Library)是由NVIDIA开发的一种用于多GPU间…...
使用Git bash切换Gitee、GitHub多个Git账号
Git是分布式代码管理工具,使用命令行的方式提交commit、revert回滚代码。这里介绍使用Git bash软件来切换Gitee、GitHub账号。 假设在gitee.com上的邮箱是alicefoxmail.com 、用户名为alice;在github上的邮箱是bobfoxmail.com、用户名为bob。 账号…...
【RtpRtcp】1: webrtc m79:audio的ChannelReceive 创建并使用
m79中,RtpRtcp::Create 的调用很少 不知道谁负责创建ChannelReceiveclass ChannelReceive : public ChannelReceiveInterface,public MediaTransportAudioSinkInterface {接收编码后的音频帧:接收rtcp包:...
Ubuntu系统安装docker
1.检查是否安装老版本 检查卸载老版本docker ubuntu下自带了docker的库,不需要添加新的源。 但是ubuntu自带的docker版本太低,需要先卸载旧的再安装新的。 apt-get remove docker docker-engine docker.io containerd runc 如果不能正常卸载&#x…...
如何访问linux上的web服务
1.获取服务运行端口 例如8080 2.如果时vmware 需要先配置转发端口和主机ip 主机ip需要未使用的 例如: 3.查看虚拟机防火墙设置 centos8 为例 : firewall-cmd --zonepublic --list-ports 查看放通端口 如果没有放通 firewall-cmd --zonepublic --add-p…...
Vatee万腾的数字化掌舵:Vatee科技解决方案的全面引领
随着数字化时代的到来,Vatee万腾凭借其卓越的科技实力和全面的解决方案,成功地在数字化探索的航程中掌舵引领。 首先,Vatee万腾以其强大的数字化科技实力成为行业的引领者。vatee万腾不仅在人工智能、大数据分析、云计算等前沿领域取得了显著…...
YOLOv5 第Y6周 模型改进
🍨 本文为[🔗365天深度学习训练营学习记录博客 🍦 参考文章:365天深度学习训练营 🍖 原作者:[K同学啊] 🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/mingtian-fkmxf/zxwb4…...
Unity Android FireBase bugly报错查询
报错如下图,注意,标红的三处 使用的il2cpp和架构是arm64-v8a 那我们就可以根据这些去找对应的符号表,在unity安装目录下 Unity2020.3.33f1\Editor\Data\PlaybackEngines\AndroidPlayer\Variations\il2cpp\Release\Symbols\arm64-v8a 找到l…...
React中如何解决点击<Tree>节点前面三角区域不触发onClick事件
React中如何解决点击节点前面三角区域不触发onClick事件,如何区别‘左边’和‘右边’区域点击逻辑呢?(Tree引用开源组件TDesign) 只需要在onClick里面加限制一下就行: <TreeexpandMutexactivabletransitiondata{t…...
如何利用4G路由器构建茶饮连锁店物联网
随着年轻消费群体的增长,加上移动互联网营销的助推,各类新式奶茶消费风靡大街小巷,也促进了品牌奶茶连锁店的快速扩张。 在店铺快速扩张的局势下,品牌总部对于各间连锁店的零售统计、营销规划、物流调配、卫生监测、安全管理等事务…...
【2024系统架构设计】 系统架构设计师第二版-大数据架构理论设计与实践
目录 1 传统数据库的数据过载问题 2 大数据处理系统 3 Lambda架构 4 Kappa架构...
正整数分解
题目编号:Exp08-Basic01,GJBook3-12-05 题目名称:正整数分解 题目描述:正整数n,按第一项递减的顺序依次输出其和等于n的所有不增的正整数和式。 输入:一个正整数n(0<n≤15)。 …...
基于51单片机电子钟闹钟LCD1602显示proteus仿真设计
基于51单片机的LCD1602电子钟闹钟proteus仿真设计 基于51单片机的LCD1602电子钟闹钟proteus仿真设计功能介绍:仿真图:原理图:设计报告:程序:器件清单:资料清单&&下载链接: 基于51单片机…...
从混淆矩阵到决策曲线:用Matplotlib一步步拆解DCA背后的净获益计算
从混淆矩阵到决策曲线:用Matplotlib拆解DCA的净获益计算 在医疗诊断和风险评估领域,我们常常需要判断一个预测模型是否真正具有临床价值。传统指标如准确率、AUC值虽然能反映模型性能,却无法回答一个关键问题:**使用这个模型做决策…...
从‘七桥问题’到社交网络推荐:用Python代码和图论解决5个实际问题
从‘七桥问题’到社交网络推荐:用Python代码和图论解决5个实际问题 当18世纪的数学家欧拉站在哥尼斯堡的七座桥前思考如何不重复地走遍所有桥梁时,他可能不会想到,这个看似简单的谜题会开创一个影响深远的数学分支——图论。两个多世纪后的今…...
从QP到EFSM:为你的RTOS项目找一个更‘接地气’的轻量状态机框架
从QP到EFSM:嵌入式开发者的轻量级状态机迁移实战指南 在嵌入式开发中,状态机是处理复杂业务逻辑的利器。但当我们面对Quantum Platform(QP)这类功能强大却略显"重型"的框架时,很多团队会陷入两难——既向往其严谨的状态管理模式&am…...
微信小程序实战:从零构建一个高精度计算器
1. 为什么需要高精度计算器 在日常开发中,我们经常遇到一个头疼的问题:JavaScript的浮点数计算不准确。比如0.10.2的结果不是0.3,而是0.30000000000000004。这种精度问题在金融、科学计算等场景下会造成严重错误。 我在开发电商小程序时就踩过…...
从一道经典C语言题出发:手把手教你封装gcd和lcm函数,提升代码复用性
从一道经典C语言题出发:手把手教你封装gcd和lcm函数,提升代码复用性 在编程学习的道路上,我们常常会遇到一些看似简单却蕴含深刻编程思想的题目。求最大公约数(GCD)和最小公倍数(LCM)就是这样一…...
别再死记硬背了!用Python+LTspice仿真,5分钟搞懂RC/RL滤波电路截止频率
用PythonLTspice仿真5分钟掌握RC/RL滤波电路截止频率 在电子工程的学习中,RC和RL滤波电路是最基础也最重要的概念之一。传统的学习方法往往要求学生死记硬背截止频率公式,这不仅枯燥乏味,也难以真正理解电路行为的本质。本文将介绍一种全新的…...
手把手教你用CLIP模型构建一个简易的“以图搜图”或“文搜图”系统(基于transformers 4.25.0)
从零构建基于CLIP的跨模态搜索引擎:图像与文本的语义桥梁 在数字内容爆炸式增长的时代,如何在海量图片库中快速找到符合语义需求的图像?传统的关键词搜索已经无法满足我们对图像理解的深层需求。想象一下,当你手头有十万张产品图片…...
掌握在线幻灯片创作:PPTist打造专业演示文稿的完整解决方案
掌握在线幻灯片创作:PPTist打造专业演示文稿的完整解决方案 【免费下载链接】PPTist PowerPoint-ist(/pauəpɔintist/), An online presentation application that replicates most of the commonly used features of MS PowerPoint, allowi…...
AI建站避坑指南:10个高频问题与答案,帮你避开90%的坑
怕踩坑?这些AI建站的核心问题,一次性给你讲透很多人不是不想用AI建站工具,而是心里有太多顾虑:做出来的网站会不会很丑?对SEO到底友不友好?会不会用着用着突然收费?数据安全吗?这篇文…...
科学解码风水禁忌:卧室厨房的5个致命错误布局(含实测数据)
现代家居风水实证:5个科学验证的布局禁忌与改造方案 引言:当传统智慧遇上现代科技 清晨的阳光透过窗帘缝隙洒进卧室,你是否想过床头朝向会影响整夜的睡眠质量?开放式厨房里飘散的油烟,除了困扰呼吸道,还可能…...
