actionscript-3 - Youtube AS3 API 内存泄漏

标签 actionscript-3 memory-leaks youtube-api

我在使用 AS3 youtube 播放器时发生内存泄漏。删除所有监听器。请帮助寻找解决方案。

public class YoutubeStreamTest extends Sprite
{
    private var _loader : Loader;
    private var _player : Object;
    private var _spr : Sprite;

    // constructor -----------------------------------------
    public function YoutubeStreamTest()
    {
        addEventListener(Event.ADDED_TO_STAGE, hAddedToStage);
    }

    // methods ---------------------------------------------

开始加载视频

    private function startVideo() : void {
        _loader = new Loader();
        _loader.contentLoaderInfo.addEventListener(Event.INIT, hLoaderInit, false, 0, true);
        _loader.load(new URLRequest("http://www.youtube.com/v/FooZ5x-OX0E?version=3&controls=0&showinfo=0&end=3")); //yPrHf776eWA = the vid u want t play
    }

    // handlers --------------------------------------------

等待视频准备就绪

    private function hLoaderInit(event : Event) : void {
        _loader.contentLoaderInfo.removeEventListener(Event.INIT, hLoaderInit);
        _player = _loader.content;
        _player.addEventListener("onReady", hPlayerReady, false, 0, true);
        addChild(_player as DisplayObject);
        _player.x = 0;
        _player.y = 20;

        _spr = new Sprite();
        _spr.graphics.beginFill(0x0, .1);
        _spr.graphics.drawRect(0, 0, 500, 500);
        _spr.graphics.endFill();
        addChild(_spr);
    }

准备就绪 - 开始播放

    private function hPlayerReady(event : Event) : void 
    {
        _player.removeEventListener("onReady", hPlayerReady);
        _player.setSize(440, 260);
        _player.playVideo();
    }

    private function hAddedToStage(event : Event) : void {
        Security.allowInsecureDomain("*");
        Security.allowDomain("*");
        startVideo();

        addEventListener(MouseEvent.CLICK, hClick);
    }

通过点击加载新的视频实例

    private function hClick(event : Event) : void {
        removeEventListener(Event.ADDED_TO_STAGE, hAddedToStage);
        if(_player) {
            removeChild(_player as DisplayObject);
            _player.destroy();
            removeChild(_spr);
            _loader.unloadAndStop(true);
        }
        startVideo();
    }

    // getsetters ------------------------------------------


}

最佳答案

click listener,添加到stage listener呢?后者在点击处理程序中未注册 - 错误?

你可能还想在注册事件时使用以下内容(弱监听器)

addEventListener(Event type, handler, useCapture, priority, true);

例如

addEventListener(MouseEvent.CLICK, onClicked, false, 0, true);

最好的问候

关于actionscript-3 - Youtube AS3 API 内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12384963/

相关文章:

c - 为什么下面的 C 代码不起作用?我无法找出错误。

ios - Swift 中的大型 Core Data 批量插入导致内存泄漏

youtube-api - YouTube channel 和内容所有者之间有什么区别

java - Flash Player 17.0.0.169 中 Red5 录制的流播放问题

actionscript-3 - Adobe Flash Player 设置不可点击

actionscript-3 - Flash AS3中setTimeout的使用方法

sql - SQLite 中的计数器变量

java - 我应该通过 response.getOutputStream() 显式关闭 ZipOutputStream 吗?

youtube - Youtube API是否会返回观看过我的视频的用户列表?

youtube - 您如何通过API在具有CMS帐户的YouTube channel 上设置In Video Promotion?