讨论广场 问答详情
实现占位结点AdNodeController,它继承自NodeController,其中的initAd()方法通过this.adNode.build()接口将广告组件添加到rootNode上。怎么理解这个概念呢?
guorongcui 2026-06-28 00:06:52
34 评论 分享
harmonyos

当NodeContainer进行绘制时,会调用makeNode()方法,将构建好的rootNode返回实现组件上树。有没有相关介绍这个问题的呢?

34 评论 分享
写回答
全部评论(1)

加载广告布局:getAdNodeController()方法是通过queryAdById()模拟广告类型信息的获取,并在完成信息获取后构建相应的NodeController。

export const getAdNodeController = (uiContext: UIContext, id: string): AdNodeController | undefined => {
  let baseNode = new AdNodeController();
  nodeMap.set(id, baseNode);
  baseNode.initAd(uiContext, id, queryAdById(id));
  return nodeMap.get(id);
}

function queryAdById(id: string): string {
  if (Number(id) % 2 === 0) {
    return 'pic';
  } else {
    return 'video';
  }
}

    加载广告布局:getAdNodeController()方法是通过queryAdById()模拟广告类型信息的获取,并在完成信息获取后构建相应的NodeController。

    export const getAdNodeController = (uiContext: UIContext, id: string): AdNodeController | undefined => {
      let baseNode = new AdNodeController();
      nodeMap.set(id, baseNode);
      baseNode.initAd(uiContext, id, queryAdById(id));
      return nodeMap.get(id);
    }
    
    function queryAdById(id: string): string {
      if (Number(id) % 2 === 0) {
        return 'pic';
      } else {
        return 'video';
      }
    }

     

    2026-06-28 00:08:33