大众计算机学习网

专门提供各种电脑教程

LFASH脚本之Point.add、ExternalInterface.addCallback、ExternalInterface.addCallback方法

Admin | 2013-2-28 9:30:24 | 被阅次数 | 4080

  一、add(Point.add 方法)

  public add(v:Point) : Point

  将另一个点的坐标添加到此点的坐标以创建一个新点。

  可用性:ActionScript 1.0;Flash Player 8

  参数v:flash.geom.Point - 要添加的点。

  返回flash.geom.Point - 新点。

  下面的示例通过向 point_1 添加 point_2 来创建 Point 对象 resultPoint。

  import flash.geom.Point;
  var point_1:Point = new Point(4, 8);
  var point_2:Point = new Point(1, 2);
  var resultPoint:Point = point_1.add(point_2);
  trace(resultPoint.toString()); // (x=5, y=10)

  二、addCallback(ExternalInterface.addCallback 方法)

  public static addCallback(methodName:String, instance:Object, method:Function) : Boolean

  将 ActionScript 方法注册为可从容器调用。成功调用 addCallBack() 后,容器中的 JavaScript 或 ActiveX 代码可以调用在 Flash Player 中注册的函数。

  可用性:ActionScript 1.0;Flash Player 8

  参数:methodName:String - 从 JavaScript 调用 ActionScript 函数时可使用的名称。此名称不必与ActionScript 方法的实际名称匹配。

  instance:Object - this 在该方法中被解析成的对象。此对象不一定是在其上可找到该方法的对象,您可以指定任何对象(或 null)。

  method:Function - 要从 JavaScript 调用的 ActionScript 方法。

  返回值为true - 如果调用成功,则返回 Boolean。如果调用由于下列原因而失败,则返回 false:实例不可用、遇到了安全限制、没有这种函数对象、发生了递归或类似情况。

  返回值为 false 还可能表示包含环境属于调用代码无权访问的安全沙箱。您可以在包含环境的 HTML 中为 allowScriptAccess OBJECT 标签或 EMBED 标签设置一个合适的值,以解决此问题。

  下面的示例将 goToMacromedia() 函数注册为可使用名称 goHome 从容器调用。

  import flash.external.*;

  var methodName:String = "goHome";
  var instance:Object = null;
  var method:Function = goToMacromedia;
  var wasSuccessful:Boolean = ExternalInterface.addCallback(methodName, instance, method);

  var txtField:TextField = this.createTextField("txtField", this.getNextHighestDepth(), 0, 0, 200, 50);
  txtField.border = true;
  txtField.text = wasSuccessful.toString();

  function goToMacromedia() {
      txtField.text = "http://www.macromedia.com";
      getURL("http://www.macromedia.com", "_self");
  }

  为了使上一示例能够正常运行,应复制以下代码并将其粘贴到包含 HTML 页中。此代码依赖 OBJECT 标签的 id 属性和 EMBED 标签的 name 属性以获得值 externalInterfaceExample。由于 Internet Explorer 和 Netscape 以不同方式引用 movie 对象,所以函数 thisMovie 根据浏览器返回相应的语法。除非服务器上承载 HTML 页,否则您的浏览器可能会出现安全警告。

  注意:请避免使用访问插件对象的其它方法(如 document.getElementById("pluginName") 或 document.all.pluginName),因为这些其它方法在所有浏览器上的运行不一致。

  <form>
      <input type="button" onclick="callExternalInterface()" value="Call ExternalInterface" />
  </form>
  <script>
  function callExternalInterface() {
      thisMovie("externalInterfaceExample").goHome();
  }

  function thisMovie(movieName) {
      if (navigator.appName.indexOf("Microsoft") != -1) {
          return window[movieName]
      }
      else {
          return document[movieName]
      }
  }
  </script>

  三、addDelayedInstance(ExternalInterface.addCallback 方法)

  public static addDelayedInstance(instance:Object, stringID:String) : Void

将 {实例, 字符串 ID} 对添加到内部数组中,供以后使用。它主要由 Flash 在字符串替换方法为 "automatically at runtime" 时使用。

  可用性:ActionScript 2.0;Flash Player 7

  参数instance:Object - 要填充的文本字段的实例名称。

  stringID:String - 语言字符串 ID。

  下面的示例使用 autoReplace 属性和 addDelayedInstance() 方法来用英语 XML 语言文件中的 IDS_GREETING 字符串填充舞台上的文本字段。

  import mx.lang.Locale;
  greeting_txt.autoSize = "left";
  Locale.autoReplace = true;
  Locale.addDelayedInstance(greeting_txt, "IDS_GREETING");
  Locale.loadLanguageXML("en");