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

时间:2011-05-22 16:28:41

标签: c# silverlight silverlight-4.0 silverlight-3.0

最近我遇到了Pete Blois的名为Explode的行为。这是链接: -

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

当您点击网格时,即使Silverlight没有真正的3D效果,网格也会像真正的3D效果一样爆炸。

我研究了代码,却无法获得行为的核心逻辑。任何人都能解释一下PrepareShards的功能是什么,ApplyForce在做什么? Shards课的目的是什么?我认为它试图模拟一个有X,Y和Z的点。我研究了半小时的代码,但却无法完全了解它在做什么。我知道我不需要理解这背后的逻辑。但是,如果我想创建一些像这样的高级效果怎么办?研究引擎盖下的内容总是好的。有没有人写过博客文章,解释这个代码是什么,或者作者教授这类现实生活的东西?或者,如果你们都有时间,你能解释一下它在做什么吗?

提前致谢:)

1 个答案:

答案 0 :(得分:5)

作者为您提供了代码,但未对其进行评论。这把它变成了一个谜题!

此代码的工作方式为:

  • 使用System.Windows.Interactivity
  • Behavior
  • 行为在XAML中附加到您要爆炸的元素
  • Explode挂钩鼠标事件,以便在点击时知道鼠标位置
  • StartExplode中,它首先调用PrepareShards
  • PrepareShards创建Popup,其中包含Grid,其中包含Rectangle元素矩阵
  • 新的Popup看起来与原作完全相同,但它不再是互动的:它是假的
  • 通过将其Opacity设置为零
  • 来“隐藏”原始互动元素
  • Shard是每个Rectangle周围的包装,以跟踪其位置和动画
  • 调用
  • ApplyForce来设置所有矩形的动画

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

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

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

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