2015-09-29 3 views
0

Столкнувшись с необычным поведением CCSprite позиционированием на экране. Сценарий прост: измените положение спрайта при касании (перетаскивая элемент на экране).Изменение положения CCSprite приводит к исчезновению с экрана

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

После установки base.Position в LocationOnScreen он просто исчезает.


Примечание:cocossharp является C# порт известных рамок и очень похож по своей структуре и реализации в cocos2d-x поэтому добавление этого тега.
Любая помощь приветствуется.

+0

вы пробовали войти 'arg1.Last() LocationOnScreen'.? Где добавлена ​​ваша «база»? – musikov

+0

Расположение кажется разумным (оно указывает на координаты на видимом экране). –

ответ

2

В узлах cocos2d-x расположены относительно области содержимого их родителей.

Обычно, чтобы расположить спрайт в cocos2d-x, используя координату touch (world space), вы должны использовать метод convertToNodeSpace для родителя.

В C++, так как cocos2d-х:

void setSpritePositionWhenTouched(Node* sprite, const Vec2& touchPos) 
{ 
    auto parent = sprite->getParent(); 
    auto pos = parent->convertToNodeSpace(touchPos); 
    sprite->setPosition(pos); 
} 
Смежные вопросы