拖动/滑动滚动屏幕

问题描述:

垂直滚动屏幕的最佳方式是什么?我的游戏将消耗两个屏幕高度,用户应该能够通过简单的拖动或滑动动作在两个屏幕之间移动。背景不平铺,精灵将被放置在它上面。这种屏幕管理的最佳方式是什么?拖动/滑动滚动屏幕

这取决于您是否希望用户能够看到底部屏幕的顶部和底部的一半,或者只有顶部或底部。

您可以尝试将两个屏幕内容放入ScrollViewer,并将ScrollViewer.VerticalScrollbarVisibility设置为False;这将允许用户在“屏幕”之间轻松地拖/滑。

喜欢的东西:

<ScrollViewer VerticalScrollBarVisibility="Hidden"> 
    <my:FirstScreen/> 
    <my:SecondtScreen/> 
</ScrollViewer> 

有一点要考虑将是否要处理用户更换手机的方向,或者是否会锁定手机的肖像/水平方向。我也相信具有不同分辨率的手机最终将被发布,Windows Marketplace中的任何应用程序都需要能够处理全分辨率和半分辨率。

+0

我打算以纵向锁定手机。 处理不同的分辨率不应该是一个问题。 Rob Miles在这里有一篇很好的文章: http://www.robmiles.com/journal/2010/8/15/understanding-windows-phone-orientation-in-xna.html – anonymouse 2010-09-05 07:12:39

+1

这个答案似乎适用于Silverlight,不是XNA。 – 2010-09-05 07:32:34

+0

那就是我正要写的东西。在XNA项目中甚至可以使用通用控件。 – anonymouse 2010-09-05 08:00:34

你在这里问了两个问题。其中的第一个是如何响应触摸手势(如滑动)。 This blog post and associated sample is a good starting point

其中的第二个是如何有两个屏幕。这也很简单。将翻译矩阵(Matrix.CreateTranslate)传递到SpriteBatch.Begin。你想如何做到这一点取决于你。如果您希望两个屏幕的屏幕左上角都有(0,0),请为每个屏幕指定一个平移矩阵,然后向下平移显示屏的高度。 (虽然屏幕不在视图中,但您可以完全跳过绘图。)

当用户滑动时,只需对翻译进行动画处理,以使一个屏幕移出视图,另一个移动到视图中。