我在哪里可以学习这种类型的高级行为代码
本文关键字:类型 高级行 代码 种类 在哪里 学习 | 更新日期: 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.Interactivity
的Behavior
- 该行为在 XAML 中附加到要分解的元素
-
Explode
挂钩鼠标事件,以便它在单击时知道鼠标位置 - 在
StartExplode
,它首先称PrepareShards
-
PrepareShards
创建一个包含Grid
的Popup
,该包含Rectangle
元素矩阵 - 新
Popup
看起来和原版一模一样,但它不再是交互式的:它是假
的 - 它通过将
Opacity
设置为零来"隐藏"原始交互元素 Shard
是每个Rectangle
周围的包装器,用于跟踪其位置和动画- 调用
ApplyForce
来对所有矩形进行动画处理
ApplyForce
在做什么? 物理。 这只是公式。
所以这只是伪造和聪明的2D和3D图形的结合。 一旦你了解了它工作的整体结构,各个步骤就不那么令人生畏了:只是弄清楚如何让 API 做你想做的事情。
例如,作者需要将原始交互式框架元素的微小网格区域(2,3)转换为位图图像,并将其绘制到网格中相应的矩形上。 绘制后,由于图形子系统的保留模式性质,它再也不需要担心了。
像这样的效果不容易写,但它们也不是不可能,它们可以很有趣。 您一定会学到很多技术,这些技术在编写其他不那么"花哨"的应用程序时会很好地为您服务!