2012-09-12 8 views
3

AS3 유튜브 플레이어를 사용할 때 메모리 누수가 있습니다. 모든 청취자가 삭제됩니다. 해결책 찾기를 도와주세요. 시작을 클릭유튜브 AS3 API 메모리 누수

에 의해

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

로드 새로운 비디오 인스턴스를 재생 -

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 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 ------------------------------------------ 


} 

답변

0

무대 청취자는 어떨까요? 후자는 클릭 핸들러에서 등록되지 않았습니다 - 실수?

또한

당신은 이벤트 (약 청취자)

하여 addEventListener (이벤트 유형, 핸들러, useCapture를, 우선 순위, 진정한)를 등록 할 때 다음을 사용 할 수 있습니다;

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

안부