如何向后和向前循环 Flash 电影的一部分(“乒乓”循环)
Posted
技术标签:
【中文标题】如何向后和向前循环 Flash 电影的一部分(“乒乓”循环)【英文标题】:How to loop part of a Flash movie backward and forward ("ping-pong" loop) 【发布时间】:2013-07-29 13:51:23 【问题描述】:我有一个 Flash 电影,其中包含两个嵌入的 FLV 视频。我想做的是当页面加载时,电影通过两个视频剪辑播放......然后当它到达第二个视频的结尾时,它会切换并反向播放,直到第二个剪辑的开头,然后播放到再次结束 - 基本上是时间线后半部分的“乒乓”循环。
我查看了一些不同的解决方案,但它们都用于按钮并且看起来太复杂了。我希望我想做的事情很简单,只需要几行代码。
这是我目前正在使用的,但它不起作用(我使用 AS 已经很长时间了,所以我确定我错过了一些明显的东西)。第 171 帧是第二个剪辑的开始位置,第 230 帧是影片结束的位置。
function mcPlay(_root, 171)
if (f == 230)
f = _root._totalframes;
_root.onEnterFrame = function()
var cf:Number = this._currentframe;
if (cf == f)
delete this.onEnterFrame;
else if (cf<f)
this.nextFrame();
else
this.prevFrame();
;
【问题讨论】:
您还需要注意flv and playing backwards。如果它反向运行时断断续续并且声音不是问题,您可能需要创建一个 BitmapData 对象数组,在开始时将 flv 的内容缓存到该数组上(使用 draw()),然后擦洗 BitmapData 对象。非代码版本将使用您的 flv 文件的图像序列版本 【参考方案1】:下面是您需要的代码,一个重要的注意事项是:将代码放在 1 帧影片剪辑中,而不是放在主视频时间轴上:
var direction:String = "forward";
_root.onEnterFrame = function()
if (direction == "forward")
if (_root._currentframe == _root._totalframes)
trace("switch to back")
_root.stop()
direction = "back";
else if (direction == "back")
if (_root._currentframe == 171)
trace("switch to forward")
direction = "forward";
_root.play();
else
_root.prevFrame();
【讨论】:
另一种方式是这样的:var direction:Number = 1; onEnterFrame = function():Void if(_currentframe == _totalframes || _currentframe == 171) direction *= -1;//flip the direction gotoAndStop(_currentframe + direction);
我还没有得到这个工作。我切换到 AS2,因为它包含 _root,但电影所做的只是像往常一样循环剪辑。我看到“切换到后退”触发,但没有看到“切换到前进”。我将 FLV 嵌入到 170 帧长的影片剪辑中,其上方单独层中的代码也是 170 帧长,在主时间轴中,影片剪辑位于带有“stop();”的帧上。在单独的图层上执行操作。我错过了什么吗?以上是关于如何向后和向前循环 Flash 电影的一部分(“乒乓”循环)的主要内容,如果未能解决你的问题,请参考以下文章