【发布时间】:2009-03-24 18:57:00
【问题描述】:
有没有一种简单的方法可以用操作系统的本机滚动条替换 ScrollPane 滚动条?
如果 Flash 应用程序具有与用户操作系统相同的皮肤,则它们看起来更加集成 - 这并不总是很容易检测到(Vista Aero 与 Classic?)。
你们有没有遇到过这样的 Flash 应用示例?
【问题讨论】:
标签: apache-flex flash actionscript-3 flex3
有没有一种简单的方法可以用操作系统的本机滚动条替换 ScrollPane 滚动条?
如果 Flash 应用程序具有与用户操作系统相同的皮肤,则它们看起来更加集成 - 这并不总是很容易检测到(Vista Aero 与 Classic?)。
你们有没有遇到过这样的 Flash 应用示例?
【问题讨论】:
标签: apache-flex flash actionscript-3 flex3
设置这样的东西将是一项大而肮脏的工作。如果您非常关心操作系统外观集成,那么您最好使用原生浏览器控件而不是 Flash 或其他插件。
可以说,您可以将您的 Flash 应用程序分解为单独的 SWF 模块,并将每个模块放入页面中它们自己的滚动 div 或 iframe 中。然后,您必须通过 ExternalInterface 或 LocalConnection 进行通信才能在 SWF 之间传递数据。就个人而言,我只愿意将其作为对自己的技术挑战来尝试,但我怀疑这是否值得为生产应用程序付出努力。
【讨论】:
出于好奇,我们将滚动窗格组件分离成一个独立的 swf,并在小部件的右侧和底部放置一组两个嵌套的 div。
以垂直滚动条为例,外部 div 设置为滚动窗格的高度,CSS overflow-x 为 hidden,overflow-y 为 auto。然后将子 div 设置为任意宽度,高度等于滚动窗格内容的 px 高度。
浏览器会显示一个适当大小的“滚动手柄”,我们可以快速读取外部 div 上的垂直滚动偏移量,以了解 Flash 滚动窗格的偏移量。水平滚动条使用了相同的技术,并进行了适当的修改。
我们还包含了一些逻辑来根据容器溢出自动隐藏容器。结果非常接近原生操作系统的行为。
虽然这听起来像是一个巨大的黑客攻击,但我们能够广泛部署该解决方案 (scribd.com),而不会出现任何重大问题。
【讨论】:
讨厌这样说,但没有办法做到这一点。您可以使用受操作系统启发的皮肤/主题,但即便如此,用户也有可能使用自定义颜色、大小等修改其外观设置。
【讨论】: