0

我们有返回 VPAID 广告的 VAST 标签,我们使用 actionscript3 开发了类似于 OVA 的插件,以便使用我们开发的插件在 adobe 播放器中显示广告。但是每次它都会给出错误

TypeError:错误 #2007:参数 child 必须为非空。

在调试时,它会被初始化、启动并加载,但之后会显示此错误。任何人都可以帮忙吗?提前致谢。

4

1 回答 1

0

如果我没记错的话,通常当你在 actionscript 中开发一些需要加载资产或在 DisplayList 中放置一些东西时Sprite,你必须等待Stage准备好。我通常在Main类(或 .fla 文件中链接的类)中执行此操作,这样代码就知道何时将资产加载到DisplayList

public class Main extends Sprite {
  public function Main():void{
    init();
    if (stage != null){
  addedToStage();
    }else{
      addEventListener(Event.ADDED_TO_STAGE, addedToStage);
    }
  }
  private function addedToStage(e:Event = null):void {
    //entry point
  }
  private function init():void{
    //here you initialize your variables
  }
}

有时Stage会准备好,有时文件有点太重,加载需要时间,所以我们放了一个监听器等待。如果你在本地做,它不会失败,但是你一上线(网站),你就会发现这个差异。

您可以尝试的另一件事是将该 swf(广告)加载到Loader

_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteContentLoaderInfo);

并且在 onCompleteContentLoaderInfo 函数中检查_loader.content;加载后它在技术上是一个潜在的 SWF,因此您可以检查它的属性,并验证它的阶段是否可用(不为空)。

当您在线工作时,如果要加载某些内容,您总是需要检查侦听器,这有时很棘手;也许你已经知道了,但是要检查的第一个监听Stage器非常重要。

于 2014-03-02T00:07:50.747 回答