Я решил это сам: D
Разница по сравнению с механизмом, описанным выше, заключается в функции getFlexApp (), которая обеспечивает, в общем, способ получения объекта flex.Как только объект получен, я просто вызываю функцию EIButtonClicked () и передаю ей значение.
function getFlexApp(appName) {
if (navigator.appName.indexOf ("Microsoft") !=-1) {
return window.top[appName];
} else {
return window.top.document[appName];
}
}
function callFlexFunction() {
var sTxt ;
sTxt = document.getElementById('txt1').value;
alert('HTML/Javascript wants to tell you about ' + sTxt);
getFlexApp('iframeCommTest').EIButtonClicked(sTxt) ;
}
Между тем, на стороне гибкого канала установлен обратный вызов внешнего интерфейса.Вы можете видеть, что «EIButtonClicked», на который ссылается JS выше, соответствует метке для обратного вызова в AS ниже.
/**
* When the button is clicked.
*/
public function onEIButtonClicked(data:String):void {
Alert.show("Flash wants to tell you about " + data);
}
protected function application1_creationCompleteHandler():void {
// TODO Auto-generated method stub
if (ExternalInterface.available) {
ExternalInterface.addCallback("EIButtonClicked", onEIButtonClicked);
}
}