Просмотр полной версии : вопрос к профи!!!!
=winner=
03.09.2005, 10:48
У меня вопрос: :confused:
Почему watch() не работает со свойствами мувиков таких, как _x, _y?
Можно ли это как то обойти?
И ещё один:
Я хотел макромедийный трейс заменить свой и сделал
ASSetPropFlags(_global, null, 6, false);
trace = function(val){
_root.txt.text = String(val);
}
но нифига реального не выходит!
Я пока написал метод к классу, который обходит все классы зарегеные в глобале и добавляет метод trace, но обращаться хочеться к нему не this.trace();, а trace();. Можно это как то придумать? :confused:
В хелпе написано, что watch не работает со свойствами get/set, каковыми являются _x, _y, _width, _heigth и тд
Я пока написал метод к классу, который обходит все классы зарегеные в глобале и добавляет метод trace, но обращаться хочеться к нему не this.trace();, а trace();. Можно это как то придумать?
Ну если ты сделал метод класа, то почему обращаться к нему хочешь как к глобальному методу?
Можешь сделать так:
_global.echo = function () {
trace (arguments);
};
echo (1, 2, 3);
можно добавить в Object.prototype, но функция должна называться по другому, так как это не метод объекта а глобальная функция, такая как gotoAndPlay, gotoAndStop, stop, play
class Logger {
public static var __instance:Logger = null;
public static var __defaultLevel:Number = 0;
public static var __defaultMessage:String = '>> default message';
public var INFO:Number = 0;
public var DEBUG:Number = 1;
public var WARN:Number = 2;
public var ERROR:Number = 3;
public var FATAL:Number = 4;
public var SERVER_IN:Number = 5;
public var SERVER_OUT:Number = 6;
private var __records:Array = new Array ();
public function Logger () {
}
public function traceIt (level:Number, msg:String):Void {
// new Record
var o:LoggerRecord = new LoggerRecord (level, msg);
// push message
__records.push (o);
var levels:Array = ['INFO', 'DEBUG', 'WARN', 'ERROR', 'FATAL', 'SERVER_IN', 'SERVER_OUT'];
trace (levels [level] + ' >> ' + msg);
}
public static function init (flag:Boolean):Void {
var t:Object = Object.prototype;
if (__instance == null) {
t.log = __instance = new Logger ();
} // end if
}
}
class LoggerRecord {
public var level:Number = null;
public var message:String = null;
public var time:Number = null;
// -------------------------------------------------
// Constructor
// -------------------------------------------------
public function LoggerRecord (logLevel:Number, logMessage:String) {
// set Level
level = (logLevel == undefined || isNaN (Number (logLevel))) ? Logger.__defaultLevel: logLevel;
// set mesage
message = (typeof logMessage != 'string') ? Logger.__defaultMessage : logMessage;
// set time
time = new Date ().getTime();
}
}
Logger.init ();
log.traceIt (log.ERROR, 'опа Aшибка');
например что-то типа этого, если ты пользуешь AS1, то ни каких проблем, если в АС2, то надо в базовый класс добавить
public static var log:Logger;
=winner=
14.09.2005, 09:23
У меня еще вопрос дла ФЛЕШЕРОВ:
А как в AS2 задать сеттеры и геттеры?
А, к трейсу я хотел обращаться так, чтоб можно было иметь два трейса т.е. если нет моего, то работает макромедийный, а если есть мой, то он и работает.
=winner=
15.09.2005, 09:20
Да люди не очень хотят мне помочь? :(
в принципе был бы Nirth в онлайне он бы давно уже бы закрыл тему.
Есть хелп, есть переведенный хелп на русском.
public function get _RTFM ():Boolean {
}
public function set _RTFM (value:Boolean):Void {
}
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.