PDA

Просмотр полной версии : ошибка обращения к undefined


ISergey
26.09.2012, 13:29
Добрый день.
Подскажите, можно ли во Flashdevelop (проект AS2) отловить ошибку при обращении к undefined объектам?
Т.е. цель получать некий сигнал об этом, способом, отличном от явной проверки на undefined.
(Проект растет, много отладочного кода ухудшают восприятие логики, а механизм сигнализирования помог бы из абстрактного "почему не работает" сразу отвечать на вопрос "почему объект неопреден?"

iNils
26.09.2012, 23:11
В as1 была такая возможность с помощью resolve
MovieClip.prototype.__resolve = function (f) {
trace ("FUNCTION '" + f + "' NOT FOUND");
};
_root.dge ();

Типа пытаемся вызвать метод dge и если он не определен, то вызывается __resolve.
Можно попробовать использовать его.

ISergey
27.09.2012, 01:49
Спасибо, почитал, то что нужно.
Вроде можно даже применять не только к MovieClip но в целом к Object'у
Object.prototype.__resolve = ...
а "вроде", потому что ни 1-й ни 2-й вариант компилятор проглатывать не захотел.
как только появлется такая конструкция - проект зависает.
Может проблема в использовании Mtasc?? (v1.14)

iNils
27.09.2012, 14:02
Я давно не работал с as1/as2 и mtasc, не помню была ли у меня подобна проблема.

ISergey
27.09.2012, 16:34
спасибо и на этом. подниму вопросом в ветке as1/2, может кто и сталкивался.

ISergey
27.11.2012, 16:16
решение оказалось следующим (FD, проект AS2)
попинал свою невнимательность, добавил подчеркивание в совет выше
Object.__proto__.__resolve = function (f:String) {
trace ("FUNCTION '" + f + "' NOT FOUND");
}
еще вариант: читаем внимательно документацию по __resolve, смотрим рабочий пример для конкретного объекта
// новый объект
var myObject:Object = new Object();

// определим __resolve функцию
myObject.__resolve = function (name) {
return "Hello, world!";
};
trace (myObject.property1); // output: Hello, world!
trace (myObject.property2); // output: Hello, world!