2015-09-29 54 views
0

面临CCSprite定位奇怪的行为。 方案是简单的:更改触摸精灵位置(在屏幕上拖动的项目)。更改CCSprite位置导致从屏幕上消失在屏幕上

private void HandleInput(List<CCTouch> arg1, CCEvent arg2) 
{ 
    base.Position = arg1.Last().LocationOnScreen; 
} 

设置base.PositionLocationOnScreen它只是消失后。


注:cocossharp是著名框架的C#端口,并且是在其结构和实施cocos2d-x因此加入这个标签十分相似。
赞赏任何帮助。

+0

您是否尝试过记录'arg1.Last()LocationOnScreen'?你的基地在哪里? – musikov

+0

位置似乎是合理的(它指向可见屏幕内的坐标)。 –

回答

2

在cocos2d-x个节点相对于他们的父母内容区域定位。

典型地,以定位用衍生的触摸(世界空间)坐标您将使用convertToNodeSpace方法上的父在cocos2d-X小精灵。

在C++,因为cocos2d的-X:

void setSpritePositionWhenTouched(Node* sprite, const Vec2& touchPos) 
{ 
    auto parent = sprite->getParent(); 
    auto pos = parent->convertToNodeSpace(touchPos); 
    sprite->setPosition(pos); 
}