最近,我遇到了Pete Blois的行为Explode。这是链接:-
http://blois.us/blog/2009/07/explode.html
当您单击网格时,即使Silverlight没有真正的3D效果,网格也会爆炸,看起来像真实的3D效果。
我研究了代码,但无法获得行为的核心逻辑。有人可以向我解释PrepareShards,ApplyForce的功能是什么吗?另外,碎片类的目的是什么?我认为它正在尝试模拟一个具有X,Y和Z的点。我研究了1/2小时的代码,但完全无法理解它在做什么。我知道我不需要了解其背后的逻辑。
但是如果我想创建一些高级效果呢?研究内幕到底是怎么回事。有没有人写博客文章来解释这段代码是什么,或者是作者教这类现实生活的书?或者,如果大家有时间,您可以解释一下我在做什么吗?
作者为您提供了代码,但未对其进行评论。这变成一个难题!
此代码的工作方式是:
Behavior
的Behavior
System.Windows.Interactivity
钩住鼠标事件,以便单击时知道鼠标的位置Explode
中,它首先调用StartExplode
PrepareShards
创建一个PrepareShards
,其中包含一个Popup
,其中包含一个Grid
个元素的矩阵Rectangle
看起来和原始的完全一样,但是不再是交互式的:它是伪造的Popup
设置为零来“隐藏”原始交互元素Opacity
是每个Shard
的包装,以跟踪其位置和动画Rectangle
被称为动画所有矩形ApplyForce
在做什么?物理。这只是公式。
因此,这只是伪造和巧妙的2D和3D图形的组合。一旦了解了其工作原理的总体结构,各个步骤就不再那么艰巨:只需弄清楚如何使API来完成您想做的事情即可。
例如,作者需要将原始交互式框架元素的微小网格区域(2、3)转换为位图图像,并将其绘制到网格中的相应矩形上。一旦绘制,由于图形子系统的保留模式性质,就不必再担心了。
这样的效果不容易编写,但也不是没有可能,它们可能会很有趣。您肯定会学到很多技巧,这些技巧将在编写其他一些“花哨的”应用程序时为您提供良好的服务!