I Love China

技术·人生

技术服务生活
繁體
5月 16th, 2007

[as-js]JavaScript调用ActionScript

[问题描述]:通过JavaScript调用ActionScript中的变量、方法
[简析]:通过ExternalInterface类来实现。最好还是不要直接调用变量,推荐通过调用方法来获取变量值
[实例代码]:

1、flash8创建空fla文档,保存为test.fla,帧上写如下代码:

ActionScript Code:
  1. import flash.external.*;
  2. var methodName:String = "getTestNum";
  3. var instance:Object = null;
  4. var method:Function = getTestNum;
  5. var wasSuccessful:Boolean = ExternalInterface.addCallback (methodName, instance, method);
  6. var testNum:Number;
  7. function getPctLoaded ()
  8. {
  9.     testNum = 0;
  10.     return testNum;
  11. }

2、新建test.html网页,代码如下

html Code:
  1. < !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>无标题文档</title>
  6. </head>
  7. <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" id="testSWF" width="550" height="400" title="test">
  8.   <param name="movie" value="test.swf" />
  9.   <param name="quality" value="high" />
  10.   <embed src="test.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="550" height="400"></embed>
  11. </object>
  12. <form>
  13.   <input type="button" onclick="callExternalInterface()" value="Call ExternalInterface" />
  14. </form>
  15. <script>
  16. function callExternalInterface() {
  17.     alert(thisMovie("testSWF").getTestNum());
  18. }
  19.  
  20. function thisMovie(movieName) {
  21.     if (navigator.appName.indexOf("Microsoft") != -1) {
  22.         return window[movieName]
  23.     }
  24.     else {
  25.         return document[movieName]
  26.     }
  27. }
  28. </script>
  29. <body>
  30. </body>
  31. </html>

3、测试,通过浏览器运行test.html,点击按钮后效果如图:
运行效果

随机文章:

Leave a Reply