PDA

Просмотр полной версии : external interface. Вызов функции


Merf
27.05.2011, 15:18
import flash.external.ExternalInterface;

exit.onRelease = function()
{
ExternalInterface.call("merf");
}

<script language="javascript">
function merf() {
alert("Hello world");
}
</script>

Хоть убейте не могу понять почему не работает.

DaFive
27.05.2011, 15:39
JS успел загрузиться до вызова функции merf ?

Merf
27.05.2011, 15:45
успел,



<script language="javascript">
alert("trace");
function merf() {
alert("Hello world");
}
</script>первый алерт выскочил, функция продолжает отказыватся запускатся

mooncar
27.05.2011, 16:00
Попробуйте для начала прямо во флеше:
import flash.external.ExternalInterface;

exit.onRelease = function()
{
ExternalInterface.call('function merf() { alert("Hello world"); }');
}

PS. А у вас выполнение скриптов из флешки в коде публикации разрешено?

Merf
27.05.2011, 16:15
Html
<html>
<head>
<script language="JavaScript">
function merf(text){
alert(text);
}
</script>
</head>
<body bgcolor="#ffffff">
<object codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,0,0" id="1" width="240" height="350" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="1.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="1.swf" quality="high" bgcolor="#ffffff" width="240" height="350" name="1" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>

</body>
</html>

в флеше одна кнопка(exit) к ней код:
import flash.external.ExternalInterface;

exit.onRelease = function()
{
ExternalInterface.call('function merf() { alert("Hello world"); }');
}

Добавлено через 13 минут
нету алерта и хоть убейся. Либо я где-то очень сильно туплю либо это мистика страшная. Помогите пожалуйста

Merf
27.05.2011, 16:37
Вот исходник, может поможет

Hauts
27.05.2011, 17:02
Протестируйте не локально :)

Merf
27.05.2011, 17:10
Походу таки мистика, переписал код на АS 3
exit.addEventListener("click", function(){ExternalInterface.call('merf');});
таже фигня, закидал на сервак не видит функции и хоть ты тресни, я уже флешку переписал вдоль и впоперек, заново писал. Нифига не помагает

Добавлено через 3 минуты
public function jsDisplay():void
{
if (ExternalInterface.available)
{
ExternalInterface.call("displ", par);
}
}

Во флексе работает, но мне не надо флекс.

Добавлено через 24 минуты
кароче сделал кнопку вызова функции поверх флеша и забил, достало. Спасибо всем за помощь