我正在为工作制作一个测验类型的动画,在单击答案时,它会播放一个与您选择的内容相关的简短动画 FLV 文件。由于我读到的所有内容都指向 AS3 是 OOP,因此我决定制作一个包含 FLV 播放器的 MovieClip,并将其链接到一个名为 FLV_Player.as 的 AS3 文件。这样我就可以在每次需要播放视频时创建一个新的 FLV_Player 实例。这是该文件中似乎工作正常的代码:
package
{
import fl.video.VideoEvent;
import flash.events.VideoEvent;
import flash.display.MovieClip;
public class FLV_Player extends MovieClip
{
public function FLV_Player(NextVideo:String)
{
animation_player.source=(NextVideo);
animation_player.addEventListener(VideoEvent.COMPLETE, vcompleted);
}
private function vcompleted(e:VideoEvent):void
{
nextFrame();
}
}
}
现在在 DocumentClass.as 文件中,我有以下代码:
private function NewVideo(videoname:String)
{
var nextvideo:FLV_Player = new FLV_Player(videoname);
addChild(nextvideo);
nextvideo.x = 0;
nextvideo.y = 0;
}
因此,当您单击一个按钮、转到下一帧或任何提示时,它会调用 NewVideo 函数并传递接下来要播放的任何视频的名称。
NewVideo("Introduction.flv");
现在我确定我稍后会遇到其他问题,因为我真的不知道我所做的任何事情是否应该如何完成,但我现在似乎唯一遇到的问题及时删除视频并转到下一个(或上一个)帧以回答另一个问题。我试过了:
nextFrame();
removeChild(newVideo);
但它没有用。好吧,它可能已经转到下一帧,但是由于视频占据了整个窗口,因此很难看出它是否确实如此。
那么如何删除我创建的视频?主要问题似乎是因为我必须在私有函数中创建 FLV_Player 类的新实例,所以孩子在本地定义为“var”,而不是“public”或“private”var,所以我不能再次引用它. 它告诉我,您只能从文档类中创建一个“私有变量”,但如果我在那里创建它,它将在我准备将视频名称参数传递给它时在加载时创建类,而不是从函数中创建。在加载时我不知道我需要它播放什么视频?