PDA

Просмотр полной версии : неработает return используя ExternalInterface.call


meamur
03.12.2007, 03:38
Флеш8 установлен...
ДжаваСкрипт Функция запускается...
Работает отсылка данных с флеша в джаву... (alert(">>Hello"+name+".");greeting=String(ExternalInterface.call("sayHello","MYNAME"));)
НО почему-то из джавы в флеш передается null... (return " Hi Flash."; this.mcTxt.text = greeting;)

В чем может быть ошибка?

ПОЛНЫЕ КОДА НИЖЕ...

HTML Код:

<script>
function sayHello(name) {
alert(">> Hello " + name + ".");
return " Hi Flash.";
}
</script>



<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" width="401" height="172" title="sfdfsd">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="MYFLASH.swf" />
<param name="quality" value="high" />
<embed src="MYFLASH.swf" quality="high" allowScriptAccess="sameDomain" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="401" height="172"></embed>
</object>




ACTION SCRIPT:
import flash.external.*;

var greeting:String;
var btn:MovieClip = createButton(100, 30, 0xCCCCCC);
btn.onPress = function()
{
greeting = String(ExternalInterface.call("sayHello", "MYNAME"));
this.mcTxt.text = greeting; // >> Hi Flash.
}

function createButton(width:Number, height:Number, color:Number):MovieClip
{
var depth:Number = this.getNextHighestDepth();
var mc:MovieClip = this.createEmptyMovieClip("mc_" + depth, depth);
var mcFmt:TextFormat;

mc.beginFill(color);
mc.lineTo(0, height);
mc.lineTo(width, height);
mc.lineTo(width, 0);
mc.lineTo(0, 0);

mcFmt = new TextFormat();
mcFmt.align = "center";
mcFmt.bold = true;

mc.createTextField("mcTxt", depth, 0, 0, width, height);
mc.mcTxt.text = "Call JS Function";
mc.mcTxt.setTextFormat(mcFmt);

return mc;
}

wvxvw
03.12.2007, 03:48
Попробуй watch'ем смотреть, когда значение поменяется, возможно, просто медленно работает.

iNils
03.12.2007, 04:23
Вы будует смеятся, но не работает из-за того, что в коде html не хватает id в <object>. Достаточно добавить id="myflash".

meamur
03.12.2007, 14:02
Спасибо, впринципе я так и думал что из-за какой-то такой тонкости...:)