Внешний вызов javascript из Brightcove BEML - PullRequest
1 голос
/ 16 марта 2012

Есть ли способ ссылаться на пользовательскую функцию JavaScript из BEML?Я хотел бы держаться подальше от Flash, поскольку все, что я делаю, должно работать и в проигрывателе HTML5.

<Runtime>
  <Layout width="800" height="600" id="backgroundTemplate">
    <Canvas>
      <VideoDisplay id="videoPlayer" width="788" height="487" x="9" y="13"/>
      <MediaControls x="5" y="509" width="791" height="87" id="mediaControls">
        <VBox>
          <Canvas height="25" padding="20">
            <Playhead mediaController="{videoPlayer}" autohideSlider="false" useTimeToolTip="true"/>
          </Canvas>
          <HBox padding="10">
            <HBox id="leftBtn_container" hAlign="left">
              <ToggleButton id="playButton" width="60" height="60" x="0" y="0" showBack="true" click="{videoPlayer.play()}" toggledClick="{videoPlayer.pause()}" toggled="{videoPlayer.playing}"/>
            </HBox>
            <HBox id="rightBtn_container" hAlign="right">

               <Button width="60" height="60" id="cite_btn" click="{someFunction.doSomething()}"/>

             </HBox>
          </HBox>
        </VBox>
      </MediaControls>
    </Canvas>
  </Layout>
</Runtime>

1 Ответ

1 голос
/ 19 сентября 2012

Вам потребуется создать пользовательский компонент. Создание пользовательских компонентов проигрывателя

Вызов пользовательского компонента в BEML.

<Modules>
        <Module file="http://urltocustomcomponent.com/my_component.swf" />
</Modules>

Кнопка в BEML

<ToggleButton id="my_button" width="40" height="40" />

Actionscript для пользовательского компонента.

package
{

    import com.brightcove.api.APIModules;
    import com.brightcove.api.BrightcoveModuleWrapper
    import com.brightcove.api.CustomModule;
    import com.brightcove.api.modules.ExperienceModule;
    import com.brightcove.api.events.BEMLMouseEvent;
    import flash.events.Event;
    import flash.external.ExternalInterface;
    import com.brightcove.api.components.Button;

    public class yogaComponent extends CustomModule
    {

        override protected function initialize():void
        { 

            // Get the experience module
            var experienceModule:ExperienceModule = player.getModule(APIModules.EXPERIENCE) as ExperienceModule;

            // Define Info Button
            var button:Button = experienceModule.getElementByID("my_button") as Button;

            // Our listener that calls the function
            button.addEventListener(BEMLMouseEvent.CLICK, myCustomFunc);

        }

        // Custom Function
        private function myCustomFunc(event:Event):void
        {

            if(ExternalInterface.available)
            {
                // this calls a javascript function in your html
                ExternalInterface.call('myJavascriptAlertFunction');
            }
        }

    }
}

Функция Javascript, которая вызывается при щелчке по событию.

function myJavascriptAlertFunction()
{
alert('it works!');
}
...