My simple ActionScript
I am trying to use Flash's ExternalInterface to setup a callback so that JavaScript can call a method on my Flash object. Everything works fine in Safari, Firefox and in IE, but I cannot get Chrome working. When I try the code on Chrome, I get the following error:
Uncaught TypeError: Object #<an
HTMLObjectElement> has no method
'setText'
Here is the example HTML I am using (again, works fine in Safari, FF and IE)
<html><body>
<div id=mycontent></div>
<script type=text/javascript src=http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js></script>
<script type=text/javascript>
swfobject.embedSWF(http://invincible.dynalias.com:8080/HelloWorld.swf, mycontent, 400, 420, 9.0.0,expressInstall.swf, {}, {allowScriptAccess:'always'},{id:'hw',name:'hw'});
function getFlash(movieName) {
return ( navigator.appName.indexOf(Microsoft) != -1) ? window[movieName] : document.getElementById(movieName);
}
</script><p>
<input type=text id=exampleText /> <input type=button value=Set Text onclick=getFlash('hw').setText(document.getElementById('exampleText')
.value) />
</body>
</html>
and here is the ActionScript...
package {
import flash.display.Sprite;
import flash.text.TextField;
import flash.external.ExternalInterface;
import flash.system.Security;
public class HelloWorld extends Sprite {
private var textField:TextField = new TextField();
public function HelloWorld() {
Security.allowDomain(*);
ExternalInterface.addCallback(setText, this.setText);
textField.text = Hello, world!;
addChild(textField);
}
public function setText(text:String):void {
this.textField.text = text;
}
}
}