В вашей Flash, желательно в первом кадре, поместите это:
ExternalInterface.addCallback('callFlashFunction', null, yourFlashFunction);
function yourFlashFunction (arg1, arg2) { ... }
В вашем Javascript вы можете позвонить через:
var flashObj = document.getElementById ('FlashObjID');
flashObj.callFlashFunction (arg1, arg2);
Если ваш SWF-файл находится в другом домене, не забудьте разрешить доступ к сценарию через:
<object id="FlashObjID"> ... <param name="allowscriptaccess" value="always" /> ... </object>
Обновление (на основе вашего HTML):
<a href="#" onclick="return jsLoadSong('2')">Play song 2</a>
<object id="VSPLAYER" type="application/x-shockwave-flash" data="vs_player.swf" width="280" height="90">
<param name="movie" value="vs_player.swf" />
<param name="allowscriptaccess" value="always" />
</object>
<script type="text/javascript">
var flashObj = document.getElementById ('VSPLAYER');
function jsLoadSong (val)
{
flashObj.loadSong (val);
return false; // to prevent default link action
}
</script>
Я попытался уточнить имена для отображения, которые есть в Javascript, а какие связаны с Flash. Также обратите внимание, что вам нужно подождать, пока DOM загрузится, прежде чем вызывать определение flashObj
. здесь тег <script>
находится после <object>
, поэтому он будет работать нормально.