32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 27 Декабрь 2005, 16:24:32
Цитата:
Вытаскиваем на таймлайн компонент ScrollPane, а в первый фрейм вставляем код:
- ага. клево.
собственно ни разу не нарывался на подобные глюки.
причина проста:
юзаю компоненты и классы только хорошо зарекомендовавших себя разработчиков. и то очень редко.
макромедийцы же сами не умеют юзать собственный продукт.
я уж и не помню как открывается панелька с их компонентами.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 27 Декабрь 2005, 16:39:16
прорвало, сорри
еще по п.3:
Цитата:
в случае с таймлайном - это масло масленное.
- вовсе нет.
как раз уверенность в том, что эти записи ИДЕНТИЧНЫ:
if (some_flag){}
if (this.some_flag){}
порождает ошибку. эти записи не ИДЕНТИЧНЫ.
причина понятна. в первом случае проверяется еще и _global.
Речь идет о том, что нужно указывать путь к переменной. Как я уже выше писал, объявление var и есть указание такого пути.
Объявление переменной с помощью var на таймлайне и указатель this - это немного разные вещи.
Цитата:
раздваяюцца мнения о тех переменных, которые не объявлены
Так о чем говорим то? … о this, как обязательном указатели пути к переменной, или о необъявленных переменных, с которым нужно как-то обходиться?
Цитата:
я категорически против "this - должен быть использован там где он необходим" единообразие написания кода очень важно. … если ты к одним переменным ("там где необходимо") обращаешься через this, а к другим без.
А я и не говорил, что для одной переменной пишу this, а для другой нет. Не пишу я this для переменных на таймлайне вообще
Цитата:
ты пишешь на таймлайне … а потом втыкаешь чужой прелодер, который в _global без твоего ведома пихает _global.some_flag = true В итоге ты долго ищешь причину, по которой твой код работает некорректно. и это может случиться в любой момент с любой такой переменной!!!
Все будет работать именно так как я и хотел, и _global тут не причем
_global.x = 10;
var x = 20;
x *= x;
trace(x);
Про цепочки поиска я немного непонял, и если имелось в виду вообще отсутвие декларирированной переменной some_flag - так я такого не допущу, я обязательно объявлю в начале var some_flag; ( this.some_flag = undefined )
оффтопик:
Пришел когда-то мой брат (Чего-то там на Сях под железки какие-то пишет) на новую работу, написал там первые свои строки кода:
function (){ }
а ему и говорят, у нас пишут вот так:
function () { }
Он сказал, что ему так удобее и так привык, и какая всем разница, если от него остальным нужен лишь интерфейс и все будет работать, а ему ответили что дверь находится вот там то …, с тех пор он (и вся контора) пишет в едином ключе, по единым правилам и ни кто никуда не фтыкает "_global.flag" и все живут в мире и согласии
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 28 Декабрь 2005, 02:19:30
Цитата:
Объявление переменной с помощью var на таймлайне и указатель this - это немного разные вещи.
- тут пока не соглашусь. очень интересно было бы увидеть разницу. еще ни разу не видел. крайне интересно.
Цитата:
Так о чем говорим то?
- о необъявленных в первую очередь, как о явной ошибке. об остальных речь как о хорошей практике.
Цитата:
Не пишу я this для переменных на таймлайне вообще
- полагаю, что это плохая практика, поскольку идет вразрез с общепринятыми стандартами во флэш.
впрочем, при условии обязательного объявления, я бы не назвал это грубой ошибкой.
оффтопик:
оффтоп красив. у нас конечно никто на дверь не указует, но есть некие рулы, которых придерживаемся. но, полагаю, это разговор для отдельного топика.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 28 Декабрь 2005, 02:30:14
рад буду, если кто-нибудь опровергнет:
поясню почему я считаю, что объявление var на таймлайне и использование this вещами ИДЕНТИЧНЫМИ.
если рассмотреть работу var внутри метода или функции, то увидим, что функция во время вызова создает
объект инициализации функции, который для всех локальных переменных является контейнером.
после выхода из функции этот контейнер, если на него не осталось ссылок, уничтожается сборщиком мусора.
т.е. реализация var это не более чем указание этого контейнера в качестве this объекта для локальных переменных.
в случае с объявлением var на таймлайне этим контейнером является мувиклип, на таймлайне которого объявили var.
и.…
дальше ни малейших отличий.
Первый и второй пункт слепи в один (это об одном и том же), и прочитай первый свой пост в этом топе. Одним начали, другим заканчиваем.
На счет хорошей практики - это твое субъективное мнение, последнее время с такой "хорошей практикой" сталкиваюсь в еденичных случаях, у людей которые не могу растаться с 6-кой, … ах да, еще в хелпе у ММ, где можно найти десяток различных подходов.
В купе с обязательным объявлением и минимальным кодом инициализации приложения, располжоленным на таймлайне (что то вроде main) + изолированный в классах код - это да, это я встречаю довольно часто …
0 Сообщения: 585 Зарегистрирован: 12.03.04 Откуда: Беларусь - Борисов
Добавлено: 28 Декабрь 2005, 03:32:06
@st@l@vist@, а тем что на тайм лайне твой контейнер это всегда мувик/бутон или что-нить в это роде. а если ты его не удалишь, то сборщик мусора его точно не коцнет. особенно это качается рута что тут не понятного?
На сколько я помню, var xyz; вне тела функции обрабатывается следующим образом - помешает переменную xyz в стек со значением undefined, то есть примерно тоже самое что и this.xyz = undefined;
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 28 Декабрь 2005, 04:19:09
давай вот это обсудим:
использование this в AS2 классах. я считаю обязательно.
конечно, если огородиться условиями типа:
класс не динамический
все переменные объявлены
то никаких проблем и вроде можно писать без this.
но
как только возникает необходимость в динамическом классе, всё летит к чертям.
нужно писать this.
тут же теряем единообразие написания кода.
опять же, это здорово когда на таймлайне кода почти нет.
но.
смею утверждать, что таких проектов единицы, поскольку это свойственно крупным проектам.
большинство проектов пишется в лучшем случае только с использованием готовых AS2 классов.
всё остальное собирается на родимом таймлайне, на котором неуказание this - плохая практика.
и опять нарываемся на то, что в классах this не указывается а на таймлайне указывается.
в итоге опять имеем отсутствие единого подхода.
указание var на таймлайне вместо использования this - наверное впервые от тебя услышал.
совершенно нераспространенная практика,
как следствие - далеко не всем понятная,
как следствие - не рекомендуемая.
мда господа. вы повторяетесь уже третью страницу. Ради галочки - отмечусь!
был такой вопрос на форуме, как человеку десять раз подряд прибавить к числу одинаковое значение. Он писал это в столбик, он же будет делать так:
{
this.a++
this.b++
trace((this.c+this.b+this.a)*(his.b+this.a)/2)
}
Рационализатор с знаниями и умениями будет делать так
{
with(this){
a++
b++
trace((a+b+c)*(a+b)/2)
}
}
если какие то переменные не объявленны в this (последний пример), то их можно объявить.
if(this.a==undefined)this.a=0
далее писать просто a++
Если тебе нужно сделать кучу промежуточных вычислений. то надо быть ну полным тормозом чтоб писать
this.a+this.b+this.c
проще сделать
var res=a+b+c
res*=2
потом выдать результат
this.endres=res
Как только кто-то заикается о том что код без this нельзя прочитать другому умному программеру, я начинаю ДИКО РЖАТЬ, так же как и после речей о производительности.
Для читабельности есть два понятия у Нормальных людей. первое это КОММЕНТАРИИ КОДА, а второе это АРХИТЕКТУРА проекта.
Насчёт АС3. не надо переучиваться. нужно просто писать по другому. видимо кто то так и остался на урнове шестёрки (я о плейере) гы
оффтопик:
BlooDHounD, действительно молодой. стока дрыхнуть этож стыд и срам! просто два часа выкинул из жизни! я уж молчу о выходных.
iv, не, я просто не понял, что именно ты хош от меня услышить - естественно я пользуюсь this["…"] - и на таймлайне, и внтури классов.
Кстати, вот подвернулась под руку книженция Мука (In Essential ActionScript 2.0), заглянул ради интереса, на предмет нашего спора - ну не пишет он this в каждой строчке.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 28 Декабрь 2005, 16:58:24
оффтопик:
да, кстати, очень я зауважал сенокуляра за его примеры использования битмапов. особенно за линзу.
Цитата:
другому умному программеру
- всё не проблема до тех пор, пока работаешь один, а не в команде с помощниками.
я говорю о собственном опыте: строгость по отношению к мелочам в программинге окупается сторицей.
потому как в большом проекте одна неаккуратность может стоить долгих часов выяснений причины бага.
ты бы сам что посоветовал начинающему, использовать this или нет,
если бы точно знал, что со своими проблемами он прибежит к тебе?
что из-за его недопонимания областей видимости тебе придется тратить время на исправление его кода?
зная, что часть вопросов будет попросту снята при обязательном использовании this, думаю, что да.
так почему самому бы не использовать собственные рекомендации?
почему бы это не сделать корпоративными рулами, чтобы не нарываться на баги своих начинающих помощников?
bE(o0L, топик и играет роль рекламной акции форума № 14 - скоро на 4-ую перевалим
Больше всего меня поражает, что люди вчитываются в бред что мы тут понаписали
я не совсем согласен что бред..
мне как начинающему интерестно почитать, так как нужно привыкать изначально писать грамотно и понятно. ну и заодно тут есть чему поучится всетаки с примерами даже есть посты
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 30 Декабрь 2005, 01:08:19
nuran, я пытаюсь донести свою позицию.
на истину в последней инстанции не претендую.
вроде еще не дошел до той стадии когда перестаешь прислушиваться к окружающим.
если кто-либо мотивированно докажет обратное, то забуду про этот this раз и навсегда.
при этом надеюсь на то, что общаюсь с людьми которые также до той самой стадии не дошли.
Дадада .. ты меня убил первым же своим постом там:
Цитата:
Не всегда this корректно работает.
А про дальнейший бред про прототипы я ваще молчу В общем прочитал полностью. Посмеялся от души СПАСИБО! РЕКОМЕНДУЮ!!! ПОЛЧАСА ФЛЭШЕГО ЮМОРА!!!! РЕБЯТА Я ТАК РАНЬШЕ НЕ СМЕЯЛСЯ!!!!
0 Сообщения: 585 Зарегистрирован: 12.03.04 Откуда: Беларусь - Борисов
Добавлено: 30 Декабрь 2005, 03:55:35
bE(o0L, да какая разница? это он сам скинул. и как я понял он так и не понял, что он не прав обсуолютно поэтому гордо представил материал на публику. и до сих пор утверждает, что this глюЧИТ. да и не относится это к теме топика никак. не по теме.
НО ДЛЯ ХОРОШЕГО СМЕХА - РЕКОМЕНДУЮ.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 30 Декабрь 2005, 04:19:15
оффтопик:
this действительно не всегда корректно работает. вот пример: в руте задана переменная: this.foo = 100 а в неком мувике, совсем в другом месте такой код: trace (this.foo) - выдает undefined.… this.foo ведь задан, почему тогда не трейсится в другом мувике? и, главное: непонятно, как этот глюк лечить.
32 Сообщения: 166 Зарегистрирован: 26.10.05 Откуда: Москва
Добавлено: 30 Декабрь 2005, 04:34:57
оффтопик:
ага, нечего. корпоративная вечерина закончилась, все разошлись по домам или спят [зачеркнуто]пацталом[/зачеркнуто] под столом. чем еще заняться в пол пятого утра?
this действительно не всегда корректно работает. вот пример: в руте задана переменная: this.foo = 100 а в неком мувике, совсем в другом месте такой код: trace (this.foo) - выдает undefined.… this.foo ведь задан, почему тогда не трейсится в другом мувике? и, главное: непонятно, как этот глюк лечить.
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.