Xamarin/WPF与变化结合



我正在创建一个纸牌游戏,我有CardModel和DeckModel。标准的东西。我在这里用简化的代码做了一个总结。

public class CardModel : INotifyPropertyChaned
{
// all memebers with get, set implementing with NotifyPropertyChanged()
public int Strength;
public Color BackSide;
//etc 
}
public class DeckModel : INotifyPropertyChaned {
// all memebers with get, set implementing with NotifyPropertyChanged()
public ObservableCollection<CardModel> Cards;
public void InsertFront(CardModel c);
public void InsertBack(CardModel c);
public CardModel TakeFromTop();
public void Shuffle();
}

游戏有不同的牌堆(牌组(,其中一张牌被拿走,另一张牌则未被分拣。例如,玩家的手牌也是一副牌。我们只是使用不同的UI组件来在屏幕上显示不同的内容。

后端已经由另一个人编码,他按照您的期望执行所有逻辑,例如:

public void UserRequestNewCard()
{
CardModel c = MainDeck.TakeFromTop();
PlayerHand.InsertFront(c);
}

现在我需要做UI。我创建了名为CardViewer和DeckViewer的控件,并绑定到属性,比如Cards。数牌。一切都像一种魅力。我看到当取牌或加牌时,数字会上下浮动。类似:

<ContentView xmlns:blablabla
x:Class="MyGame.DeckViewer"/>
<Frame blablba
<Label Text="{Binding Cards.Count}"/>
/>
/>
public partial class DeckViewer : ContentView, INotifyPropertyChanged
{
public Deck Cards {get; set;}
public DeckViewer() => InitializeComponent();
public Bind(DeckModel deck)
{
this.Bindingcontest= deck; 
}
}

但是。。

我如何从UI中检测到一张卡片正在从一个卡片组转移到另一张卡片组,这样我就可以在实际更改组件内容之前制作一个动画,显示一张卡片或一个盒子从a移动到B??

正如Jason所建议的,当你参与从一个甲板到另一个甲板的操作时,你可以提前封装一张牌移动的动画,然后在每次方法中有牌移动时调用这个动画方法。这将看起来更优雅。

有关如何使用它,请参阅:https://learn.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/animation/

最新更新