Cocos2d-x 学习笔记(11.5) SkewTo SkewBy
1. SkewTo SkewBy
node朝X和Y方向的歪斜。SkewTo是SkewBy的父类。
1.1 成员变量 create方法
// 两者成员变量一致
float _skewX;
float _skewY;
float _startSkewX; // startWithTarget
float _startSkewY;//
float _endSkewX; // create参数
float _endSkewY; //
float _deltaX; // startWithTarget
float _deltaY; //
SkewTo的_skewX和_skewY在构造函数默认为0。
SkewBy的_skewX和_skewY在init方法中用create的参数设置,即当前的斜值。还在startWithTarget方法中用到。
1.2 startWithTarget
SkewTo:
ActionInterval::startWithTarget(target);
_startSkewX = target->getSkewX();
当前X方向的斜值作为_startSkewX。
if (_startSkewX > )
{
_startSkewX = fmodf(_startSkewX, .f);
}
else
{
_startSkewX = fmodf(_startSkewX, -.f);
} _deltaX = _endSkewX - _startSkewX;
X方向斜值要对+-180度求余,超过180度的斜值与求余后的斜值效果一致。(?)
重新计算_deltaX,使用了“就近原则”,同旋转动作一样:
if (_deltaX > )
{
_deltaX -= ;
}
if (_deltaX < -)
{
_deltaX += ;
}
Y方向斜值要对+-360度求余(?)
_startSkewY = target->getSkewY();
if (_startSkewY > )
{
_startSkewY = fmodf(_startSkewY, .f);
}
else
{
_startSkewY = fmodf(_startSkewY, -.f);
}
_deltaY = _endSkewY - _startSkewY;
// 就近原则
if (_deltaY > )
{
_deltaY -= ;
}
if (_deltaY < -)
{
_deltaY += ;
}
SkewBy:
设置的斜值加上开始的斜值作为_endSkewX。
用_skewX(create参数的斜值)对_deltaX进行设置可以理解。计算_endSkewX用不知道有何意义?
SkewTo::startWithTarget(target);
_deltaX = _skewX;
_deltaY = _skewY;
_endSkewX = _startSkewX + _deltaX;
_endSkewY = _startSkewY + _deltaY;
Cocos2d-x 学习笔记(11.5) SkewTo SkewBy的更多相关文章
- Ext.Net学习笔记11:Ext.Net GridPanel的用法
Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...
- SQL反模式学习笔记11 限定列的有效值
目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...
- golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好
golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好 jetbrain家的全套ide都很好用,一定要dark背景风格才装B 从File-->s ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Python3+Selenium3+webdriver学习笔记11(cookie处理)
#!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...
- 并发编程学习笔记(11)----FutureTask的使用及实现
1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...
- 《C++ Primer Plus》学习笔记11
<C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...
- SpringMVC:学习笔记(11)——依赖注入与@Autowired
SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...
- Spring 源码学习笔记11——Spring事务
Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...
随机推荐
- Linux 笔记 - 第十三章 Linux 系统日常管理之(三)Linux 系统日志和服务
博客地址:http://www.moonxy.com 一.前言 日志文件记录了系统每天发生的各种各样的事情,比如监测系统状况.排查问题等.作为系统运维人员可以通过日志来检查错误发生的原因,或者受到攻击 ...
- Sublime Text 3 中实现编译C语言程序
这个是真坑,感觉用devc++写c程序特别的不爽,所以就用了sublime,但是,编译的时候又有不少问题, 下面就把我踩的坑记录下来 tools>Build System>New Buil ...
- Day20 磁盘管理2之RAID卡
1.磁盘的基本分区Gdisk 前面我们已经了解到fdisk分区,但fdisk不支持给高于2TB的磁盘进行分区.如果有单块盘高于2TB,建议使用Gdisk进行分区. 1.使用gdisk进行磁盘分区 1. ...
- Java 集合转换(数组、List、Set、Map相互转换)
package com.example.test; import java.util.ArrayList; import java.util.Arrays; import java.util.Hash ...
- js vue 页面添加水印
vue 微信页面添加水印 this.$nextTick(function() { watermark({ watermark_txt ...
- SpringBoot的注解注入功能移植到.Net平台(开源)
*:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...
- 按插入顺序排序的map
LinkedHashMap HashMap是无序的,HashMap在put的时候是根据key的hashcode进行hash然后放入对应的地方.所以在按照一定顺序put进HashMap中,然后遍历出Ha ...
- redis-计数信号量
1.基本概念 2.信号量类 3.测试类 4.测试日志 基本概念 计数信号量是一种锁,它可以让用户限制一项资源最多能够同时被多少个进程访问, 技术信号量和其他锁的区别:当客户端获取锁失败时,客户端会选择 ...
- 如何安装PHPstorm并配置php运行环境运行php项
php是程序开发者常用的编程语言,那么它就需要一款简单实用的集成开发环境,也就是一款舒服的编辑器,今天笔者为大家介绍phpstorm这款软件,并详细的讲解如何用它配置php项目 工具/原料 笔 ...
- Java为什么需要四种引用?
首先抛出一个问题:在闲暇时间收拾自己家里的时候,对某一件物件要不要丢弃的问题上,是否有过食之无味,弃之可惜的感觉? 同样的,JVM在回收Java对象的时候,是否对对象实例也有食之无味,弃之可惜的感受? ...