Texture - 智能的预加载机制

智能的预加载机制

虽然 Texture 异步并行渲染和计算的能力使其异常强大,但其实 Texture 还有另一个非常重要的特性: 智能预加载.

正如Getting Started中指出的那样,在一个节点容器的上下文之外使用节点是很有利的.这是因为所有节点都具有其当前UI状态的概念。

这个interfaceState属性由一个ASRangeController不断地更新,而所有的容器都在这个ASRangeController内创建和维护.

在容器外部使用的节点不会由任何范围控制器更新其状态。 这有时会导致闪烁,因为节点在被添加到屏幕上后而没有任何警告地渲染。

页面状态范围

将节点添加到滚动或分页界面时,它们通常处于以下范围之一。 这意味着当滚动视图滚动时,它们的界面状态将在它们移动时更新。

一个节点会处于以下范围类型:

界面状态描述
Preload距离 visible 最远的范围, 这是从外部源收集内容的地方,无论是某些API还是本地磁盘。
Display在这个区域, 发生诸如文本光栅化和图像解码的显示任务。
Visible节点被展示在屏幕上, 至少要有一个像素

ASRangeTuningParameters

这些区域的尺寸以"屏幕大小"为单位来测量, 虽然默认的尺寸适用于大部分情况, 但是通过在scrolling node上设置tuning parameters, 你可以非常轻松地调整它们.

在上面滚动集合的可视化视图中, 用户正在向下滚动. 正如你所看到的那样, Leading 方向的范围大小远大于 Trailing 方向的. 如果用户改变了混动方向, 则 Leading 和 Trailing 将会动态交换以使内存状况保持最佳. 这种方式使得你只需要设定leading and trailing sizes, 而不用担心滚动方向的改变.

智能预加载同样适用于多维的情况.

界面状态回调

当用户滚动时,节点在范围内移动并通过加载数据,渲染等来适当地做出反应。您自己的节点子类可以通过实现相应的回调方法轻松地利用这种机制。

Visible 范围
-didEnterVisibleState
-didExitVisibleState
Display 范围
-didEnterDisplayState
-didExitDisplayState
Preload 范围
-didEnterPreloadState
-didExitPreloadState

Just remember to call super ok? ?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值