如何在Flash专业版中调试SWC组件?

时间:2014-03-06 04:20:42

标签: actionscript-3 flash swc jsfl

我已将我的组件编入SWC并将其添加到Flash专业版中。

如果我想调试这个SWC组件,该怎么做? trace()MMExecute()似乎无效。

谢谢!

2 个答案:

答案 0 :(得分:0)

你可以说SWC是你库的一种可执行文件。它是在编译库(源代码)后生成的,编译器会删除所有跟踪,注释并最小化swc文件大小。所以你想知道swc组件的执行情况。你必须实现登录。写一个日志,按照步骤

  1. 在应用程序中创建一个私有变量
  2. private var _fs:FileStream = new FileStream();

    1. 把它放在应用程序的关闭处理程序中。
    2. protected function windowedapplication1_closeHandler(event:Even吨):void`

      {

      var prefsFile:File = File.desktopDirectory;

      prefsFile = prefsFile.resolvePath("logfile.txt");

          fs.open(prefsFile,FileMode.WRITE);
          fs.writeUTFBytes(logString);
          fs.close();
      }`
      

      3.制作另一个名为logString的变量,并根据想要的日期联系字符串

      示例:

      logString += 'onAttitones_creationCompleteHandler'+'\n';

      这将在桌面上写一个日志文件,文件名是logfile.txt

      这可能会对你有所帮助

答案 1 :(得分:0)

您可以通过在其中传递自定义记录器来调试已编译的组件。仅使用两种方法创建ILoggable接口:setLogger(logger: ILogger)log(value: *)。在所需组件中实现接口。

public function log(value:*):void{
    if(_logger != null){
        _logger.log(value);
    }
}

public function setLogger(logger:ILogger):void {
    _logger= logger;
}

现在您可以在组件的每个有趣位置使用log(something),但不要忘记分配记录器:

//Create logger
logger = new TraceLogger();
//...
//Use it somewhere with components, that can produce logs
myComponent = new MyComponent();
myComponent.setLogger(logger);

在项目的某处声明你的史诗跟踪记录器:

public class TraceLogger implements ILogger{
    public function log(value:*):void{
        trace(value);
    }
}