我想将视频对象放在一个movieClip实例(“mc”)上方,但在另一个movieClip实例(“mc_top”)下面。
我通过将“新视频...”从库中拖到舞台上来实例化_root.flashVid对象,并为其提供实例名称“flashVid”。
我创建mc,然后绘制一个蓝色框,然后创建mc_top,并绘制一个黄色框。 flashVid实例从头开始在舞台(_root)上。现在我如何将flashVid设置为“mc”以上但“mc_top”以下?
// Create movieclips and paint boxes.
var mc:MovieClip = _root.createEmptyMovieClip("test",
_root.getNextHighestDepth());
mc.beginFill(0x0000ff, 50);
mc.lineStyle(2, 0x0000ff, 100);
mc.moveTo(0,0);
mc.lineTo(400, 0);
mc.lineTo(400,400);
mc.lineTo(0,400);
mc.lineTo(0,0);
mc.endFill();
var mc_top:MovieClip = mc.createEmptyMovieClip("test_top",
mc.getNextHighestDepth());
mc_top._x = 200;
mc_top.beginFill(0xffff00, 50);
mc_top.lineStyle(2, 0xffff00, 100);
mc_top.moveTo(0,0);
mc_top.lineTo(400, 0);
mc_top.lineTo(400,400);
mc_top.lineTo(0,400);
mc_top.lineTo(0,0);
mc_top.endFill();
// Flash video code (using Video object on stage, no components)
var nc = new NetConnection();
nc.connect(null);
var ns = new NetStream(nc);
ns.play("http://dl.getdropbox.com/u/295386/Stormpulse/my.flv");
// Tell flashVid to play what's coming through the netstream.
_root.flashVid.attachVideo(ns);
答案 0 :(得分:1)
您所要做的就是将视频放在一个空的动画片段中(如上所述)并根据深度操纵该动画片段。非常简单。
答案 1 :(得分:0)
此答案来自quip.net
的David Stiller在AS2中,Video类没有任何与深度相关的属性 或者moethods(例如,与MovieClip.swapDepths()对比 方法)。因此,如果您想使用AS2更改视频的深度, 你必须将视频对象包装在影片剪辑中。你必须这样做 给那个包装器影片剪辑一个实例名称,这样你就可以改变它的深度 使用swapDepths()。这也将改变你对attachVideo()的引用 方法
e.g。
// instead of this ...
_root.flashVid.attachVideo(ns);
// ... you'll have to use this ...
_root.wrapperMC.flashVid.attachVideo(ns);
...其中“wrapperMC”代表您给出的任何实例名称 包装器电影剪辑。这有意义吗?
另外需要注意的是,影片剪辑被拖到了舞台上 手的长度总是低于舞台上的电影剪辑 attachMovie()或createEmptyMovieClip()。所以一定要把它们全部附上 使用代码,或者将它们全部拖到舞台上。否则,你必须 “强制”将手动拖动的影片剪辑放入更高的深度 首先使用swapDepths()附加/创建剪辑。// Declare a reusable variable to manage the
// attachment of three movie clips
// Here's the first usage (note the depth of 3)
var mc:MovieClip = this.attachMovie("contentAbove", "upperSquare", 3);
// Here's the second (the video wrapper, depth of 2)
mc = this.attachMovie("wrapper", "videoWrapper", 2);
// move this one down a tad
mc._y = 80;
// Here's the third (depth of 2)
mc = this.attachMovie("contentBelow", "lowerSquare", 1);
// move this one down even more
mc._y = 160;
// Now wire up the video
var nc:NetConnection = new NetConnection();
nc.connect(null);
var ns:NetStream = new NetStream(nc);
videoWrapper.flashVid.attachVideo(ns);
ns.play("http://dl.getdropbox.com/u/295386/Stormpulse/my.flv");
答案 2 :(得分:0)
更短的方法是
MovieClip.prototype.swapDepths.call(_root.flashVid,_root.getNextHighestDepth());
通常可以解决问题,请尝试以下代码:
Video.prototype.swapDepths = MovieClip.prototype.swapDepths;
Video.prototype.getDepth = MovieClip.prototype.getDepth;
之后视频的实例将同时提供两种方法...... 要在严格键入视频的变量上没有编译器错误,您需要更新内部函数(在Flash IDE路径中 - 只需在硬盘上搜索 Video.as ,你应该找到它们......然后将 swapDepths 和 getDepth 的声明从 MovieClip.as 复制到 Video.as )...
我不会深入了解细节。你应该看一下函数类的调用方法,并阅读原型在AS和AS2(以及JS和AS3中)的工作方式......
格尔茨
back2dos