Где я могу изучить этот расширенный код поведения? - PullRequest
0 голосов
/ 22 мая 2011

Недавно я столкнулся с поведением Пита Блуа по имени Взрыв.Это ссылка: -

http://blois.us/blog/2009/07/explode.html

Когда вы нажимаете на сетку, сетка просто взрывается, как настоящий 3D-эффект, даже если Silverlight не имеет настоящего 3D-эффекта.

Я изучил код, но не смог понять основную логику поведения.Кто-нибудь может объяснить мне, что делает функция PrepareShards, ApplyForce?Также какова цель класса Shards?Я думаю, что он пытается смоделировать точку, в которой есть X, Y и Z. Я изучал код в течение 1/2 часа, но никак не мог понять, что он делает.Я знаю, что мне не нужно понимать логику этого.Но что, если я захочу создать такие продвинутые эффекты, как этот?Всегда хорошо изучать, что происходит под капотом.Кто-нибудь написал сообщение в блоге, объясняющее, что это за код или какая-либо книга, где автор преподает этот тип реальных вещей?Или, если у вас есть время, вы можете объяснить мне, что он делает?

Заранее спасибо:)

1 Ответ

5 голосов
/ 22 мая 2011

Автор дает вам код, но он не комментируется.Это превращает его в головоломку!

Этот код работает так:

  • Это Behavior с использованием System.Windows.Interactivity
  • Поведение привязано в XAML к элементу, который вы хотите взорвать
  • Explode перехватывает события мыши, чтобы он знал положение мыши при нажатии
  • В StartExplode сначала вызывается PrepareShards
  • PrepareShards создает Popup, который содержит Grid, который содержит матрицу Rectangle элементов
  • Новый Popup выглядит точно так же, как оригинал, но это неболее интерактивный: это фальшивка
  • «скрывает» оригинальный интерактивный элемент, устанавливая его Opacity в ноль
  • A Shard - это обертка вокруг каждого Rectangle для отслеживания егопозиция и анимация
  • ApplyForce вызывается для анимации всех прямоугольников

Что делает ApplyForce?Физика.Это просто формулы.

Так что это всего лишь сочетание фальшивой и умной 2D и 3D графики.Как только вы поймете общую структуру его работы, отдельные шаги станут менее пугающими: просто выясните, как заставить API делать то, что вы хотите.

Например, автору необходимо преобразовать крошечныйобласть сетки (2, 3) исходного элемента интерактивного каркаса в растровое изображение и нарисуйте его на соответствующем прямоугольнике в сетке.После отрисовки, из-за природы графической подсистемы с сохраняемым режимом, вам больше не нужно беспокоиться о ней.

Подобные эффекты нелегко написать, но они также не невозможны, и их может быть много.весело.Вы определенно научитесь многим методам, которые будут вам полезны, когда будете писать другие, менее «бесполезные» приложения!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...