gpt4 book ai didi

c# - 正确/不正确地使用委托(delegate)来实现可扩展性

转载 作者:太空狗 更新时间:2023-10-29 20:37:15 25 4
gpt4 key购买 nike

我试图为我的 GUI 库的用户提供不受限制的输入/输出过渡效果自定义,同时仍然保持简单性/防止误用(当控件进入或退出 View 时)。

为此,我向 Control 类添加了一个委托(delegate),它将采用 Control 引用和转换完成百分比,以便用户能够以他想要的任何方式平滑地转换控件的位置/不透明度,基于给定的百分比。他所要做的就是在控制入口/导出之前订阅一个转换函数。

但是,我意识到仅使用当前完成百分比来转换/动画控件是不可能的,因为您还必须存储和比较控件的初始位置。
为了使这种存储要求显而易见,我是否应该强制使用委托(delegate)仿函数?

如果是这样,我该如何以简约/干净的方式做到这一点?


欢迎提出另一种允许用户应用自定义过渡动画的方法!

最佳答案

如果我对你的理解是正确的,你的控件调用动画(计算)委托(delegate)(不时地,可能在每一帧上)并通过过渡竞争百分比。动画委托(delegate)然后计算并将平移和位置返回/应用到控件。这是正确的吗?

假设以上是正确的,有几种解决方案:

  1. 仅对位置和不透明度设置动画时:

    除了竞争百分比,您还必须在调用委托(delegate)时发送控件位置和不透明度的初始状态。必须在转换开始时记住初始状态,并在每次调用中将其发送到委托(delegate)中。

  2. 一般情况下为任意属性设置动画时:

    除了竞争百分比,您还提供状态属性(对象类型或更好的字典)。此 State 属性完全由委托(delegate)及其动画逻辑控制。

    对于您的 Control,State 属性没有任何语义或意义。您的控件只能在后续调用委托(delegate)之间保留 State 属性的值。

    总而言之,Delegate 在第一次调用时用初始值填充 State,在后续调用中使用这些值 - 做任何它想做的事。 Delegate 还将计算值应用于 Control。请注意,所有可以在委托(delegate)中使用的属性都必须是公共(public)的。

关于c# - 正确/不正确地使用委托(delegate)来实现可扩展性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10669984/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com