moveTo移动精灵到目标位置后如何获取精灵坐标

qq_39503367 2017-07-27 09:16:33
各位大神,我用moveTo移动精灵到目标位置后,然后获取当前精灵坐标,显示还是在移动前的位置,然后我把它setposition在目标位置,还是会出错,请问怎么解决?
...全文
2777 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
w775198287 2019-02-15
  • 打赏
  • 举报
回复
引用 12 楼 loni718 的回复:
[quote=引用 11 楼 w775198287 的回复:]
是不是在精灵执行动画的下一行代码就是获取精灵当前位置的?如果是的话,肯定是这样的;因为之心动画需要时间,这是一个过程,二代码执行几乎一瞬间完成了;如果想获取动画完之后的位置,就参考4楼方法即可

确定是在移动后吗,很可能是在runAction的时候就获取坐标了,所以才在开始的位置。在runAction中加入获取坐标的代码
遇到了一样的错,求帮忙看看, 获得的还是旧的坐标,除非自己setposition
是这样设置么?
CCCallFunc* callFunc = CCCallFunc::create(this, SEL_CallFunc(&Ball::getballxy));
CCSequence * sequence = CCSequence::create(moveTo, callFunc, NULL);//构造一个动画序列
runAction(sequence);

void Ball::getballxy()
{
return _ballsp->getPosition();
}[/quote]runAction(sequence);这个action是那个节点执行的,前面应该有这个节点吧,根据你的代码推测应该是_ballsp这个节点。如果_ballsp没有执行runAction(sequence);那么它的位置肯定没有发生改变的。你试试runAction(sequence);改为ballsp->runAction(sequence);在执行看看
loni718 2019-01-15
  • 打赏
  • 举报
回复
引用 11 楼 w775198287 的回复:
是不是在精灵执行动画的下一行代码就是获取精灵当前位置的?如果是的话,肯定是这样的;因为之心动画需要时间,这是一个过程,二代码执行几乎一瞬间完成了;如果想获取动画完之后的位置,就参考4楼方法即可

确定是在移动后吗,很可能是在runAction的时候就获取坐标了,所以才在开始的位置。在runAction中加入获取坐标的代码
遇到了一样的错,求帮忙看看, 获得的还是旧的坐标,除非自己setposition
是这样设置么?
CCCallFunc* callFunc = CCCallFunc::create(this, SEL_CallFunc(&Ball::getballxy));
CCSequence * sequence = CCSequence::create(moveTo, callFunc, NULL);//构造一个动画序列
runAction(sequence);

void Ball::getballxy()
{
return _ballsp->getPosition();
}
w775198287 2018-05-23
  • 打赏
  • 举报
回复
是不是在精灵执行动画的下一行代码就是获取精灵当前位置的?如果是的话,肯定是这样的;因为之心动画需要时间,这是一个过程,二代码执行几乎一瞬间完成了;如果想获取动画完之后的位置,就参考4楼方法即可
生命练习生123 2018-02-06
  • 打赏
  • 举报
回复
3.x后我记得获取函数变了x:getpositionX(),x:getpositionY(),你看下这样可以吗
邻家大哥呀 2018-02-02
  • 打赏
  • 举报
回复
引用 8 楼 z153300230 的回复:
你肯定是在移动前就获取了精灵坐标,cocos底层移动精灵的原理就是每帧设置精灵的位置,不可能出现移动后getPosition是移动前坐标的
会不会你的获取当前位置的精灵对象是移动之前的,查看下他们的先后顺序
z153300230 2017-12-12
  • 打赏
  • 举报
回复
你肯定是在移动前就获取了精灵坐标,cocos底层移动精灵的原理就是每帧设置精灵的位置,不可能出现移动后getPosition是移动前坐标的
Windgodc 2017-09-05
  • 打赏
  • 举报
回复
x:runaction(cc.seq(cc.moveTo(x,x),cc.callfunc(fcuntion () print x:getposition() end)));
程老师2088 2017-08-30
  • 打赏
  • 举报
回复
其实你在决定要移动多少的时候,就知道目标的位置了吧
mzzandlss 2017-08-22
  • 打赏
  • 举报
回复
代码贴一下,移动后还是以前的坐标?不可能吧
第一本座 2017-08-17
  • 打赏
  • 举报
回复
确定是在移动后吗,很可能是在runAction的时候就获取坐标了,所以才在开始的位置。在runAction中加入获取坐标的代码
立志学贯中西 2017-08-03
  • 打赏
  • 举报
回复
代码和错误贴一下
continueforever 2017-07-28
  • 打赏
  • 举报
回复
你需要写个动作序列sequence,执行完moveto之后执行个回调函数,在回调函数中获取或者设置你需要的精灵坐标
qq_39503367 2017-07-27
  • 打赏
  • 举报
回复
各位大神 求告知,感谢感谢万分感谢!

721

社区成员

发帖
与我相关
我的任务
社区描述
Cocos2d-x相关内容讨论专区
社区管理员
  • Cocos2d-x
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧