SharpFlash.as
上传用户:lctyggxszx
上传日期:2022-06-30
资源大小:280k
文件大小:3k
源码类别:

FlashMX/Flex源码

开发平台:

C#

  1. #include "wddx_mx.as"
  2. if (_global.$SharpFlash == undefined) {
  3. _global.$SharpFlash = new Object();
  4. _global.$SharpFlash.WDDX = new WDDX();
  5. // The callback list is a hash table of function
  6. // references so we can execute a function when
  7. // the SharpFlash wrapper is done executing.
  8. _global.$SharpFlash.CallBackList = new Object();
  9. // This is the function that is fired when a method is
  10. // done executing and needs to invoke a method inside
  11. // of the Flash app.
  12. _global.$onSFData = function(prop, oldVal, newVal) {
  13. var response_xml = new XML();
  14. response_xml.parseXML(newVal);
  15. response_xml = response_xml.firstChild.firstChild;
  16. var tmp = response_xml.childNodes[0].firstChild;
  17. // The callback functions up to this point have either 1
  18. // or 2 arguments, and we determind this by the number
  19. // of <arg> nodes in the xml packet sent from SharpFlash
  20. var argCount = response_xml.childNodes[1].childNodes.length;
  21. switch (argCount) {
  22. case 1:
  23. var arg1_wddx_xml = new XML();
  24. arg1_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[0].firstChild);
  25. var funcArgs = new Array(1);
  26. funcArgs[0] = _global.$SharpFlash.WDDX.deserialize(arg1_wddx_xml);
  27. // Execute the callback function on the specified scope, 
  28. // passing in the arguments given to us by the SharpFlash wrapper.
  29. _global.$SharpFlash.CallBackList[tmp].callback.apply(_global.$SharpFlash.CallBackList[tmp].scope, funcArgs);
  30. // debug code: 
  31. //_root.callback_txt.text = "1 Arg Result: " + funcArgs[0];
  32. break;
  33. case 2:
  34. var arg1_wddx_xml = new XML();
  35. arg1_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[0].firstChild);
  36. var arg2_wddx_xml = new XML();
  37. arg2_wddx_xml.parseXML(response_xml.childNodes[1].childNodes[1].firstChild);
  38. var funcArgs = new Array(2);
  39. funcArgs[0] = _global.$SharpFlash.WDDX.deserialize(arg1_wddx_xml);
  40. funcArgs[1] = _global.$SharpFlash.WDDX.deserialize(arg2_wddx_xml);
  41. // Execute the callback function on the specified scope, 
  42. // passing in the arguments given to us by the SharpFlash wrapper.
  43. _global.$SharpFlash.CallBackList[tmp].callback.apply(_global.$SharpFlash.CallBackList[tmp].scope, funcArgs);
  44. // debug code:
  45. //_root.callback_txt.text = "2 Arg Result: [0] = " + funcArgs[0] + "n[1] = " + funcArgs[1];
  46. break;
  47. }
  48. // At this point we can do away with the data in the 
  49. // CallBackList hashtable.. 
  50. // just mark the location as null and let the garbage collector
  51. // deal with it
  52. _global.$SharpFlash.CallBackList[tmp] = null;
  53. }
  54. // $SFData needs to be defined in _root (not _global) because of how the
  55. // variable is set within the ActiveX control
  56. _root.$SFData = "";
  57. _root.watch("$SFData", _global.$onSFData);
  58. }