سؤال

وأنا يخطيء حولها مع API يوتيوب AS3 جديد ولكن حصلت على تمسك. هذا هو مدى حصلت (من النظر إلى نموذج التعليمات البرمجية الخاصة بهم).

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 لكن يمكنني الحصول على أخطاء. عندما تتبع كائن (ه) .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) .Data يتتبع "غير معروف" وجوه (e.target) يتتبع [كائن SwfProxy].

إذا أحاول player.loadVideoById("uad17d5hR5s"); أحصل على هذا الخطأ:

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

هل كانت مفيدة؟

المحلول

وآسف لجميع الارتباك مكتبة، وأعتقد أن لدي إجابة خطأ الأخرى الخاصة بك على الرغم من. عند القيام بذلك Sprite(loader.content) لك "القوة" يلقي اللاعب أن يكون العفريت، لأنك تريد أساليب المعهد أود أن أوصي باستخدام كائن سهل القديمة، لأنه لن يشكو أساليب مصنف:

// 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 متغير لعقد لاعب يوتيوب تحميل، تغيير نوعه من Object إلى شيء أكثر صلابة مثل Sprite.

private var player:Sprite;

والآن، أنا لا أعرف يوتيوب 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);
}

ومؤخرا نسبيا يوتيوب أصدرت مكتبة المجمع لاعب على عنصر تحكم. يجب عليك بالتأكيد استخدام هذا الإصدار (هل يمكن الكتابة عليه مرة أخرى بنفسك، ولكن ذلك إعادة اختراع العجلة)، وتحقق من البرنامج التعليمي / مثال على هذه الصفحة

أكشن 3.0 التفاف لاعب الخالية من

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top