Google IMA + MediaElementJS - PullRequest
       16

Google IMA + MediaElementJS

3 голосов
/ 04 января 2012

Мне удалось включить HTML5-версию рекламы Google IMA, и я пытаюсь подключиться к файлу проекта MediaElement fla.

IMA использует Flash-компонент, который можно легко добавить на сцену и настроить. Можно ли использовать это с MediaElements.JS, не прибегая к использованию Google IMA Flash SDK?

ОБНОВЛЕНИЕ :

В настоящее время я следую указаниям сайта IMA Google относительно включения их SWC-компонента в медиаплееры.

В идеале я хотел бы просто передать несколько переменных из функции JavaScript для установки, запуска, остановки и удаления видеообъявлений.

1 Ответ

0 голосов
/ 27 января 2012

Ну, так как никто не знает или не хочет отвечать, ..

Согласно веб-сайту MediaElement.JS , скоро будет учебник по построллам.Всякий раз, когда это произойдет (или если я начну работать над этим ActionScript до этого), я выложу здесь предварительную версию.

ОБНОВЛЕНИЕ:

В конце концов, мы просто выяснили это,Есть несколько вещей, которые необходимо добавить в Media Element, особенно в файле FlashMediaElement.as.

Первый шаг - это загрузить и установить компонент Google IMA ActionScript 3.

Далее открытьFlashMediaElement.fla и FlashMediaElement.as в папке \ src \ flash \ MediaElement.

В файле .FLA необходимо добавить компонент Google IMA на сцену, а затем настроить тег preroll для любого URL-адреса.Это просто делает это поле доступным в области .as.

Наконец, приступите к интеграции Google IMA, добавив следующие свойства в класс FlashMediaElement в файле .AS:

    // Google Ad Object
    private var ads:Object;

    private var ad:Object = {
            type:'',
            url:''
        };

    private var episodeData:Object = {
            pre:ad, post:ad, 
            video:'', 
            pageTitle:'',
            title:'',
            source:''
        };

Далее перейдите к конструктору, public function FlashMediaElement() { и установите значениядля episodeData.Есть несколько способов, которыми вы можете захотеть заполнить их динамически.В этом примере используются простые flashvars, добавленные в тех местах, где вы видите mediaelement.swf в HTML или JS, используйте mediaelement.swf? Title = YourTitle и т. Д.

        // get parameters
        var params:Object = LoaderInfo(this.root.loaderInfo).parameters;
        //Media Element Params start here
        .
        .
        .

        customVariable = (params['customVariable'] != undefined) ? (String(params['customVariable']) : "DefaultStringValue";

В конце конструктора все, что вам нужноdo is call addEventListener(Event.ADDED_TO_STAGE, initialize);

Наконец, последний шаг - поместить следующие функции из примера Google IMA в конец вашего класса FlashMediaElement.

        private function initialize(event:Event):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, initialize);
            // videoComponent is the name of the Google In-Stream component instance
            // on the stage.
            log("component version: " + videoComponent.getVersion());
            videoComponent.addEventListener("adStart", onAdStart);
            videoComponent.addEventListener("adComplete", onAdComplete);
            // Attach event listeners to the video component for access
            // to the ads object. The ads object is used for various purposes
            // such as resetting ads across multiple content pieces.
            videoComponent.addEventListener("adsReady", onAdsReady);
            videoComponent.addEventListener("error", onAdError);
            // Attach event listener to the flvplayback component to listen to
            // the content complete event.
            _video.addEventListener("complete", onContentComplete);
        }

            private function onAdsReady(event:Object):void {
              // Extract the ads object from the adsReady event which is later used to
              // reset the ads.
              // The adsReady event is fired when the ads requested through the
              // component are initialized.
            AdSlotSettings.prerollAdTag = episodeData.pre.url;
            ads = event.getAds();
            }

            private function onContentComplete(event:Event):void {
              log("Content complete");
              if (ads) {
            log("Resetting ads.");
            ads.resetAds();
              }
            }

            private function onAdStart(event:Object):void {
              log("Ad has started.");
            }

            private function onAdComplete(event:Object):void {
                log("Ad has completed."); 
            }

            private function onAdError(event:Object):void {
              log("Error occured while playing the ad. Error : "
              + event.getError().message);
            }

            private function log(msg:Object):void {
              //textAreaLogger.appendText(msg + "\n");
            }

textAreaLogger ссылается на динамический текстполе в примере Google.Чтобы немного отличаться от кода Google, вы можете изменить textAreaLogger на _output (и иногда установить debug = true в конструкторе), если вы хотите использовать встроенное в MediaElement текстовое окно отладки.

Вот и все;Google IMA предварительно и построллирует.

...