【问题标题】:Destroy loaded video in AS3在 AS3 中销毁加载的视频
【发布时间】:2015-10-06 00:22:57
【问题描述】:

我正在使用 AS3 开发一个显示 youtube 视频的功能。它可以工作,但问题是,如果我开始播放视频,然后单击“cacheNoir”,它会删除视频,但我仍然可以听到它。我做客是因为视频并没有真正销毁,那我该怎么做呢?

我的功能:

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);
}

【问题讨论】:

  • 你认为stage.removeChildAt(stage.numChildren-1); //Retire la vidéo这一行应该删除哪个变量?

标签: actionscript-3 flash video


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果var loaderVideo:Loader负责视频,你能不能只用unload ..

    在您的 onQuitVideoYoutube 函数中有类似的内容:loaderVideo.unload();..

    此外,您应该在任何函数之外将 loaderVideo 设为public var loaderVideo:Loader;,然后所有函数都可以重复使用它,而无需每次都创建一个新函数。加载它会变成简单的loaderVideo = new Loader();

    每次您创建一个在内存中创建新实例的var ABC = new someThing 时,您以后的代码甚至可能不会谈论您认为Flash 正在访问的someThing。因此,制作一件事并始终重复使用它,然后您就知道在做什么了。

    示例设置...

    public var _stage           : Stage = _app._root.stage;
    public var loaderVideo      : Loader;
    public var cacheNoir        : MovieClip;
    public var conteneurVideo   : MovieClip = new MovieClip(); //make NEW here only after that its always re-used
    
    public function openVideoYoutube(url:String, largeur:int=640, hauteur:int=390) : void
    {
        //Charge la vidéo
        loaderVideo = 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
        cacheNoir = 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
        loaderVideo.unload();
        _stage.removeChildAt(_stage.numChildren-1);
    
    
    }
    

    【讨论】:

      猜你喜欢
      • 2010-11-24
      • 2014-05-13
      • 1970-01-01
      • 2015-05-16
      • 2016-12-06
      • 1970-01-01
      • 2019-08-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多