вопрос по классам во Flash @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
На страницу 1 2 3 4  >  Страница 1 из 4 [ Сообщений: 117 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
Reijii Муж.
новый человек
0
Сообщения: 137
Зарегистрирован: 10.02.05
Заголовок сообщения: вопрос по классам во Flash
Сообщение Добавлено: 21 Декабрь 2005, 10:38:02 
Здравствуйте,

подскажите пожалуйста, как обмениватся данными внутри клсса ? искал в литературе ничгео не нашел, на форме тоже.. могет не то искал..

трейс не выдает никаких данных :(

например:

Код:
 class test {
 var a:String;
 var b:String;

 function test(aa:String) {
  this.a = aa;
  bb();
  prn();
 }

 function bb() {
  this.b = this.a + "123";
 }

 function prn() {
  trace(this.b);
 }

 }
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 21 Декабрь 2005, 12:18:28 
что значит обниваться данными?
Reijii Муж.
новый человек
0
Сообщения: 137
Зарегистрирован: 10.02.05
Сообщение Добавлено: 21 Декабрь 2005, 12:26:08 
нетак выразился наверное,

чтобы данные которые путем всяческих обработок, были видны в другой функции класса. как в примере с переменной b.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 21 Декабрь 2005, 12:39:55 
заче ты пишешь this в функции? у тебя есть такая переменная, которая принадлежит функции?

_________________
можно на ТЫ.
Reijii Муж.
новый человек
0
Сообщения: 137
Зарегистрирован: 10.02.05
Сообщение Добавлено: 21 Декабрь 2005, 13:08:14 
ага. спасибо. исправлюсь.. :lady:
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 21 Декабрь 2005, 16:20:17 
Скрипт вполне рабочий! - если trace не работает, значит проблема не в коде.

bE(o0L, недоспал чтоль? :) чем this то тебе навредил? :laugh:
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 21 Декабрь 2005, 18:02:54 
@st@l@vist@, (малёх недоспал, факт) я не против this , тока нафиг он нужен, если вначале все переменные объявили

_________________
можно на ТЫ.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 21 Декабрь 2005, 18:06:40 
кстати если написать так:
function test(aa:String) {
a = aa;
bb();
prn();
}

function bb() {
b = a + "123";
}

function prn() {
trace(b);
}

то трейс работает :P :laugh:

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 21 Декабрь 2005, 18:09:02 
а у меня они до этого работал :insane:
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 21 Декабрь 2005, 18:12:29 
а я до этого и не смарел :dandy:

_________________
можно на ТЫ.
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 21 Декабрь 2005, 23:06:09 
собственно указание пути к переменной - хорошая и настоятельно рекомендуемая практика. т.е.
a = 100
this.a = 100
по идее дают одинаковый результат, но рекомендуется второе, как более читабельное.
и, хотя в классах это не так критично, как в коде на таймлайне, всё же рекомендуется писать this.
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 22 Декабрь 2005, 01:05:18 
для работы с this есть определённые условия. не нужно тыкать его везде подряд
на таймлайне если уж на то пошло, то можно использовать with()

_________________
можно на ТЫ.
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 22 Декабрь 2005, 01:26:30 
Это уже вопрос "вероисповеданий" :), кому как ближе и удобнее, и весь топ плавно перейдет в очередной "AS1 AS2 AS3" …, а разговор верующих - разговор глухих ;)

В общем, кому как больше нравится. Я вот терпеть не могу на таймлайне писать this перед каждой переменной, каждым методом, да и вообще, что-то лишнее, но стоит признать, что порой и мне обойтись без него невозможно, к примеру в случае конфликтов унаследованного из 4-ки loadMovie и метода MovieClip.loadMovie
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 22 Декабрь 2005, 02:04:20 
:yes: :yes: :yes:

_________________
можно на ТЫ.
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 22 Декабрь 2005, 03:20:28 

_iv писал(а):
всё же рекомендуется писать this



Очень интересно. И кем же это рекомендуеться? :) :lamer:

_________________
blog : flash / unity
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 22 Декабрь 2005, 05:29:08 
главное не писать with() а все остальное - на вкус

_________________
Здравствуй, Олимпийский!
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 22 Декабрь 2005, 09:22:29 
и чем же тебе with неугодил то ?
nuran
«Лектор»
46
Сообщения: 1569
Зарегистрирован: 21.05.04
Сообщение Добавлено: 22 Декабрь 2005, 10:13:45 
Король, with раньше был не в моде, а сейчас без разницы, пишешь ты с with или прямыми путями, всё одно и тоже (по словам Nox'а, сам я байткод не проверял, лень).

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

_________________
Здравствуй, Олимпийский!
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 22 Декабрь 2005, 13:32:54 
nuran, для with в байткоде свое место среди команд зарезервировано, в отличии от this, так что кто-кто, а Нокс врядли сказал это ;)
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 22 Декабрь 2005, 13:35:43 
с this код неопрятный. Куража нет.

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 22 Декабрь 2005, 15:17:49 
Как рас таки с ним он наиболие опрятен, так как знаешь к чему ты обращаешься, а не тыкаешься на угад и думаешь: "это у меня свойство или параметр?"
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 22 Декабрь 2005, 15:49:41 
хм ты же САМ пишешь код. и должен знать где у тебя свойства и параметры.
если все переменные и т.п. утыканы this - вот тут как раз мешанина получается полнейшая.

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

Особенно мне интересно посмотреть как например drawing API будет делаться без with(), используя this. Хочу поржать.

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 22 Декабрь 2005, 17:09:20 
class Test
{
var a:Number;
function Test(a:Number)
{
a = a;
}
}

ну если для тебя это нормальный код - тогда извини …

или такой пример:

class Test
{
var _a:Number;
function Test(a:Number)
{
_a = a;
}
function get a():Number
{
retunr _a;
}
}

оно то конечно будет работать в обоих случаях … вот только нормальный человек задумается, "а где что?" если классов 20 штук, и везде таким образом всё заданно.

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

а таких ситуёвин очень много %)
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 22 Декабрь 2005, 17:23:55 
замечтаельно! а это ты к чему?

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 22 Декабрь 2005, 18:01:18 
к отсутвию this
_iv Муж.
Модератор
32
Сообщения: 166
Зарегистрирован: 26.10.05
Откуда: Москва
Сообщение Добавлено: 23 Декабрь 2005, 00:36:19 
использование this это не вопрос вероисповедания или красоты кода.

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

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

Цитата:
a> […] Мне кажется,что тебе бы следовало вместо gotoAndStop(10)
a> написать this.gotoAndStop(10) […]
Ты был прав. this. как раз и не хватало. Теперь все на местах. и целых
2 дня потратил...

и это письмо далеко не первое и уж наверняка далеко не последнее в моей практике.

в принципе, this и иже с ним можно и не указывать. это не ошибка программирования, а плохой стиль.
причина в том, что для многих программеров, особенно пришедших из других языков
или просто начинающих, далеко неочевидны все хитросплетения цепочки областей видимости во Flash.
Не указывая явно путь к переменной мы обрекаем себя и того парня, который этот код впоследствии будет править,
на абсолютное понимание вопроса областей видимости во Flash.
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 23 Декабрь 2005, 01:17:08 
понимание областей видимости - это вопрос опыта а не стиля. нормальный программер даже в чужом (а тем более в своем) коде видит, что если переменная в функции - надо смотреть, кто ее выполняет, если в кадре - надо смотреть, чей он, итд. this тут никакой дополнительной ясности не принесет. с флешем надо прость е-ться, е-ться и еще раз е-ться. и все станет понятно в какой то момент)

_________________
Здравствуй, Олимпийский!
@st@l@vist@
участник
70
Сообщения: 1606
Зарегистрирован: 20.03.03
Откуда: St.Petersburg
Сообщение Добавлено: 23 Декабрь 2005, 01:26:56 
iv, вопросы скорости исполнения кода во флеше - глупость :), мне искренне жаль людей использующих "tellTarget", что выйграть миллисекунду в десятитысячно-итерационном цикле ;)

оффтопик:
Если говорить, о with, ради теории и красивых разговоров, то и тут мне кажется, что первое должно быть теоретически медленнее, чем второе:

var a = 10;
var b = 20;
var c = 23;

// 1) Раз за разом обращаемся к объекту (this) и потом каждый же раз к его новому свойству
trace(this.a);
trace(this.b);
trace(this.c);

// 2) Переходим в область видимости объекта (в данном случае this), и далее перебираем его свойства
with(this)
{
trace(a);
trace(b);
trace(c);
}
Но тут руку на отсечение не дам :)


Что касается указания пути: нужно, ни хоть как то указывать пути, чтобы избежать непознанных ошибок, а понять причины возможных ошибки, и вообще понимать структуру своего приложения и особенности флеша! (Если один раз сел, простите, задом в муравейник - это не повод всю жизнь носить сковороду в штанах :))
Приведенный тобой gotoAndStop и мной loadMovie - это дурное наследство, исключение из правил, но это не повод городить вереницы this, лишь бы куда воткнуть.
This нужно использовать там где это необходимо!

И насчет рекомендации к хорошему стилю программирования во флеше, они говорят о том, что нужно: объявлять переменные, Не пользоваться недокументированным фичами, различными хаками и всевозможными трюками. И заметь все это для того, чтобы "тот парень" потом не мучался ;) - про использование this в каждой строчке кода, там ничего нет …
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 23 Декабрь 2005, 01:30:52 
Король, вот тебе код в кадре, что по твоему должно произойти?

mc.onPress = function():Void
{
gotoAndStop(2);
}
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 23 Декабрь 2005, 01:49:28 
рут уйдет на 2, что же еще

_________________
Здравствуй, Олимпийский!
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 23 Декабрь 2005, 01:50:37 
вернее не рут, а тот клип, к чьем кадре этот код
я что - попал на контрольную по флешу?

_________________
Здравствуй, Олимпийский!
bE(o0L Муж.
постоянный участник
23
Сообщения: 3311
Зарегистрирован: 22.07.03
Откуда: сзабугра
Сообщение Добавлено: 23 Декабрь 2005, 02:22:39 
@st@l@vist@, вот!. да. :beer:

_________________
можно на ТЫ.
BlooDHounD Муж.
соучастник
0
Сообщения: 585
Зарегистрирован: 12.03.04
Откуда: Беларусь - Борисов
Сообщение Добавлено: 23 Декабрь 2005, 03:27:20 
Король, ну где сдесь логика?
Король Муж.
участник
18
Сообщения: 1352
Зарегистрирован: 24.07.04
Сообщение Добавлено: 23 Декабрь 2005, 03:34:52 
логика в том, что когда ты пишешь функцию в кадре клипа - если ты сам не присваиваешь ее чему-либо (mc.function = (){}) и не толкаешь ее в прототип (MovieClip.prototype...) - то она автоматически присваивается клипу, которому принадлежит кадр. И все ее содержимое будет по умолчанию ссылаться на этот клип. логика железная. С какого содержимое функции должно ссылаться на mc только потому , что функция выполняется по его событию?

_________________
Здравствуй, Олимпийский!
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
На страницу 1 2 3 4  >  Страница 1 из 4 [ Сообщений: 117 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


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