Aug 05 2007

ExternalInterface.addCallback 在IE下的Form的冲突

Posted by neio

调试的时候直觉一直很灵,这次也没错。

可惜昨天调试这么奇怪,已经走到确认是IE下的form 和ExternalInterface.addCallback的冲突了,可惜不知道什么原因失败,让我以为是直觉错了.

让我调试了那么久 把所有Actionscript 2.0 的代码全部改写成 ActionScript 3.0的代码.. 我容易吗?! 气死..

话题回归啊…

ExternalInterface.addCallback在IE下自动生成代码的时候,如果Flash那个Object 是在Form这个标签下,那么就会产生错误(有的情况下可能工作正常?!有待考证!!),原因是那个Flash对象的ID找不到了。

解决的方法呢.. 暂时只有:把那个Flash从Form里面移出来。

–Neio Oct.1 2007

最近发现是IE下要使用Object, Firefox下使用Embed,这样才能正确找到Flash对象,即通过ID来找到Flash对象。

Filed under : Worklog, 汉语 | 1 Comment »
Aug 05 2007

ExternalInterface.addCallback

Posted by neio

by Neio

今天调试Flash 的程序,汗 一个, IE莫名其妙的一直找不到FLASH Object,这里顺便摘录一下ExternalInterface.addCallback所自动生成的内容:

function __flash__arrayToXML(obj) {
  var s = "";
  for (var i=0; i
    s += "
" + __flash__toXML(obj[i]) + "";
  }
  return s+"";
}
function __flash__argumentsToXML(obj,index) {
  var s = "";
  for (var i=index; i
    s += __flash__toXML(obj[i]);
  }
  return s+"";
}
function __flash__objectToXML(obj) {
  var s = "";
  for (var prop in obj) {
    s += "
"
          + __flash__toXML(obj[i])
        + "";
  }
  return s+"";
}
function __flash__escapeXML(s) {
  return s.replace(/&/g, "&")
          .replace(/>/g, ">")
          .replace(/"/g, """)
          .replace(/'/g, "'");
}
function __flash__toXML(value) {
  var type = typeof(value);
  if (type == "string") {
    return "" + __flash__escapeXML(value) + "";
  } else if (type == "undefined") {
    return "";
  } else if (type == "number") {
    return "" + value + "";
  } else if (value == null) {
    return "";
  } else if (type == "boolean") {
    return value ? "
" : "";
  } else if (value instanceof Date) {
    return "" + value.getTime() + "";
  } else if (value instanceof Array) {
    return __flash__arrayToXML(value);
  } else if (type == "object") {
    return __flash__objectToXML(value);
  } else {
    return "";
 }
}
function __flash__addCallback(instance, name) {
  instance[name] = function () {
  return eval(
         instance.CallFunction(
        ""
        +   __flash__argumentsToXML(arguments,0)
        + ""));
}

  }
}
function __flash__removeCallback(instance, name) {
  instance[name] = null;
}
Filed under : Worklog, 汉语 | No Comments »