AS3 gotoAndStop()在加载的SWF的时间轴上

时间:2011-09-30 04:48:28

标签: actionscript-3

我正在为NineMSN(demo here)开发一个名为 Filmstrip 的新广告单元,该广告单元基本上垂直加载5个SWF。这些5中只有一个一次可见(除了UP和DOWN转换之间的两个SWF的一部分。

我想要达到的目标是确保当用户点击“向上”或“向下”时,您滚动到的SWF将从头开始播放。

如何定位按照以下方式加载的SWF的主时间轴,并在此处调用gotoAndStop()

var loader:Loader = new Loader();

loader.y = index * 600;

loader.load(
    new URLRequest(_assets["ebMovie" + (index+1)])
);

addChild(loader);

如果无法实现上述目标,那么实现类似目标的最可行解决方案是什么?也许就像快速卸载/重新加载SWF一样(我只是担心这可能会导致我的问题,例如点击向上或向下与广告中断之间的连接断开)。

2 个答案:

答案 0 :(得分:1)

我在这里遇到的一个主要的曲线球是content在实际加载之前无法访问(duh),所以首先我们需要在我们可以做任何事情之前将事件监听器附加到loader.contentLoaderInfo

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _loaderComplete);

现在我们可以在触发函数中使用content

private function _loaderComplete(e:Event):void
{
    // Capture instance of LoaderInfo
    var info:LoaderInfo = e.target as LoaderInfo;

    // Remove triggering listener
    info.removeEventListener(Event.COMPLETE, _loaderComplete);

    // Typecast content to MovieClip
    var timeline:MovieClip = MovieClip(info.loader.content);

    _timelines.push(timeline);
}

上面将typecast内容属性改为MovieClip,代表加载的SWF的主时间轴,允许完全控制它。

答案 1 :(得分:0)

我会使用管理器类来跟踪swfs和所选索引。然后,您需要引用加载程序内容以访问时间轴。

var swfTimeline:MovieClip = loader.content as MovieClip;
swfTimeline.gotoAndPlay(2);