CCActionTween(可以时间上连续的改变某个对象指定key对应的属性 改变方式需要自定义 cocos2dx未定义 )
来源:互联网 发布:金蝶数据交换平台 编辑:程序博客网 时间:2024/06/15 08:04
#ifndef __CCACTIONTWEEN_H__
#define __CCACTIONTWEEN_H__
///怎么通过精灵属性得到相应值啊 ????????
#include "CCActionInterval.h"
NS_CC_BEGIN
class CC_DLL CCActionTweenDelegate
{
public: //太不规范了 不写构造函数(虽然会隐式声明)!!!!!!!!!!!!!!!!!!!!!!!!!!
virtual ~CCActionTweenDelegate() {}
virtual void updateTweenAction(float value, const char* key) = 0;
};
/** CCActionTween
CCActionTween is an action that lets you update any property of an object
//.ActionTween 是一个 action 让允许你更新任何对象的属性
For example, if you want to modify the "width" property of a target from 200 to 300 in 2 seconds, then:
id modifyWidth = [CCActionTween actionWithDuration:2 key:@"width" from:200 to:300];
[target runAction:modifyWidth];
Another example: CCScaleTo action could be rewritten using CCPropertyAction:
// scaleA and scaleB are equivalents
id scaleA = [CCScaleTo actionWithDuration:2 scale:3];
id scaleB = [CCActionTween actionWithDuration:2 key:@"scale" from:1 to:3];
@since v0.99.2
*/
class CC_DLL CCActionTween : public CCActionInterval
{
public:
/** creates an initializes the action with the property name (key), and the from and to(从xx到) parameters(参数). */
static CCActionTween* create(float aDuration, const char* key, float from, float to);
/** initializes the action with the property name (key), and the from and to parameters. */
bool initWithDuration(float aDuration, const char* key, float from, float to);
void startWithTarget(CCNode *pTarget);
void update(float dt);
CCActionInterval* reverse();
std::string m_strKey;
float m_fFrom, m_fTo;
float m_fDelta;
};
// end of actions group
/// @}
NS_CC_END
#endif /* __CCACTIONTWEEN_H__ */
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
.cpp
void CCActionTween::startWithTarget(CCNode *pTarget)
{
CCAssert(dynamic_cast<CCActionTweenDelegate*>(pTarget), "target must implement CCActionTweenDelegate");
CCActionInterval::startWithTarget(pTarget);
m_fDelta = m_fTo - m_fFrom;
}
void CCActionTween::update(float dt)
{
dynamic_cast<CCActionTweenDelegate*>(m_pTarget)->updateTweenAction(m_fTo - m_fDelta * (1 - dt), m_strKey.c_str());
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
例子:
class originalTargeted
{
public:
originalTargeted(){ m_map["width"] = 18; }
~originalTargeted(){}
map<string, int> m_map;
};
class CCActionTweenDelegate02 :public cocos2d::CCActionTweenDelegate, public cocos2d::CCNode
{
public:
CCActionTweenDelegate02(originalTargeted* d){ ot = d; }
virtual ~CCActionTweenDelegate02() {}
virtual void updateTweenAction(float value, const char* key);
originalTargeted* ot;
};
_____________________________
main()
{
originalTargeted* test = new originalTargeted;
CCActionTweenDelegate02* s = new CCActionTweenDelegate02(test);
CCActionTween* testaction = CCActionTween::create(2, "width", 1, 2);
s->runAction(testaction);
testaction->update(1); //???为什么runaction 不执行update
}
void CCActionTweenDelegate02::updateTweenAction(float value, const char* key)
{
this->ot->m_map[key] = 12;
}
- CCActionTween(可以时间上连续的改变某个对象指定key对应的属性 改变方式需要自定义 cocos2dx未定义 )
- 改变对象的key的名称
- 使用链接改变某个标签中的某个属性的值
- 怎么改变NSDictionary中对应该key的Value
- 可以改变标题宽度的表格 (文本表头方式)
- js中可以改变作用域的三中方式(改变this)
- UILabel上的文字 单独改变 属性
- 38、批量改变对象的属性
- 不使用setAttribute()方法改变某个图片的src属性
- Activity和Fragment的五种交互方式(Activity可以改变Fragment的UI,Fragment也可以改变ActivityUI)
- struts2中用setValue可以改变对象栈中指定属性的值
- 改变,成长的过程需要改变
- VC编程改变指定的文件或文件夹的属性
- VC编程改变指定的文件或文件夹的属性
- 改变文件的属性
- 监听属性的改变
- 属性动画的改变
- 怎么理解字符串对象是不可改变的对象?字符串引用变量的值可以改变?
- synchronized用法的一个实例
- 资金面面临压力 2000点上下震荡基金介入防御品种
- c# 调用java webservice带有soapheader
- hotplug启动过程之call_usermodehelper分析
- 风,会记得那朵花的香
- CCActionTween(可以时间上连续的改变某个对象指定key对应的属性 改变方式需要自定义 cocos2dx未定义 )
- ubuntu sublime无法输入中文问题解决
- ios uiwebview 长按图片,保存到本地相册
- Spring bean装配
- LeetCode : Reverse Words in a String
- TYVJ 最近距离
- resteasy上传文件中文乱码解决
- 命令模式之做我的齐天大圣还是奉旨上界
- 关于jquery.fn