2013-06-04 4 views
0

Я работаю над приложением Windows Phone 8. Я использую Storyboard для анимации серии изображений. Он работает нормально, но я хочу вызвать конкретный метод за одну секунду до завершения анимации. Я использую этот код: Есть ли способ сделать то, что я хочу?Анимация с помощью раскадровки Windows phone 8

var storyboard12 = new Storyboard 
     { 
      // RepeatBehavior = RepeatBehavior.Forever 
     }; 
     var animation = new ObjectAnimationUsingKeyFrames(); 
     Storyboard.SetTarget(animation, animationImage); 
     Storyboard.SetTargetProperty(animation, new PropertyPath("Source")); 
     storyboard12.Children.Add(animation); 
     for (int i = 1; i <=16; i++) 
     { 
      var keyframe = new DiscreteObjectKeyFrame 
      { 
       KeyTime = KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(300*i)), 
       Value = String.Format("/Images+Audio/images/animation images/2_Driving-a-car/Drive_background3 ({0}).png", i) 
      }; 
      animation.KeyFrames.Add(keyframe); 
     } 

     DispatcherTimer timer11 = new DispatcherTimer(); 
     timer11.Interval = TimeSpan.FromSeconds(4.1); 
     timer11.Tick += timer11_Tick; 
     timer11.Start(); 


     storyboard12.Begin(); 
     storyboard12.Completed += storyboard12_Completed; 
    } 

    void timer11_Tick(object sender, EventArgs e) 
    { 
     var timer = (DispatcherTimer)sender; 
     timer.Stop(); 
     changeBackgroundImage3(); 
    } 

ответ

1

Вы можете использовать другую раскадровку, которая изменит фон вашего контроля. Такой способ более уместен по причине производительности. И событие DispatcherTimer Tick не будет на 100% упущено после заданного интервала, его можно было бы запустить позже 4.1, если это важно для вас, то это вторая причина использовать раскадровку для изменения фона.

+0

Большое спасибо за ответ. Но проблема в том, что когда мы можем запустить второй раскадровки? – Mohit

+0

Моя проблема в том, что пока я добавляю анимацию раскадровки и хочу вызвать еще одну анимацию раскадровки с последовательностью изображений за одну секунду до завершения первой. – Mohit

+1

Вы можете рассчитать продолжительность первой раскадровки. Например, если продолжительность первого раскадровки составляет 4 секунды, вам необходимо отложить время начала второго раскадровки с 3 секундами. Проверьте свойство * BeginTime * класса Storyboard *. –