繁体   English   中英

根据WP8 App中的方向按钮移动对象

[英]Moving an object according to the direction button in WP8 App

我正在尝试根据方向按钮上,左,右,下移动对象

我将保证金属性设置为:-

    img.Margin = new Thickness(l, t, r, b); //L T R B

我正在根据所需的所需移动来增加/减少这些值。

我可以通过click事件移动对象。 但是,无论何时为用户按下并按住按钮,我都想沿所需方向移动对象。 一旦用户释放按钮,运动也应停止。

我尝试使用hold事件,但是该操作执行一次然后停止。

在另一次尝试中,我尝试循环我的语句,但该应用程序停顿了。

请帮我。 谢谢!

编辑:-

我处理了ManipulationStarted,ManipulationDelta,ManipulationCompleted事件。

现在,只要按住按钮,就可以移动对象。 但是,我面临的新问题是必须不断保持手指在屏幕上移动才能执行动作。

向上按钮(沿垂直方向移动对象的按钮)的代码为:-

    public double l = 0.0, t = 0.0, r = 0.0, b = 0.0;
    public void move()
    {
        img.Margin = new Thickness(l, t, r, b); //L T R B
    }

    private void up_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
    {

    }

    private void up_ManipulationDelta(object sender, ManipulationDeltaEventArgs e)
    {
        t = t + 1.0;
        move();
    }

    private void up_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
    {

    }

我不确定此方法是否正确。 劝告。 谢谢。

您应该使用ManipulationStartedManipulationCompleted事件。 它们适用于此处所述的“ TapHold手势: https : //msdn.microsoft.com/zh-cn/library/windows/apps/ff426933(v=vs.105).aspx

更新

为了正确检测敲击的开始和结束,我建议使用MouseEnterMouseLeaving事件。 这里有一个示例,显示了我如何向下移动一个对象。 当前这是屏幕中央的正方形:

<Grid x:Name="objectToMove" Background="red" Height="100" Width="100">
    <Grid.RenderTransform>
        <TranslateTransform x:Name="verticalTransform" Y="0" />
    </Grid.RenderTransform>
</Grid>

后面的代码:

AutoResetEvent autoEvent = new AutoResetEvent(true);

System.Threading.Timer dt;

private void toggle_MouseEnter(object sender, MouseEventArgs e)
{
    dt = new System.Threading.Timer(new TimerCallback(MoveFunct), autoEvent, 0, 1);
}

private void MoveFunct(Object stateInfo)
{
    Deployment.Current.Dispatcher.BeginInvoke(() => { verticalTransform.Y += 3; });
}

private void toggle_MouseLeave(object sender, MouseEventArgs e)
{
    dt.Dispose();
}

请注意, Timer构造函数的最后一个参数包括刻度之间的间隔。 同样在MoveFunct函数内部,我正在调用Dispatcher方法,否则它将无法访问UI线程。 我认为在示例中,我使用了TranslateTransform ,它优于Margin操作,因为它需要更新整个元素的可视树。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM