Показать сообщение отдельно
Старый 16.12.2014, 21:13
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 2  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
undefined - благодаря Котяре, и СлаваРа - можно уже забыть про отладчик и встроить нормальный. Вот рабочий код

Код AS3:
package com.in4core.utils 
{
	import com.in4core.text.DisplayText;
	import flash.display.LoaderInfo;
	import flash.display.Sprite;
	import flash.display.Stage;
	import flash.events.ErrorEvent;
	import flash.events.KeyboardEvent;
	import flash.events.MouseEvent;
	import flash.events.UncaughtErrorEvent;
	import flash.text.TextField;
	import flash.ui.Keyboard;
	/**
	 * ...
	 * @author in4core progression lab
	 */
	public final class LoggerBox 
	{
		private static var errorString:String = "";
		private static var field:TextField = DisplayText.addField(null, 14, false, "none", true);
		private static var errorBox:Sprite = new Sprite();
		private static var closeBox:Sprite = new Sprite();
		private static var holder:Stage = null;
 
		public static function init(stage:Stage, loaderInfo:LoaderInfo):void
		{
			holder = stage;
 
			errorBox.graphics.beginFill(0, 0.7);
			errorBox.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			errorBox.addChild(field);
			field.x = field.y = 10;
			field.textColor = 0xFFFFFF;
			field.selectable = true;
			field.multiline = true;
			field.wordWrap = true;
			field.width = stage.stageWidth - 50;
			field.height = stage.stageHeight - 30;
 
			closeBox.graphics.beginFill(0, 0);
			closeBox.graphics.drawRect(0, 0, 15, 15);
			closeBox.graphics.lineStyle(3, 0xFF0000);
			closeBox.graphics.lineTo(15, 15);
			closeBox.graphics.moveTo(0, 15);
			closeBox.graphics.lineTo(15, 0);
			closeBox.buttonMode = true;
			closeBox.mouseChildren = false;
			errorBox.addChild(closeBox);
			closeBox.x = errorBox.width - 25;
			closeBox.y = 10;
 
			closeBox.addEventListener(MouseEvent.CLICK , closeBoxHandler);
 
			errorString = '<font color="#FF0000">Some errors are happend :\n\n</font>';
 
			if (loaderInfo.uncaughtErrorEvents) 
			{
				loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
			}
		}
 
		static private function onKeyDOwn(e:KeyboardEvent):void 
		{
			if (e.keyCode == Keyboard.ESCAPE) 
			{
				holder.removeEventListener(KeyboardEvent.KEY_DOWN , onKeyDOwn);
				closeBoxHandler(null);
			}
		}
 
		private static function closeBoxHandler(e:MouseEvent):void 
		{
			if (errorBox.parent) holder.removeChild(errorBox);
		}
 
		private static function uncaughtErrorHandler(e:UncaughtErrorEvent):void
        {
			e.preventDefault();
 
			errorString += e.error.getStackTrace() + "\n\n";
			field.htmlText = errorString;
 
			if (!errorBox.parent) holder.addChild(errorBox);
 
			holder.addEventListener(KeyboardEvent.KEY_DOWN , onKeyDOwn);
 
			return;
 
            if (e.error is Error)
            {
                var error:Error = e.error as Error;
				errorString += error.message + "\n";
            }
            else if (e.error is ErrorEvent)
            {
                var errorEvent:ErrorEvent = e.error as ErrorEvent;
				errorString += errorEvent.text + "\n";
            }
            else
            {
				errorString += e.error.toString() + "\n";
            }
 
			field.htmlText = errorString;
        }
 
	}
 
}
Вещается до строчки new Controller или любого другого инита так :
Код AS3:
LoggerBox.init(stage,loaderInfo);
__________________
Марк Tween