这是一个使用视频类将特定视频加载到0.0的MovieClip容器中的函数。
public var mainVideo:SimpleVideo;
public function loadVideo(videoString:String) :void{
mainVideo = new
SimpleVideo("videos/"+videoString+".flv","",true,video_container.positionMc);
video_container.addEventListener(MouseEvent.MOUSE_DOWN,controlVideoPlayer);
addChild(mainVideo);
trace('adding new video to container');
}
我想在每次加载视频时检查是否已经加载了其他视频。如果有,请将其删除,然后添加新视频。
我尝试过以各种方式使用removeChild()
,但似乎无法正常使用。
我会使用removeChild(mainVideo)
吗? video_container.removeChild(mainVideo)
?
我怎样才能检查是否已存在mainVideo
?
非常感谢任何帮助!
-Update-
如果我尝试使用removeChild(mainVideo)
,我会收到此错误:
TypeError:错误#2007:参数child必须为非null。
中的Main / removeVideo()
at flash.display :: DisplayObjectContainer / removeChild()
在 MethodInfo-127()
答案 0 :(得分:0)
如果您将视频添加到容器动画片段而不是舞台上,并且该容器一次只在其显示列表中只有一个SimpleVideo实例,则可以执行以下操作:
if( myVideoContainer.numChildren > 0 )
{
myVideoContainer.removeChild( myVideoContainer.getChildAt( 0 ) );
}
更大的问题是你正在使用的SimpleVideo类如何清理自己。大多数视频类都有一个清理或终止函数,可以删除侦听器并清理netStream。我认为你需要调用类似的东西以及从容器中删除视频实例。
答案 1 :(得分:0)
我希望这种反应可以帮到你
- >我会使用removeChild(mainVideo)
吗? video_container.removeChild(mainVideo)
?
你应该使用removeChild
函数,但你需要知道谁是mainVideo的父亲,并调用他父母的这个函数,在你的情况下,我认为,video_container
不是父,因为是mainVideo附近的变量,您将mainVideo添加到具有loadVideo
函数
有时你可以使用mainVideo.parent.removeChild(mainVideo)
,而不是最好的方法,但它有效,最好知道谁是父,并在“父”上明确调用函数removeChild()
- >我可以检查是否已存在mainVideo吗?
好吧,你可以做一个简单的if(mainVideo != null) { .. }
,因为在函数loadVideo中你每次都创建新的实例,这意味着如果你至少调用过一次这个函数,那么if
条件应该是真的意味着你已经存在一个mainVideo
- > TypeError: Error #2007: Parameter child must be non-null.
这意味着你的mainVideo没有实例化,因为我猜你还没有调用loadVideo()
,这就是@putvande要求你提供更多代码的原因,我们需要看看你拨打removeChild()
的地点和时间