Pregunta

He ideado el siguiente método para atrapar errores a lo largo de mis aplicaciones AS3:

En la clase de documentos, defina los siguientes métodos:

//This is the handler for listening for errors
protected function catchError(event:ErrorEvent):void 
{ 
  displayError('Error caught: ' + event.text);
}

//Creates a MovieClip with a TextField as the child.
//Adds the MC to the stage
protected function displayError(msg:String):void
{
  var errorMC:MovieClip = new MovieClip();
  errorMC.graphics.beginFill(0xffffff);
  errorMC.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
  errorMC.graphics.endFill();

  var errorTxt:TextField = new TextField();
  errorTxt.multiline = true;
  errorTxt.width = stage.width;
  errorTxt.height = stage.height;
  errorTxt.selectable = true;
  addChild(errorMC);
  addChild(errorTxt);

  errorTxt.text = 'Error(s) Caught: \n' + msg;
}

Para lidiar con las clases que se utilizan dentro de la clase de documento, agrego lo siguiente para que pueda registrar las funciones mencionadas anteriormente:

protected var errorCatcher:Function;
protected var displayError:Function;

public function setErrorDisplayer(f:Function):void
{
  displayError = f;
}

public function setErrorCatcher(f:Function):void
{
  errorCatcher = f;
}

Ahora, puedo mostrar errores en el SWF en Tiempo de ejecución, al probar la aplicación en el navegador.

Por ejemplo: (No probé lo siguiente, es solo un ejemplo)

//Document class
package com
{
  import flash.display.MovieClip;
  import flash.event.ErrorEvent;
  import flash.text.TextField;
  import com.SomeClass;

  public class Document extends MovieClip
  {
    protected var someClass:SomeClass = new SomeClass();

    public function Document():void 
    {
      someClass.setErrorCatcher(catchError);
      someClass.setErrorDisplayer(displayError);
    }

    protected function catchError(event:ErrorEvent):void 
    { 
      displayError('Error caught: ' + event.text);
    }

    protected function displayError(msg:String):void
    {
      var errorMC:MovieClip = new MovieClip();
      errorMC.graphics.beginFill(0xffffff);
      errorMC.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
      errorMC.graphics.endFill();

      var errorTxt:TextField = new TextField();
      errorTxt.multiline = true;
      errorTxt.width = stage.width;
      errorTxt.height = stage.height;
      errorTxt.selectable = true;
      addChild(errorMC);
      addChild(errorTxt);

      errorTxt.text = 'Error(s) Caught: \n' + msg;
    }
  }
}

¿Es esta exageración o estoy perdiendo una "mejor práctica" aquí?

¿Fue útil?

Solución

Puede simplemente usar Firebug para depurar y salirse de un SWF en el navegador.Solo Google para "Firebug AS3", y verás una tonelada de personas que están haciendo esto.

También puede usar algo como de monsterdebugger .Tiene muchas características excelentes.Para obtener una visión general, consulte Video Lee Brimlows de Monsterdebugger de GoToAndlearn .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top