вопрос по классам во Flash @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
На страницу <  1 2 3 4  >  Страница 3 из 4 [ Сообщений: 117 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 27 Декабрь 2005, 16:24:32 

Цитата:
Вытаскиваем на таймлайн компонент ScrollPane, а в первый фрейм вставляем код:

- ага. клево.
собственно ни разу не нарывался на подобные глюки.
причина проста:
юзаю компоненты и классы только хорошо зарекомендовавших себя разработчиков. и то очень редко.
макромедийцы же сами не умеют юзать собственный продукт.
я уж и не помню как открывается панелька с их компонентами.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 27 Декабрь 2005, 16:39:16 
прорвало, сорри :)
еще по п.3:
Цитата:
в случае с таймлайном - это масло масленное.

- вовсе нет.
как раз уверенность в том, что эти записи ИДЕНТИЧНЫ:
if (some_flag){}
if (this.some_flag){}
порождает ошибку. эти записи не ИДЕНТИЧНЫ.
причина понятна. в первом случае проверяется еще и _global.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 00:42:18 

Цитата:
Речь идет о том, что нужно указывать путь к переменной. Как я уже выше писал, объявление 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" и все живут в мире и согласии ;)
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 28 Декабрь 2005, 02:19:30 

Цитата:
Объявление переменной с помощью var на таймлайне и указатель this - это немного разные вещи.

- тут пока не соглашусь.
очень интересно было бы увидеть разницу. еще ни разу не видел. крайне интересно.

Цитата:
Так о чем говорим то?

- о необъявленных в первую очередь, как о явной ошибке.
об остальных речь как о хорошей практике.

Цитата:
Не пишу я this для переменных на таймлайне вообще

- полагаю, что это плохая практика, поскольку идет вразрез с общепринятыми стандартами во флэш.
впрочем, при условии обязательного объявления, я бы не назвал это грубой ошибкой.

оффтопик:
оффтоп красив.
у нас конечно никто на дверь не указует, но есть некие рулы, которых придерживаемся.
но, полагаю, это разговор для отдельного топика.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 28 Декабрь 2005, 02:30:14 
рад буду, если кто-нибудь опровергнет:
поясню почему я считаю, что объявление var на таймлайне и использование this вещами ИДЕНТИЧНЫМИ.

если рассмотреть работу var внутри метода или функции, то увидим, что функция во время вызова создает
объект инициализации функции, который для всех локальных переменных является контейнером.
после выхода из функции этот контейнер, если на него не осталось ссылок, уничтожается сборщиком мусора.
т.е. реализация var это не более чем указание этого контейнера в качестве this объекта для локальных переменных.

в случае с объявлением var на таймлайне этим контейнером является мувиклип, на таймлайне которого объявили var.
и.…
дальше ни малейших отличий.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 02:39:29 
Первый и второй пункт слепи в один (это об одном и том же), и прочитай первый свой пост в этом топе. Одним начали, другим заканчиваем.

На счет хорошей практики - это твое субъективное мнение, последнее время с такой "хорошей практикой" сталкиваюсь в еденичных случаях, у людей которые не могу растаться с 6-кой, … ах да, еще в хелпе у ММ, где можно найти десяток различных подходов.

В купе с обязательным объявлением и минимальным кодом инициализации приложения, располжоленным на таймлайне (что то вроде main) + изолированный в классах код - это да, это я встречаю довольно часто …
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 02:45:03 
_iv, честно говоря, способы инициализации переменных - это выпадает из темы, тема у нас другая, обязательное указание пути, но да бог с ним …

А что касается var - с чего ты решил что они одинаково работают на таймлайне и в пределах функции? - я не рогом упераюсь, я узнать хочу :)
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 28 Декабрь 2005, 03:32:06 
@st@l@vist@, а тем что на тайм лайне твой контейнер это всегда мувик/бутон или что-нить в это роде. а если ты его не удалишь, то сборщик мусора его точно не коцнет. особенно это качается рута ;) что тут не понятного?
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 04:00:51 
На сколько я помню, var xyz; вне тела функции обрабатывается следующим образом - помешает переменную xyz в стек со значением undefined, то есть примерно тоже самое что и this.xyz = undefined;

BlooDHounD, … И при чем тут сборщики мусора?
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 28 Декабрь 2005, 04:19:09 
давай вот это обсудим:
использование this в AS2 классах. я считаю обязательно.

конечно, если огородиться условиями типа:
класс не динамический
все переменные объявлены
то никаких проблем и вроде можно писать без this.
но
как только возникает необходимость в динамическом классе, всё летит к чертям.
нужно писать this.
тут же теряем единообразие написания кода.

опять же, это здорово когда на таймлайне кода почти нет.
но.
смею утверждать, что таких проектов единицы, поскольку это свойственно крупным проектам.
большинство проектов пишется в лучшем случае только с использованием готовых AS2 классов.
всё остальное собирается на родимом таймлайне, на котором неуказание this - плохая практика.
и опять нарываемся на то, что в классах this не указывается а на таймлайне указывается.
в итоге опять имеем отсутствие единого подхода.

указание var на таймлайне вместо использования this - наверное впервые от тебя услышал.
совершенно нераспространенная практика,
как следствие - далеко не всем понятная,
как следствие - не рекомендуемая.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 04:35:48 
А в динамик классах с this - это что имеется в виду? хеши? this["…"]?

оффтопик:
А кстати чего все не спят? :) - не только у меня ужасный режим?
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 28 Декабрь 2005, 04:45:29 
оффтопик:
как тебе сказать … я обычно в 4-5 ложусь, в 6-8 встаю. вот такой вот я гибрид
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 04:49:01 
оффтопик:
2-4 часа сна? - молодой небось еще :) эх...
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 28 Декабрь 2005, 05:06:15 

Цитата:
this["…"]?

- всё что можно. правильность подхода не обсуждаем.
иначе зачем тогда динамические классы?
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 28 Декабрь 2005, 05:10:18 
оффтопик:
21 мне вроде как … но с пятницы на субботу зашкаливает до 14-16 часов %)
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 28 Декабрь 2005, 12:44:18 
мда господа. вы повторяетесь уже третью страницу. Ради галочки - отмечусь! :laugh:

был такой вопрос на форуме, как человеку десять раз подряд прибавить к числу одинаковое значение. Он писал это в столбик, он же будет делать так:
{
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, действительно молодой. стока дрыхнуть этож стыд и срам! просто два часа выкинул из жизни! я уж молчу о выходных. :laugh:

_________________
можно на ТЫ.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 12:57:30 
iv, не, я просто не понял, что именно ты хош от меня услышить :) - естественно я пользуюсь this["…"] - и на таймлайне, и внтури классов.

Кстати, вот подвернулась под руку книженция Мука (In Essential ActionScript 2.0), заглянул ради интереса, на предмет нашего спора - ну не пишет он this в каждой строчке.

Хотя скажем http://senocular.com/flash/actionscript.php - пишет с this ( Тайну открою, у них на работе все сидят на 6-ке :laugh: )


оффтопик:
Да я тоже когда то по три ночи сидеть мог :), перед дипломом неделю не спал … а сейчас, дайте мои 8 часов! :)
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 28 Декабрь 2005, 13:01:35 
bE(o0L, топик и играет роль рекламной акции форума № 14 :) - скоро на 4-ую перевалим :glasses:

Больше всего меня поражает, что люди вчитываются в бред что мы тут понаписали :laugh:
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 28 Декабрь 2005, 16:58:24 
оффтопик:
да, кстати, очень я зауважал сенокуляра за его примеры использования битмапов. особенно за линзу.


Цитата:
другому умному программеру

- всё не проблема до тех пор, пока работаешь один, а не в команде с помощниками.

я говорю о собственном опыте: строгость по отношению к мелочам в программинге окупается сторицей.
потому как в большом проекте одна неаккуратность может стоить долгих часов выяснений причины бага.

ты бы сам что посоветовал начинающему, использовать this или нет,
если бы точно знал, что со своими проблемами он прибежит к тебе?
что из-за его недопонимания областей видимости тебе придется тратить время на исправление его кода?

зная, что часть вопросов будет попросту снята при обязательном использовании this, думаю, что да.

так почему самому бы не использовать собственные рекомендации?
почему бы это не сделать корпоративными рулами, чтобы не нарываться на баги своих начинающих помощников?
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 28 Декабрь 2005, 18:04:57 
Это уже человеческий фактор.
Все с кем мне приходилось общаться, просили лишь комметарии в коде. на this либо with никто не обращал внимания

_________________
можно на ТЫ.
Reijii Муж.
новый человек
0
Сообщения: 137
Зарегистрирован: 10.02.05
Сообщение Добавлено: 28 Декабрь 2005, 18:47:43 

@st@l@vist@ писал(а):
bE(o0L, топик и играет роль рекламной акции форума № 14 :) - скоро на 4-ую перевалим :glasses:

Больше всего меня поражает, что люди вчитываются в бред что мы тут понаписали :laugh:



я не совсем согласен что бред..

мне как начинающему интерестно почитать, так как нужно привыкать изначально писать грамотно и понятно. ну и заодно тут есть чему поучится всетаки с примерами даже есть посты ;)
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 28 Декабрь 2005, 19:39:45 
_iv, ты пытаешься доказать недоказуемое, использование this повсеместно — это бред, никто так не делал, не делает и не будет делать.

p.s. Похоже продолжение старой истории http://flasher.ru/forum/showthread.php?t=50022 :laugh:

_________________
blog : flash / unity
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 30 Декабрь 2005, 01:08:19 
nuran, я пытаюсь донести свою позицию.
на истину в последней инстанции не претендую.
вроде еще не дошел до той стадии когда перестаешь прислушиваться к окружающим.
если кто-либо мотивированно докажет обратное, то забуду про этот this раз и навсегда.
при этом надеюсь на то, что общаюсь с людьми которые также до той самой стадии не дошли.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 30 Декабрь 2005, 01:23:20 

nuran писал(а):
_iv, ты пытаешься доказать недоказуемое, использование this повсеместно — это бред, никто так не делал, не делает и не будет делать.

p.s. Похоже продолжение старой истории http://flasher.ru/forum/showthread.php?t=50022 :laugh:

Дадада .. ты меня убил первым же своим постом там:
Цитата:
Не всегда this корректно работает.

А про дальнейший бред про прототипы я ваще молчу :laugh: В общем прочитал полностью. Посмеялся от души :gent: СПАСИБО! РЕКОМЕНДУЮ!!! ПОЛЧАСА ФЛЭШЕГО ЮМОРА!!!! РЕБЯТА Я ТАК РАНЬШЕ НЕ СМЕЯЛСЯ!!!!
Antares Муж.
новый человек
0
Сообщения: 65
Зарегистрирован: 14.01.04
Откуда: Прекрасное далеко
Сообщение Добавлено: 30 Декабрь 2005, 01:35:58 
Доказано Минздравом: везде, где появляется нураша, пропадают исходники и начинается флейм.

_________________
Novemberain.com | RSS | Action Script 3.0 : Библия для начинающих
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 30 Декабрь 2005, 03:11:23 
BlooDHounD, ээ, браза, ты дату постов смотрел? этож когда было то...

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 30 Декабрь 2005, 03:55:35 
bE(o0L, да какая разница? это он сам скинул. и как я понял он так и не понял, что он не прав обсуолютно :) поэтому гордо представил материал на публику. и до сих пор утверждает, что this глюЧИТ. да и не относится это к теме топика никак. не по теме.
НО ДЛЯ ХОРОШЕГО СМЕХА - РЕКОМЕНДУЮ.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 30 Декабрь 2005, 04:19:15 
оффтопик:
this действительно не всегда корректно работает.
вот пример: в руте задана переменная:
this.foo = 100
а в неком мувике, совсем в другом месте такой код:
trace (this.foo)
- выдает undefined.…
this.foo ведь задан, почему тогда не трейсится в другом мувике?
и, главное: непонятно, как этот глюк лечить.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 30 Декабрь 2005, 04:28:00 
это глюк.


_iv, я удивлён, что ты не знаешь что такое this.
this - это ссылка на объект в котором ты ходишься. тоесть на самого себя.

Если ты в руте пишешь
this.foo = 100; // тоже самое что и _root.foo = 100;

если пишешь в клипе mc
trace(this.foo) // тоже самое что trace(_root.cm.foo)

такие вещи знать нужно … кажется мир шатается. я в шоке.

this - это не _global

пример. пишем этот код в руте.

this.createEmptyMovieClip("mc", 0); // сдесь this - ссылка на _root
this.mc.foo = 100;
this.mc.onEnterFrame = function():Void
{
trace(this.foo); // сдесь this - ссылка на _root.mc

}

это будет работать.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 30 Декабрь 2005, 04:30:52 
iv … вот тебе делать то нечего …
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 30 Декабрь 2005, 04:30:57 
BlooDHounD, - ты серьезно?
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 30 Декабрь 2005, 04:34:57 
оффтопик:
ага, нечего.
корпоративная вечерина закончилась,
все разошлись по домам или спят [зачеркнуто]пацталом[/зачеркнуто] под столом.
чем еще заняться в пол пятого утра?
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 30 Декабрь 2005, 08:15:25 
BlooDHounD, он ше пашутил :cool:

_________________
blog : flash / unity
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 30 Декабрь 2005, 08:37:07 
оффтопик:

Цитата:
this действительно не всегда корректно работает.
вот пример: в руте задана переменная:
this.foo = 100
а в неком мувике, совсем в другом месте такой код:
trace (this.foo)
- выдает undefined.…
this.foo ведь задан, почему тогда не трейсится в другом мувике?
и, главное: непонятно, как этот глюк лечить.



я что то пропустил и вы тут перешли на приколы?

_________________
Здравствуй, Олимпийский!
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 30 Декабрь 2005, 10:37:29 
_iv, Я СЕРЬЁЗНО!
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
На страницу <  1 2 3 4  >  Страница 3 из 4 [ Сообщений: 117 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100