문제

나는 새로운 YouTube AS3 API를 가지고 다니고 있지만 붙어 있습니다. 이것은 내가 샘플 코드를 보면서 얼마나 멀리 얻었는지입니다.

http://pastie.org/656088

public class Main extends Sprite 
{
    Security.allowDomain("*");

    private var player:Object;
    private var loader:Loader;

    public function Main():void 
    {
        if (stage) init();
        else addEventListener(Event.ADDED_TO_STAGE, init);
    }

    private function init(e:Event = null):void 
    {
        removeEventListener(Event.ADDED_TO_STAGE, init);

        loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
        loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3"));
    }

    private function onLoaderInit(e:Event):void
    {
        addChild(loader);
        loader.contentLoaderInfo.addEventListener("onReady", onPlayerReady);
        loader.contentLoaderInfo.addEventListener("onError", onPlayerError);
        loader.contentLoaderInfo.addEventListener("onStateChange", onPlayerStateChange);
        loader.contentLoaderInfo.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
    }

    private function onPlayerReady(e:Event):void
    {
        trace("Player ready: " + Object(e).Data);
    }
    private function onPlayerError(e:Event):void
    {
        trace("Player error: " + Object(e).Data);
    }
    private function onPlayerStateChange(e:Event):void
    {
        trace("Player state: " + Object(e).Data);
    }
    private function onVideoPlaybackQualityChange(e:Event):void
    {
        trace("Video quality: " + Object(e).Data);
    }
}

나는 다음 단계가 무엇인지 정말로 모른다. 나는 오류가없고 아무것도 추적하지 않습니다. 내 이벤트가 올바르게 구현되지 않았다고 확신합니다.

업데이트 : Amarghosh의 답변을 따라 대신이 작업을 수행했습니다.

private function onLoaderInit(e:Event):void
{
  player = Sprite(loader.content);
  addChild(player);
  player.addEventListener("onReady", onPlayerReady);
  player.addEventListener("onError", onPlayerError);
  player.addEventListener("onStateChange", onPlayerStateChange);
  player.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}

이제 OnplayErready 및 OnStateChange 이벤트가 발생하지만 오류가 발생합니다. 객체를 추적 할 때 (e) .data 나는이 오류가 발생한다.

ReferenceError: Error #1069: the property Data was not found for com.google.youtube.event.ExternalEvent and there is no standard value.(스웨덴어로부터 Stranslated) 물체 (E.TARGET)로 변경할 때 (대상).

내가 시도하면 player.loadVideoById("uad17d5hR5s"); 이 오류가 발생합니다.

1061: Call to a possibly undefined method loadVideoById through a reference with static type flash.display:Sprite.

도움이 되었습니까?

해결책

모든 도서관 혼란에 대해 죄송합니다. 그래도 다른 오류에 대한 답이 있다고 생각합니다. 당신이 할 때 Sprite(loader.content) API의 방법을 원하기 때문에 플레이어를 스프라이트로 캐스팅하는 것은 '강제'를 스프라이트로 캐스팅합니다. 나는 평범한 오래된 객체를 사용하는 것이 좋습니다.

// No particluar type
var player:Object;

private function onLoaderInit(e:Event):void
{
    player = loader.content;
    addChild(player as DisplayObject);

    var dispatcher:IEventDispatcher = player as IEventDispatcher;
    dispatcher.addEventListener("onReady", onPlayerReady);
    dispatcher.addEventListener("onError", onPlayerError);
    dispatcher.addEventListener("onStateChange", onPlayerStateChange);
    dispatcher.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}

다른 팁

변수 인 경우 player 로드 된 YouTube 플레이어를 잡고 유형을 변경해야합니다. Object 더 견고한 것 Sprite.

private var player:Sprite;

이제 YouTube API를 모르지만 귀하의 문제가 있습니다. onLoaderInit 방법. 청취자를로드 된 콘텐츠 대신로드 된 콘텐츠에 추가해야합니다. LoaderInfo 물체. LoaderInfo 로딩 프로세스와 관련된 이벤트를 발송합니다. 로딩이 성공하면 관련이 없습니다. 해당 통화에 언급 된 이벤트는로드 된 컨텐츠에 의해 발송됩니다. 방법을 다음으로 변경합니다.

private function onLoaderInit(e:Event):void
{
  player = Sprite(loader.content);
  addChild(player);
  player.addEventListener("onReady", onPlayerReady);
  player.addEventListener("onError", onPlayerError);
  player.addEventListener("onStateChange", onPlayerStateChange);
  player.addEventListener("onPlayerQualityChange", onVideoPlaybackQualityChange);
}

비교적 최근에 YouTube는 Chromeless 플레이어를위한 래퍼 라이브러리를 출시했습니다. 이 버전을 확실히 사용해야합니다 (다시 직접 쓸 수는 있지만 바퀴를 재창조 할 수 있습니다).이 페이지의 자습서/예를 확인하십시오.

Chromeless 플레이어를위한 ActionScript 3.0 래퍼

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top