转载自:http://www.longhaiqiang.com/android-cocos2d实现:一个图片围绕一个圆心做圆运动/
实现效果:
public class CCRoundBy extends CCIntervalAction {
boolean turn;// Forward or Reverse round
float startAngle;// default
float radius;// Round circle radius
CGPoint center;// Round circle center point
public boolean isTurn() {
return turn;
}
public void setTurn(boolean turn) {
this.turn = turn;
}
public float getStartAngle() {
return startAngle;
}
public void setStartAngle(float startAngle) {
this.startAngle = startAngle;
}
public float getRadius() {
return radius;
}
public void setRadius(float radius) {
this.radius = radius;
}
public CGPoint getCenter() {
return center;
}
public void setCenter(CGPoint center) {
this.center = center;
}
/** creates the action */
public static CCRoundBy action(float duration,boolean a,CGPoint point, float r) {
return new CCRoundBy(duration, a, point, r);
}
/** initializes the action */
protected CCRoundBy(float duration,boolean a,CGPoint point, float r) {
super(duration);
turn = a;
radius = r;
center = point;
}
@Override
public void start(CCNode aTarget) {
super.start(aTarget);
startAngle = aTarget.getRotation();
if (turn) {
((CCNode)aTarget).setPosition(CGPoint.ccpAdd(center, CGPoint.ccp(-radius, 0)));
}
else {
((CCNode)aTarget).setPosition(CGPoint.ccpAdd(center, CGPoint.ccp(radius, 0)));
}
}
@Override
public void update(float t) {
// XXX: shall I add % 360
float rotate = (startAngle + 360.0f * t );
if (turn) {
rotate *= -1;
}
target.setRotation(rotate);
float fradian = (float) (rotate * Math.PI / 180.0f);
CGPoint pos = CGPoint.ccp(center.x + radius * MathUtils.sin(fradian),
center.y + radius * MathUtils.cos(fradian));
target.setPosition(pos);
}
@Override
public CCIntervalAction reverse() {
boolean result = !turn;
return action(duration, result, center, radius);
}
}
分享到:
相关推荐
该资源主要用于cocos2d-x中Value与json字符串的相互转换,提供从json文件读取为cocos2d::Value,cocos2d::Value写入到文件,cocos2d::Value转换为json字符串,json字符串转换为cocos2d::Value。json字符串转换成cocos...
通过`cocos2d::Sprite::createWithTexture()`函数,传入刚刚创建的纹理,即可得到一个显示图片的精灵。 7. **布局与显示**:将精灵添加到场景(Scene)或层(Layer)中,设置位置、大小和旋转等属性,确保图片在屏幕上...
cocos2d::Scene* HelloWorld::createScene() { auto scene = Scene::create(); auto layer = HelloWorld::create(); scene->addChild(layer); return scene; } ``` 在层中添加精灵: ```cpp Sprite* Hello...
`cocos2d::TMXLayer`类代表地图的一个单独层,而`cocos2d::TMXObjectGroup`则用于处理地图上的对象。 4. **Character Movement**:角色行走的实现通常通过碰撞检测和物理引擎来完成。在Classes文件夹中的源码可能...
在Android平台上,Cocos2D是一个非常流行的2D游戏开发框架,它允许开发者创建高质量的图形和交互式体验。这个“android cocos 2D范例”着重于展示如何利用Cocos2D-Android库来实现游戏功能,特别是针对鼠标点击事件...
void MyLayer::onTouchesMoved(const std::vector<cocos2d::Touch*>& touches, cocos2d::Event* event) { // 获取两个触点的位置 cocos2d::Vec2 touch1Pos = touches[0]->getLocation(); cocos2d::Vec2 touch2Pos...
在Android平台上,Cocos2d-x是一个基于C++的版本,提供了原生的编程接口,同时也支持Java API,方便Android开发者使用。"cocos2d-android jar包全套.zip"这个压缩包包含了在Android上使用Cocos2d开发游戏所需的所有...
virtual bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event); virtual void onTouchMoved(cocos2d::Touch *touch, cocos2d::Event *event); virtual void onTouchEnded(cocos2d::Touch *touch, ...
资源名称:Cocos2d-x实战:JS卷——Cocos2d-JS开发内容简介:本书是介绍Cocos2d-x游戏编程和开发技术书籍,介绍了使用Cocos2d-JS中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台...
在Android平台上,cocos2d-x是其主要实现,而“cocos2d-android-1”可能是该框架的一个特定版本。这个压缩包中的“cocos2d-android-1-doc”文件很可能是该版本的API文档,对于开发者来说是一份非常重要的参考资料。 ...
在Android平台上进行游戏开发时,Cocos2d-x是一个广泛使用的开源2D游戏引擎,它支持多平台,包括iOS、Android、Windows等。本篇将详细介绍如何在Windows XP SP3环境下配置Android Cocos2d-x的开发环境。 首先,我们...
Cocos2d-Android是一个基于Cocos2d-x框架的Android游戏开发引擎,它为开发者提供了在Android平台上构建2D游戏的强大工具集。这个“Cocos2d-Android架包”包含了所有必要的库和资源,使得开发者能够利用Cocos2d-...
《Cocos2d-android.jar:Android游戏开发的关键组件》 在Android游戏开发领域,Cocos2d-x是一个广泛使用的开源游戏引擎,它基于C++,并提供了多种语言接口,包括Java,使得开发者能够轻松地创建跨平台的游戏。本文...
virtual bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event) override { cocos2d::Vec2 touchLocation = touch->getLocation(); // 处理触摸开始的逻辑 return true; // 返回true表示继续监听...
在Cocos2d游戏开发框架中,`CCRoundBy`是一个关键的动作类,它允许你在2D场景中让精灵执行围绕指定圆心的圆形路径运动。这个功能在创建动态效果或者模拟物理现象时非常有用,比如模拟星球轨道、制作旋转的特效等。`...
bool onTouchBegan(cocos2d::Touch *touch, cocos2d::Event *event) { // 记录开始触摸的位置 startTouchPosition = touch->getLocation(); return true; } void onTouchEnded(cocos2d::Touch *touch, cocos2d::...
cocos2d-android游戏引擎是著名游戏引擎cocos2d游戏引擎的Android版。cocos2d-android游戏引擎性能优越、易学、可以进行纯java编程、具有极高的研 究价值、大大的降低了开发者的学习成本。您只需要一台普通配置的...
首先,cocos2d-android是基于C++的cocos2d-x的一个分支,它充分利用了Android的原生API,使得游戏运行更高效、性能更优化。cocos2d-x最初是为iOS平台设计的,但其跨平台特性使得开发者可以轻松地将游戏从iOS移植到...
virtual bool touchBegan(cocos2d:: CCTouch* touch, cocos2d::CCEvent* event); virtual void touchMoved(cocos2d::CCTouch* touch, cocos2d::CCEvent* event); virtual void touchEnded(cocos2d::CCTouch* ...
Cocos2d-x是一个开源的、跨平台的游戏开发框架,广泛应用于iOS、Android、Windows等多个操作系统。本书以C++语言为主要编程语言,提供了丰富的实践案例和源代码,帮助读者深入理解和掌握Cocos2d-x的使用。 在Cocos...