[索引页]
[源码下载]


游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]



作者:webabcd


介绍
使用 Silverlight 2.0(c#) 开发一个趣味钢琴


玩法
打开音箱,从左侧列表选择要挑战的乐谱,右侧会出现对应的乐谱提示动画,等按键提示移动到目标区后敲击键盘上对应的按键


在线DEMO
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]


思路
1、添加多个MediaElement控件,循环使用,以达到同时播放多个音阶的效果
2、提示按键模块分3组动画,分别为提示部分、目标部分和离开部分,进入目标区和离开目标区都要触发对应的事件,以使外部判断用户是否按照提示正确地敲击了按键


关键代码
1、钢琴音阶播放器
ScalePlayer.xaml.cs

游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]using System;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Collections.Generic;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Linq;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Net;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Controls;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Documents;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Input;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Media;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Media.Animation;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Shapes;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
namespace YYPiano.Controls.Parts



2、按键提示动画
AnimationKey.xaml

游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]<UserControl x:Class="YYPiano.Controls.Parts.AnimationKey"
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]    xmlns
="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]    xmlns:x
="http://schemas.microsoft.com/winfx/2006/xaml">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]    
<Canvas>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<!--3个椭圆,目标区,按键动画进入该区域后敲击则为有效敲击-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<Ellipse x:Name="target" Width="80" Height="80" Stroke="#F80" Fill="Transparent" StrokeThickness="1" Canvas.Left="0" Canvas.Top="250" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<Ellipse x:Name="target2" Width="80" Height="80" Stroke="#F80" Fill="Transparent" StrokeThickness="1" Canvas.Left="120" Canvas.Top="250" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<Ellipse x:Name="target3" Width="80" Height="80" Stroke="#F80" Fill="Transparent" StrokeThickness="1" Canvas.Left="240" Canvas.Top="250" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<!--提示按键-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<Border x:Name="container" BorderBrush="Gray" BorderThickness="1" Width="50" Height="50" CornerRadius="50" Canvas.Left="135" RenderTransformOrigin="0.5, 0.5">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<TextBlock x:Name="key" TextAlignment="Center" VerticalAlignment="Center" FontSize="40" FontWeight="Bold">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
</TextBlock>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<Border.RenderTransform>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<TransformGroup>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                    
<RotateTransform x:Name="rt" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                    
<TranslateTransform x:Name="tt" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                    
<ScaleTransform x:Name="st" ScaleX="0.3" ScaleY="0.3" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
</TransformGroup>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
</Border.RenderTransform>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
</Border>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
<Canvas.Resources>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<!--主动画(缓冲提示)-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<Storyboard x:Name="mainAni" Completed="mainAni_Completed">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<!--坐标-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimation x:Name="targetX" From="0" To="0" Duration="0:0:4" Storyboard.TargetName="tt" Storyboard.TargetProperty="X" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimation From="0" To="250" Duration="0:0:4" Storyboard.TargetName="tt" Storyboard.TargetProperty="Y" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<!--旋转-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="rt" Storyboard.TargetProperty="Angle" RepeatBehavior="1x" >
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                    
<SplineDoubleKeyFrame Value="366" KeySpline="0.1,0 0.2,0.95" KeyTime="0:0:4" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
</DoubleAnimationUsingKeyFrames>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<!--缩放-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="st" Storyboard.TargetProperty="ScaleX">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                    
<SplineDoubleKeyFrame Value="1" KeySpline="0.1,0 0.3,0.8" KeyTime="0:0:4" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
</DoubleAnimationUsingKeyFrames>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="st" Storyboard.TargetProperty="ScaleY">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                    
<SplineDoubleKeyFrame Value="1" KeySpline="0.1,0 0.3,0.8" KeyTime="0:0:4" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
</DoubleAnimationUsingKeyFrames>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
</Storyboard>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<!--进入目标区后的动画-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<Storyboard x:Name="insideAni" Completed="insideAni_Completed" Duration="0:0:0.4">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimation To="310" Storyboard.TargetName="tt" Storyboard.TargetProperty="Y" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
</Storyboard>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<!--离开目标区后的动画-->
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
<Storyboard x:Name="outsideAni">
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimation To="400" Storyboard.TargetName="tt" Storyboard.TargetProperty="Y" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]                
<DoubleAnimation To="0" Storyboard.TargetName="container" Storyboard.TargetProperty="Opacity" />
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]            
</Storyboard>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]        
</Canvas.Resources>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]    
</Canvas>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
</UserControl>
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]


AnimationKey.xaml.cs

游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]using System;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Collections.Generic;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Linq;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Net;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Controls;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Documents;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Input;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Media;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Media.Animation;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Shapes;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
namespace YYPiano.Controls.Parts



3、乐谱提示动画
AnimationMusicBook.xaml.cs

游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]using System;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Collections.Generic;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Linq;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Net;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Controls;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Documents;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Input;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Media;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Media.Animation;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Windows.Shapes;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using YYPiano.Controls.Parts;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
using System.Threading;
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
游戏人生Silverlight(2) - 趣味钢琴[Silverlight 2.0(c#)]
namespace YYPiano.Controls



OK
[源码下载]

相关文章:

  • 2021-11-16
  • 2022-12-23
  • 2021-10-08
  • 2021-07-22
  • 2021-11-03
  • 2021-12-25
  • 2021-08-13
猜你喜欢
  • 2021-08-18
  • 2021-10-02
  • 2021-07-18
  • 2021-12-19
  • 2022-02-19
  • 2022-02-27
  • 2021-11-20
相关资源
相似解决方案