#xamarin #cocossharp
#xamarin #cocossharp
Вопрос:
Почему я хочу сделать, это переместить узлы в низ после того, как игрок нажмет на один. Каждый узел должен быть справа от предыдущего.
Если проигрыватель не нажимает слишком быстро, это работает нормально. Но когда игрок быстро нажимает на узлы (до завершения предыдущего перемещения), узлы будут перекрываться, поэтому я сохранил список всех ожидающих и добавил это расстояние до последней позиции, это увеличивает расстояние примерно на 1 пробел до дальнего расстояния.
CCNode node = sender as CCNode;
node.RemoveFromParent();
var pos = holder.GetNextAvailablePosition(); // Finds the position of the furthest right node.
holder.AddChild(node);
var time = .5f;
var scaleBy = .5f;
var nodeSize = 180f;
pos = new CCPoint(pendingNodes.Count * (nodeSize * scaleBy), 0);
var move = new CCMoveTo(time, pos);
var scale = new CCScaleTo(time, scaleBy);
pendingNodes.Push(node);
await node.RunActionAsync(new CCSequence(move, scale, new CCCallFunc(() =>
{
pendingNodes.Pop();
})));
Еще одна вещь, которую мне нужно выяснить, — это как предотвратить изменение положения узла при его повторной установке. Я перепрофилирую узел, чтобы изменить его порядок Z.
Комментарии:
1. Можете ли вы попытаться дождаться завершения процесса или отключить действие щелчка до завершения предыдущего?
2. Это изменило бы пользовательский интерфейс, который я пытаюсь предотвратить