最近我遇到了Pete Blois的名为Explode的行为。这是链接: -
http://blois.us/blog/2009/07/explode.html
当您点击网格时,即使Silverlight没有真正的3D效果,网格也会像真正的3D效果一样爆炸。
我研究了代码,却无法获得行为的核心逻辑。任何人都能解释一下PrepareShards的功能是什么,ApplyForce在做什么? Shards课的目的是什么?我认为它试图模拟一个有X,Y和Z的点。我研究了半小时的代码,但却无法完全了解它在做什么。我知道我不需要理解这背后的逻辑。但是,如果我想创建一些像这样的高级效果怎么办?研究引擎盖下的内容总是好的。有没有人写过博客文章,解释这个代码是什么,或者作者教授这类现实生活的东西?或者,如果你们都有时间,你能解释一下它在做什么吗?
提前致谢:)
答案 0 :(得分:5)
作者为您提供了代码,但未对其进行评论。这把它变成了一个谜题!
此代码的工作方式为:
System.Windows.Interactivity
Behavior
Explode
挂钩鼠标事件,以便在点击时知道鼠标位置StartExplode
中,它首先调用PrepareShards
PrepareShards
创建Popup
,其中包含Grid
,其中包含Rectangle
元素矩阵Popup
看起来与原作完全相同,但它不再是互动的:它是假的Opacity
设置为零Shard
是每个Rectangle
周围的包装,以跟踪其位置和动画ApplyForce
来设置所有矩形的动画 ApplyForce
在做什么?物理。这只是公式。
所以这只是伪造和巧妙的2D和3D图形的组合。一旦你理解了它的工作方式的总体结构,各个步骤就不那么令人生畏了:只是弄清楚如何让API做你想做的事。
例如,作者需要将原始交互式框架元素的微小网格区域(2,3)转换为位图图像并将其绘制到网格中的相应矩形上。一旦绘制,由于图形子系统的保留模式特性,它再也不用担心了。
这样的效果不容易写,但它们也不是不可能的,它们可以很有趣。在编写其他不那么“花哨”的应用程序时,你肯定会学到很多能很好地为你服务的技术!