0
私はIRCサーバーに接続するためのシンプルなフラッシュソケットを持っています。接続のオープン、接続の終了、およびメッセージの送信のために、,close
およびsend
のメソッドがJSに利用可能になっています(ExternalInterface
)。 JSはメッセージを取得するたびにJS内のIRC.io.receive
を呼び出します。このメッセージはJSによって解析されて便利なものになります。JSからフラッシュメソッドを呼び出すときに関数が存在しません
残念ながら、いずれかのFlashメソッドがJSから呼び出されると、「__ is not a function」エラーが返されます。
public class IRC extends MovieClip {
public static function open(url:String, port:int) {/* code */}
public static function close(port:int) {/* code */}
public static function send(port:int, message:String) {/* code */}
public function IRC() {
ExternalInterface.addCallback('send', IRC.send);
ExternalInterface.addCallback('open', IRC.open);
ExternalInterface.addCallback('close', IRC.close);
}
}
そしてHTML/JS::
は<html>
<head>
<script type="text/javascript">
window.IRC = {
io: {}
};
IRC.io.receive = function(message) {/* code */}
IRC.io.send = function(port, str) {
document.getElementById('socket').send(port, str);
}
IRC.io.open = function(url, port) {
document.getElementById('socket').open(url, port);
}
IRC.io.close = function(port) {
document.getElementById('socket').close(port);
}
</script>
</head>
<body>
<!-- ui -->
<embed src="socket.swf" quality="high" allowscriptsaccess="always" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" allowfullscreen="false" style="display:none;">
</body>
<html>
ExternalInterface
に登録された機能のいずれかへの任意の呼び出しがスローされます。ここ
どうやらこれはどちらか動作しません - フラッシュは、JSを呼び出すことができるようには見えません。クラスが正しく動作していない可能性はありますか? – Monchoman45
'ExternalInterface'が利用可能であることを確認してください: ' if(ExternalInterface.available){ ExternalInterface.call( 'initIRQ'); } else { trace( "ExternalInterface unavailable"); } ' もしそうでなければ、swfの関数にアクセスしようとする前に、ページが完全に読み込まれるまで待ってみてください。 –
何とかそれを修正しました。今すぐ動作します。ご協力いただきありがとうございます (: – Monchoman45