我在哪里可以学习这种类型的高级行为代码

本文关键字:类型 高级行 代码 种类 在哪里 学习 | 更新日期: 2023-09-27 17:57:08

最近我遇到了皮特·布卢瓦(Pete Blois)的行为,名为Explode。这是链接:-

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

当您单击网格时,网格只是爆炸,看起来像真正的3D效果,即使Silverlight没有真正的3D效果。

我研究了代码,但无法获得行为的核心逻辑。谁能解释一下PrepareShards,ApplyForce的功能是什么?还有碎片类的目的是什么?我认为它试图模拟一个具有 X、Y 和 Z 的点。我研究了代码 1/2 小时,但根本无法了解它在做什么。我知道我不需要理解这背后的逻辑。

但是,如果我想创建一些这样的高级效果怎么办?研究引擎盖下发生的事情总是好的。有没有人写过一篇博客文章来解释这个代码是什么,或者作者教这种现实生活的东西的任何书?或者如果你们都有时间,你能解释一下它在做什么吗?

我在哪里可以学习这种类型的高级行为代码

作者给了你代码,但没有注释。 这让它变成了一个谜题!

此代码的工作方式是:

  • 这是一个使用System.Windows.InteractivityBehavior
  • 该行为在 XAML 中附加到要分解的元素
  • Explode挂钩鼠标事件,以便它在单击时知道鼠标位置
  • StartExplode,它首先称PrepareShards
  • PrepareShards创建一个包含GridPopup,该包含Rectangle元素矩阵
  • Popup看起来和原版一模一样,但它不再是交互式的:它是假
  • 它通过将Opacity设置为零来"隐藏"原始交互元素
  • Shard是每个Rectangle周围的包装器,用于跟踪其位置和动画
  • 调用ApplyForce来对所有矩形进行动画处理

ApplyForce在做什么? 物理。 这只是公式。

所以这只是伪造和聪明的2D和3D图形的结合。 一旦你了解了它工作的整体结构,各个步骤就不那么令人生畏了:只是弄清楚如何让 API 做你想做的事情。

例如,作者需要将原始交互式框架元素的微小网格区域(2,3)转换为位图图像,并将其绘制到网格中相应的矩形上。 绘制后,由于图形子系统的保留模式性质,它再也不需要担心了。

像这样的效果不容易写,但它们也不是不可能,它们可以很有趣。 您一定会学到很多技术,这些技术在编写其他不那么"花哨"的应用程序时会很好地为您服务!