首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flash播放器从外部的javascript控制?

Flash播放器从外部的javascript控制?
EN

Stack Overflow用户
提问于 2011-09-17 22:19:53
回答 3查看 2.3K关注 0票数 1

我正在制作闪存播放器,应该是从外部控制,从javascript。

我需要那些方法:播放/暂停和音量级

我被音量困住了.我试图添加以下代码:

代码语言:javascript
复制
flashMovie.volume = 10;

其中flashMovie是闪存实例..。它显示没有错误,,但它是不工作

我尝试创建内部AddCall();然后调用它从javascript调用()返回声音级别。

如3:

代码语言:javascript
复制
function setthisvolume()
{
        var vlm = ExternalInterface.call('giveMeVolume()');
        this.soundTransform.volume = vlm;
}

ExternalInterface.addCallback("setthisvolume", setthisvolume);

联署材料:

代码语言:javascript
复制
var soundlevel = 10;

function soundlevelset()
{
    var flashMovie=getFlashMovieObject("objswf");
    flashMovie.setthisvolume();

}

function giveMeVolume()
{
    return parseInt(soundlevel);
}

但是我发现了一个错误:

在NPObject!上的错误调用方法

我甚至尝试使用setInterval():

如3:

代码语言:javascript
复制
function setthisvolume()
{
        var vlm = ExternalInterface.call('giveMeVolume()');
        this.soundTransform.volume = vlm;
}

setInterval(setthisvolume, 1000);

联署材料:

代码语言:javascript
复制
var soundlevel = 10;

function giveMeVolume()
{
    return parseInt(soundlevel);
}

它没有显示出任何错误,但也不起作用.

有人用过这样的东西吗?

有人能帮我做错事吗..。

谢谢!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-17 23:45:05

在调用giveMeVolume时尝试删除括号,方法是更改以下内容:

代码语言:javascript
复制
var vlm = ExternalInterface.call('giveMeVolume()');

对此:

代码语言:javascript
复制
var vlm = ExternalInterface.call('giveMeVolume');

如果这不起作用,请尝试将卷直接作为参数/参数传递,如下所示(这可能是一种更好的方法):

AS3:

代码语言:javascript
复制
function setthisvolume(vlm)
{
        this.soundTransform.volume = vlm;
}
ExternalInterface.addCallback("setthisvolume", setthisvolume);

联署材料:

代码语言:javascript
复制
var soundlevel = 10;
function soundlevelset()
{
    var flashMovie=getFlashMovieObject("objswf");
    flashMovie.setthisvolume(soundlevel);
}
票数 1
EN

Stack Overflow用户

发布于 2011-09-18 12:15:01

“谢谢,”有人!第二种选择没问题!

以下是工作代码:

AS3:

代码语言:javascript
复制
function setthisvolume(vlm)
{
        this.soundTransform = new SoundTransform(vlm);
}

ExternalInterface.addCallback("setthisvolume", setthisvolume);

联署材料:

代码语言:javascript
复制
function getFlashMovieObject(movieName)
{
  if (window.document[movieName]) 
  {
      return window.document[movieName];
  }
  if (navigator.appName.indexOf("Microsoft Internet")==-1)
  {
    if (document.embeds && document.embeds[movieName])
      return document.embeds[movieName]; 
  }
  else
  {
    return document.getElementById(movieName);
  }
}

var soundlevel = 0.5;                  // it's 0-1 volume, not 0-100
function soundlevelset()
{
    var flashMovie=getFlashMovieObject("objswf");
    flashMovie.setthisvolume(parseFloat(soundlevel));
}

每次滑块改变时,当您使用滑块时,您需要更改声级变量并调用声音级集();

希望我帮了下一个从这个开始的人..。:)

谢谢!

票数 2
EN

Stack Overflow用户

发布于 2011-09-17 23:37:57

代码看起来很合理。

检查是否允许Flash与脚本通信,在创建Flash AllowsScriptAccess - http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7c9b.html时有属性。

检查Falsh是否来自与HTML页面相同的域。

对于addCallback,检查您是否通过Id获得了正确的Flash (在IE/FF中创建Flash的方式不同,因此您可能得到了错误的对象)。

检查你是否有正确的SWF文件-浏览器可能缓存旧版本.也就是说,在Flash控件上添加元素,它只显示静态数字,并确保它与最新的元素匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7458218

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档