AS3 - ExternalInterface.访问未定义的属性
AS3 - ExternalInterface.addCallback, Access of undefined property
我正在尝试使用javascript来运行AS3函数。当我试图编译时,我得到一个"未定义属性的访问"错误消息。
我在网上读了一些关于这个的东西,但我仍然不理解它。我想让flash文件始终监听javascript
以下是我的AS3代码:ExternalInterface.addCallback("song4", PauseMusicExt);
和我的Javascript &HTML:
function returnVar3(song3) { return this[song3]; }
<input type="submit" name="playButton" id="playButton" value="Submit" onClick="returnVar('song3')"/>
编辑:这里是pauseMusic函数:
function pauseMusicExt():void
{
songPosition = channel.position;
channelSilence.stop();
channel.stop();
channel2.stop();
btnPlay.mouseEnabled = true;
}
我不确定你的应用程序的扩展,但你已经得到了你的addCallback函数参数混合…
请参阅文档,第一个参数是您想要将函数暴露给javascript的名称,第二个参数是您想要触发的实际内部AS3函数。
所以声明应该像这样:
ExternalInterface。addCallback("song4 pauseMusic);
(假设你的函数和你调用addCallback的函数在同一个作用域中)
该语句将创建一个"song4"方法,你可以在flash dom对象上调用该方法
var fl = document.getElementById('myflashobject');
fl.song4()
之后的问题是,pauseMusic需要一个参数(看起来你已经把它变成了一个鼠标事件处理程序)。您可能希望有一个干净的方法,它不需要像内部as3事件参数那样的参数。重写pauseMusic,使它不需要它(您可能需要创建另一个方法来内部处理鼠标事件-像onPause(evt:MouseEvent),然后调用pauseMusic。
编辑:我不知道是否有很多人想过这样做,但你也可以完全使用外部接口调用firebug的console.log函数从flash向firebug发送消息(这对于调试ExternalInterface问题或任何其他flash问题非常有帮助-参见ExternalInterface。调用函数)
希望你想暂停音频播放器。
AS代码:
ExternalInterface.addCallback("sndToAS",rcvdFmJS);
function rcvdFmJS(val){
if (val == "pause"){
audioPause();
}
}
JS代码:
document.getElementById("movie").sndToAS("pause");
- 主干中的模型属性未定义
- JavaScript 2d 数组导致“无法读取未定义的属性'未定义'”
- JSON对象属性未定义
- Waypoint的循环,退出循环后属性未定义
- Javascript:错误“无法设置属性”..'未定义”
- 翡翠 - 显示对象属性 - 未定义
- 属性未定义,但控制台.log可以看到它
- JavaScript 对象的属性未定义
- Javascript 对象属性未定义(但属性已设置)
- DOM 元素属性未定义 - jquery / ruby on rails.
- Nodejs JSON 属性未定义
- 错误:窗口打开器的属性未定义
- angular Js:Array.lenght属性未定义
- 正在尝试访问JavaScript对象的属性=未定义
- Marionette属性未定义,请从API获取
- AngularJS作用域属性未定义
- 对象的属性未定义,尽管已指定值
- 为什么我一直收到一个错误,说对象属性未定义
- 对象属性未定义,但我看到它不是
- .map()img src属性未定义