Создание карточной игры, и когда игра начинается, на карту раздаются 5 карт. При использовании раскадровки карта переходит из колоды в позицию 0-4 соответственно. Существует 5 историй, по одной на каждые 5 позиций.
История вызывается из цикла for, который:
- получить новую карту из колоды.
- Запустите соответствующую историю.
- Показать новую карту (настоящую, а не ту, которая идет из колоды).
- Сброс карты, исходящей из колоды, в исходное положение.
Проблема в том, что воспроизводится только последняя история, вызванная из цикла for. Если я изменяю номер цикла вхождения, истории работают для всех позиций, но всегда играют только последнюю вызванную.
<Page.Resources>
<Storyboard x:Name="sDeckToHandPositionOne" TargetName="HandPositionOne">
<DoubleAnimation Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.X)" To="0" Duration="0:0:1"/>
<DoubleAnimation Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.Y)" To="0" Duration="0:0:1"/>
</Storyboard>
<Storyboard x:Name="sDeckToHandOne" TargetName="HandPositionOne">
<DoubleAnimation Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.X)" To="0" Duration="0:0:1"/>
<DoubleAnimation Storyboard.TargetProperty="(Image.RenderTransform).(TranslateTransform.Y)" To="0" Duration="0:0:1"/>
</Storyboard>
</Page.Resources>
RunDeckToHandStory(string target) {
string myStory = "sDeckToHandPositionOne";
Storyboard story = (Storyboard)UI.Ctrl.Resources[myStory] as Storyboard;
var moveX = (DoubleAnimation)story.Children[0];
var moveY = (DoubleAnimation)story.Children[1];
moveX.To = ImgHandCoordinates[Position][target] - ImgHandCoordinates[DeckOfCards][0];
moveY.To = ImgHandCoordinates[Position][target] - ImgHandCoordinates[DeckOfCards][1];
story.Begin();
}
For (i=0; i<5; i++) {
int targetHandPosition = i;
newCard = GetNewCardFromDeck();
RunDeckToHandStory(targetHandPosition);
DisplayNewCard(targetHandPosition, newCard);
ResetDeckCardPosition();
}
примечание: это пример, он может содержать опечатку.