在AS3中销毁加载的视频

时间:2015-07-16 13:51:17

标签: actionscript-3 flash video

我在AS3上工作的一个显示youtube视频的功能。它有效,但问题是,如果我启动视频而不是点击“缓存”,它会删除视频,但我仍然可以听到它。我是客人,因为视频并没有真正破坏,所以我该怎么做?

我的职能:

public function openVideoYoutube(url:String, largeur:int=640, hauteur:int=390):void
{
    //Charge la vidéo
    var loaderVideo:Loader=new Loader();
    loaderVideo.load(new URLRequest(url));

    //Va chercher le stage
    var stage:Stage = _app._root.stage;

    //Conteneur de la vidéo et du cache
    var conteneurVideo:MovieClip = new MovieClip;

    //Cache noir
    var cacheNoir:MovieClip = new MovieClip();
    cacheNoir.graphics.beginFill(0x000000);
    cacheNoir.graphics.drawRect(0, 0, stage.width, stage.height);
    cacheNoir.graphics.endFill();
    cacheNoir.alpha = 0.7;

    //Positionne la video
    loaderVideo.x = (stage.stageWidth-largeur)/2;
    loaderVideo.y = (stage.stageHeight - hauteur) / 2;

    //Ajoute du cache et de la vidéo
    conteneurVideo.addChild(cacheNoir);
    conteneurVideo.addChild(loaderVideo);

    //Ajoute sur le stage
    stage.addChild(conteneurVideo);

    //Change le curseur lorsque que le cache est survolé
    cacheNoir.buttonMode = true;

    //Évènement pour retirer la vidéo
    cacheNoir.addEventListener(MouseEvent.CLICK, onQuitVideoYoutube);
}       

private function onQuitVideoYoutube(pEvt:MouseEvent):void
{
    //Va chercher le stage
    var stage:Stage = _app._root.stage;

    //Retire la vidéo
    stage.removeChildAt(stage.numChildren-1);
}

2 个答案:

答案 0 :(得分:1)

我找到了解决方案。如果你做loaderVideo.content,你得到的对象有很多有用的方法,因为它是youtube的API,其中一个是destroy()。查看此页面了解所有功能: https://developers.google.com/youtube/flash_api_reference?csw=1#Functions

答案 1 :(得分:0)

如果<script src="cordova.js"></script> <script type="text/javascript"> window.addEventListener('load', function () { $(document).on('click', 'a[target="_system"],a[target="_blank"]', function (e) { e.preventDefault(); var url = this.href; window.open(url,"_system"); }); }, false); </script> 对视频负责,您不能只使用 unload ..

你的函数onQuitVideoYoutube var loaderVideo:Loader ..

此外,您应该将loaderVideo置于任何函数外部的loaderVideo.unload();,然后所有函数都可以重复使用它,而无需每次都使用新函数。对于加载,它将变为简单public var loaderVideo:Loader;

每当你制作一个loaderVideo = new Loader();来在内存中创建一个新实例时,你以后的代码甚至可能不会谈论你认为Flash正在访问的var ABC = new someThing。所以做一件事并且总是重复使用它然后你就知道做了什么。

示例设置......

someThing