【问题标题】:AS3 gotoAndStop() on the timeline of a loaded SWFAS3 gotoAndStop() 在加载的 SWF 的时间线上
【发布时间】:2011-09-30 04:48:28
【问题描述】:

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

我想要实现的是确保当用户点击 UP 或 DOWN 时,您滚动到的 SWF 将从头开始播放。

我如何定位如下加载的 SWF 的主时间线并为此调用 gotoAndStop()

var loader:Loader = new Loader();

loader.y = index * 600;

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

addChild(loader);

如果上述方法不可行,实现类似的最可行解决方案是什么?可能就像快速卸载/重新加载 SWF 一样(我只是担心这可能会给我带来潜在的问题,例如点击 UP 或 DOWN 和广告中断之间的连接断开)。

【问题讨论】:

    标签: actionscript-3


    【解决方案1】:

    我在这里遇到的主要问题之一是 content 在实际加载之前是不可访问的(呃),所以首先我们需要在 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 content 属性转换为一个MovieClip 代表加载的SWF的主时间线,允许完全控制它。

    【讨论】:

      【解决方案2】:

      我会使用一个管理器类来跟踪 swfs 和选定的索引。然后你需要引用加载器内容来访问时间线。

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

      【讨论】:

      • 太棒了,您可以将content 属性类型转换为MovieClip,它表示已加载的SWF 的主要时间线?
      • 当然。但是您可以将它作为 MovieClip 引用一次,然后您就不需要再投射它了。像 itemManager.addSWF(1, loader.content as MovieClip);
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-12
      • 1970-01-01
      • 2010-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多