【问题标题】:Where can I learn this type of advanced behavior code?我在哪里可以学习这种高级行为代码?
【发布时间】:2011-05-22 16:28:40
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 你能发布你想要解释的代码,这样人们就不必去寻找它了吗?干杯
  • @WestDiscGolf:我想我已经在上面提到了我无法理解的部分。干杯!
  • 我目前无法访问此链接。

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


【解决方案1】:

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

这段代码的工作方式是:

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

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

所以这只是伪造和巧妙的 2D 和 3D 图形的结合。一旦您了解了其工作原理的整体结构,各个步骤就不那么令人生畏了:只需弄清楚如何让 API 完成您想做的事情。

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

这样的效果不容易写,但也不是不可能的,而且会很有趣。在编写其他不太“花哨”的应用程序时,您一定会学到很多对您有用的技术!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2011-04-02
    相关资源
    最近更新 更多