Knight school Ответов: 1

Проблемы со временем раскадровки Wpf


Привет,
У меня есть раскадровка, на которой работает Point3DAnimation с длительностью в Helix3D, но она не делает никакой разницы в продолжительности, она всегда воспроизводит одну и ту же скорость (очень быстро). Нужно ли мне больше устанавливать временные рамки или что-то еще?
 Dim Last_Point As Point3D = New Point3D(0, 0, 0)
        Dim Next_Point As Point3D = New Point3D(0, 0, 10)
		
		
Dim Test As SphereVisual3D = New SphereVisual3D()
        Test.Radius = 5
        Test.Center = New Point3D(0, 0, 0)
        Test.Fill = Brushes.Red
        Test.PhiDiv = 20
        Test.ThetaDiv = 20
        Test.Material = MaterialHelper.CreateMaterial(Brushes.Transparent, Brushes.White, Brushes.Gray, 0.5, 20)
        ViewPort.Children.Add(Test)
		

 Move_Points.From = Last_Point
            Move_Points.To = Next_Point
            Move_Points.AutoReverse = False
            Move_Points.Duration = TimeSpan.FromSeconds(10)


     
            Move.Children.Add(Move_Points)
            Storyboard.SetTarget(Move_Points, Test)
            Storyboard.SetTargetProperty(Move_Points, New PropertyPath(SphereVisual3D.CenterProperty))
			
			
			
            Move.Begin()
			
			Move.Children.Remove(Move_Points)
			
			
			'Loop to next point


Я хотел бы загрузить массив точек с их собственной длительностью в качестве полной раскадровки, но WPF очень новый и отличается. Так что я очень зеленый к этому & мне все еще приходится использовать VB-код. Может быть, шаг за шагом.

Это мои глаза должны играть в течение 10 секунд и перемещать "тест" по оси Z на 10 единиц. Он перемещается на 10 единиц по оси Z, но со скоростью света. Я перепробовал все, что смог найти (по крайней мере, то, что смог понять).
Заранее спасибо

Что я уже пробовал:

Я попробовал установить соотношение и попытался установить продолжительность на раскадровке (только для чтения тупик). Я также добавил обновление этикетки, чтобы замедлить его. Который работал, но был нерегулярным результатом (не правильным способом, но был отчаянным), так как он просто связывал вещь и был прерывистым. Я не могу избавиться от мысли, что это ошибка раскадровки, но я могу ошибаться

1 Ответов

Рейтинг:
0

Gerry Schmitz

Ниже показано, как установить длительность в коде на пять секунд.

myDoubleAnimation.Длительность = новая длительность(TimeSpan.FromSeconds(5));

Обзор анимации - WPF | Microsoft Docs[^]


Knight school

Спасибо. Это решило проблему времени, но проблема материализовалась как следующий ход, не дожидаясь окончания первого/последнего хода. Я ее решила с DoEvent (или как суб диспетчеру), который я думаю, является использование памяти, но работает. Проблема, которая у меня сейчас есть, заключается в том, что перемещение сферы было тестом, но мне нужно переместить Modelvisual3D, который был составлен из geometrymodel3D

Прежде чем я начал работать с анимацией, я использовал это, чтобы переместить ее точка в точку, но я не могу разработать код для анимации, как это делается для 2 разных вещей.

То, что я использовал, чтобы сделать:-
Rev_Model_Tool1.Transform = New TranslateTransform3D(X, Y, Z)
Rev_Tool1.Содержание = Rev_Model_Tool1


И Дуэнвент, который я использовал, чтобы оттянуть следующий ход
Пока Не Двигаться.GetCurrentTime.TotalMilliseconds >= промежуток времени.FromMilliseconds(Sim_Line_Time).TotalMilliseconds

Функция doevents()
Петля

Функция Doevents Публичных Суб ()
Тусклый кадр как новый DispatcherFrame()
Диспетчер.CurrentDispatcher.BeginInvoke(DispatcherPriority.Фон, новый DispatcherOperationCallback(AddressOf ExitFrame), кадр)
Диспетчер.PushFrame(рамка)
Конец Подводной Лодки


Можете ли вы дать мне какое-либо руководство или направление (есть много примеров ротации, но ничего подобного)?