Просмотр полной версии : for (name in Math)
А вот почему этот скрипт ничего не трасирует?
onClipEvent (load) {
for (name in Math) {
trace (Math[name]);
}
}
Что из Math? Клип в руте?
Тогда и пиши полностью _root.Math (просто так на всякий случай что бы хотябы вопрос был понятен).
Что ты хочешь увидеть? Все объекты в Math? Тогда и пиши правильно trace (_root.Math[name]._name);
Вообщето Math служебный объект. Я тебя неправильно понял?
Угу.
Я вот для прикола хотел посмотреть все свойства
слжебного объекта Math...
Хорошо бы конечно :) но нельзя.
Может я скажу чушь, но мне думается что объекты типа Math созданы средствами C++ как следсвие со всем набором средств приватности и областей видимости. Менять можно через скриптовую оболочку, переопределяя ссылки на методы..... Но если можно переопределять то это уже не то...
В спецификации ECMA говорится что есть средства для управленя чтения-записи вот от туда все и идет я думаю.
Было бы не плохо иметь инструментарий управления видимости полей, а то вот в for..in .... он сволочь норовит в прототип забраться, и трейсит поля прототипов, приходится на всякие ухищьрения идти.
Это я так, ворчу
John,
а вот скажи, пожалуйста, что можно почитать в инете,
чтоб осознать практическую полезность ООП во Флэше.
Ты как-то говорил, если я правильно помню, что только объектный подход и используешь....
"практическую полезность ООП во Флэше" ммм ... хоть статью пиши :)
Все не так однозначно.
ООП, в полном его понимании нужено только для решения сложных задач, когда необходимо пользоваться абстракциями. Когда уже не в моготу и созданную тобой систему нельзя разбить на логичные куски, а их в свою очередь...
То есть если говорить о объектно ориентированному подходу к программированию во флэш, а не использовании объектных приемов.
А если таких задач не стоит то и смысла програмировать объектно нет.
Вторая мотивация которая может быть при использовании ООП это желание не переписывать каждый раз для похожих задач код заново, и обзавестись своими библиотечками. Тут тоже полезен ООП, когда объекты выступают в роли серверов и обеспечивают методы как сервисы. Чтобы не думать о начинке, а только пользоваться.
Третья мотивация которая может подтолкнуть к использованию ООП - это желание понимать и контролировать процессы происходяжие во флэш. Без этого будет неполное понимание. Ведь ясно что и JS и сами объеты плейера строятся в объектной ирархии, что функции это не некторые программки в мувиках.... Захочется переопределять, переписывать и добовлять свои методы.
Так что если будет нужно то обхектно ориентированно программировать захочется самому. Все зависит от задач.
по второму вопросу. об источниках.
На самом деле по JS и флэш в частности, как объетно ориентированным скриптовым языкам мануалов практически нет. И это правильно не настолько они сложны. Думаю что я описал в уроке на http://www.3wgraphics.com/experience/index.htm
вполне достаточно, картина достаточно ясна. Можно еще кое что добавить по механизмам взаимодействия билд-ин объектов и созданных, но это не особо важно. Ведь язык то скриптовый и это правильно зачем создвать себе проблемы.
Также полезно почитать спецификацию ECMA.
А лучший мануал это всетаки "Объектно-ориентированный анализ и проектирование" Гради Буча. Он уж точно поставит мозги на место.
хм а на тему обьектов, полей и прочего принадлежащего какомунить классу.
например в МСИЕ можно получить список всех полей объекта плагина:
obj=document.flashId; //надеюсь понятно
list="<PRE>list:\n====\n";
for (element in obj) {
st+="name: <B>"+element+"</B> | value: <I>"+obj[element]+"</I>\n"
}
document.open();
document.write(list+"</PRE>");
document.close();
Однако любой обьект в МСИЕ наследует кучу стандартных полей и объектов, т.е. не все они могут быть полезными по применению к конкретному объекту.
В случае NN плагин взаимодействия браузера с флэш-объектом представляет собой java class. А как многим известно javascript NN очень тесно с онными контактирует.
При исполнении вышеописанного кода NN выведет ко всему тому еще и методы применимые к обьекту.
вот еще для наглядности (NN only):
obj=document.flashId.getClass().getMethods();
for(el in obj) {
alert(obj[el].getName());
}
или
alert(document.flashId.GetVariable($version).toSource());
Вообще если уж говорить о javascript и NN, то я выбираю именно NN а не MSIE.
2ish это все конечно понятно, но не совсем к теме вопроса,
Насколько я понимаю можно посмотрить неприватные поля и методы плейера,
А попробуй сделать трейс Math к примеру. :)
Джон,
а вот бы сделать так, чтоб изменять прототип не у всех мувиков сразу, а только у некоторых...
Оригинал написал(а) john
2ish это все конечно понятно, но не совсем к теме вопроса,
Насколько я понимаю можно посмотрить неприватные поля и методы плейера,
А попробуй сделать трейс Math к примеру. :)
вобщето к теме ;)
а насчет примера, не слабо :)
что бы быть более убедительнее скажу, что например у прототипа обьекта MovieClip есть незадокументированная функция Meth(), а в XML.prototype среди прочего можно увидеть функцию Init() :)
вообще недокументированные возможности меня не сильно интересуют в принципе, две вещи которые полезны ASfunction _changed, причем больше первая, остальные скрытые функции это хорошо конечно, но не особо важно,
а то будешь переписывать все свои работы каждый раз под выход нового плейера.
А вобще интересно....
Насколько забраться так глубоко можно только в НН. Эксплорер не пустит.
Так что чтобы не быть голословным прошу продемонстрировать.
И еще, при открытом формате, и коде плейера... это все цветочки, я думаю.
2john
это стеб :)
любой *приватный* обьект можно просмотреть путем последовательного перебора возможных символов в поле :))) меня хватило только до 4-го рязряда тестируемой строки :))
так что это не стоит отдельного внимания :)
что касается этих и многих других подобных незадокументированных функций, то это вспомогательные функции обьекта.
тот же meth() всеголишь выдает 1 если в качестве аргумента задан "GET"; 2 если "POST"; 0 в остальных случаях.
init() стандартная функция которая вызывается при создании обьекта XML.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.