【求助】DoubleAnimation的第二次运行问题
vb.net吧
全部回复
仅看楼主
level 13
sscs 楼主
设计了一个滑动页面,用Manipulation获取鼠标移动量并赋值给RenderTransform的TranslateX。
在ManipulationCompleted时开始播放相应动画,使滑动页面自动靠向右侧或左侧。
第一次正常,数字是TranslateX的值,如图
放开鼠标后sb2动画开始,滑动页面移向右侧,再将页面拖回左侧(会触发sb1),进行第二次向右拖动时,发现TranslationX的值会变化,放开鼠标后会自动靠边,但是放开前页面不会跟着鼠标移动了。如图
代码:
Public SwitchRecBack As Boolean = False
Private Sub RecGoBack_ManipulationDelta(sender As Object, e As ManipulationDeltaRoutedEventArgs) Handles RecGoBack.ManipulationDelta
Dim del As Double = e.Cumulative.Translation.X
If del > 100 Then
SwitchRecBack = True
End If
If SwitchRecBack AndAlso del >= 0 Then
pg2Trans.TranslateX = del
tbout.Text = pg2Trans.TranslateX
End If
End Sub
Private Sub RecGoBack_ManipulationCompleted(sender As Object, e As ManipulationCompletedRoutedEventArgs) Handles RecGoBack.ManipulationCompleted
Dim del As Double = e.Cumulative.Translation.X
If del > 100 Then
sb2.Begin()
Else
sb1.Begin()
End If
SwitchRecBack = False
End Sub
XAML:
<Grid Background="White" >
<Grid.Resources >
<Storyboard x:Name="sb1" >
<DoubleAnimation To="0" EnableDependentAnimation="True" Duration="0:0:0.2" Storyboard.TargetName="pg2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" />
</Storyboard>
<Storyboard x:Name="sb2" >
<DoubleAnimation To="450" EnableDependentAnimation="True" Duration="0:0:0.2" Storyboard.TargetName="pg2" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" />
</Storyboard>
</Grid.Resources>
<Grid x:Name="pg1" Backgound="DarkBlue" />
<Grid x:Name="pg2" Background="White" RenderTransformOrigin="0.5,0.5" >
<Grid.RenderTransform>
<CompositeTransform x:Name="pg2Trans" TranslateX="0"/>
</Grid.RenderTransform>
<TextBlock x:Name="tbout" Text="" FontSize="24" />
<Rectangle x:Name="RecGoBack" Fill="#7F6495ED" Width="24" HorizontalAlignment="Left" ManipulationMode="All" />
</Grid>
2017年01月15日 16点01分 1
level 1
我也遇到了相同问题,
我注册了鼠标拖动一个grid的TranslateTransform属性,一切完美,拖动很好.
然后用动画改变这个grid的YProperty,还是很好.
但是,当执行一次动画以后,鼠标纵向拖动失效.只能拖动横坐标,Y失效了.
不知道是不是未注销动画产生的?
YProperty属性被占用了?动画执行完后台不会自动释放?
2017年01月18日 09点01分 3
我找到了这篇:https://www.codeproject.c[呵呵]om/Tips/146505/WPF-Storyboard-animation-locks-properties-it-s-ani 不知道有没有用,之后研究研究[呵呵]
2017年01月18日 10点01分
回复 天韵骄子 : WPF有些东西还是跟UWP不一样的。 .
2017年01月19日 03点01分
level 13
一个线程尝试让主线程的值变小,另一个线程尝试让主线程的值变大。结果是形成死锁。
_
2017年01月18日 13点01分 4
N2叔叔请问批处理工具用什么语言写好?我打算自己写一个NCLR,NCGR,NCER的转换工具,现在纠结该用什么语言写,格式的源码是C#写的Tinke里面拿的。
2017年01月18日 17点01分
回复 lwyx2014 : 你自己决定。我不知道你用什么语言开发效率更高。如果我要写这种软件,肯定是为了做用户界面方便而选用VB 15。 .
2017年01月19日 02点01分
@Nukepayload2 批处理拿c++或者c#写必须按控制台应用程序来写吗?
2017年01月19日 04点01分
回复 lwyx2014 : 不是 _
2017年01月19日 04点01分
level 13
我看了一下截图,发现一个细节,就是你做的是UWP应用。UWP上的动画最好用合成器做。代码示例:http://go.microsoft.com/fwlink/?LinkId=761166
.
2017年01月19日 03点01分 9
level 13
一楼代码我只看到开始故事版,没看到停止。要取消动画,一定要停止。
.
2017年01月19日 03点01分 10
好的谢谢N2老师[哈哈]
2017年01月19日 07点01分
1