Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   динамическое создание объектов (http://www.flasher.ru/forum/showthread.php?t=89951)

Leezard 03.01.2007 17:32

Цитата:

Сообщение от iNils
Все мое "о боже" не дает покоя? Я объясню.
Запись вида
Код:

_root[name[x][y]]
говорит о том, что значение элемента массива имеет тип String, и вместо того, чтобы напрямую получить ссылку к объекту, мы опять привязываемся непонятно к чему.

А, то :D Все понятно, конечно все так, просто есть такой инструмент и он работает именно там где надо превратить стринг в имя.

Цитата:

Сообщение от iNils
Это про то, что надо сделать:
Код:

var mc:MovieClip = _root.qqq.www.eee.rrr.ttt.yyy.uuu.iii;
а потом только можно mc использовать?

В этом куске я говорил про выборку линка, это пример с тайлами.
Код:

var mc:MovieClip = __tile[i][j];
вот тут вы задаете линк, с которым работаете далее. В случае с прямым обращением этого можно не делать.
А к чему этот вопрос?
Вы имеете ввиду запись в одну строку?
Код:

var mc:MovieClip =attachMovie(...
Но ведь в случае с полем тайлов мы так не делаем, потому что это и есть превращение квадратного в длинное.
Хочу еще раз отметить, я за линки двумя руками, я даже написал почему их надо использовать:mosking:

etc 03.01.2007 17:36

Использование ссылки mc = __tile[i][j] предпочтительноее, потому что многократное прямое обращение кушает намного больше процессорного времени.
А ещё лучше использовать событийную модель. Т.е. контейнер кричит «Тайл 3,4, отзовись!». Все тайлы смотрят на свои иксы и игреки и тот, у которого совпадают с требуемыми, кричит обратно «Я здесь!».
Правда, я не проверял, быстрее-ли это прямого обращения по имени, но тем не менее, отвязка от имен лучше — опять же повышается мобильность.

Leezard 03.01.2007 17:47

Цитата:

Сообщение от __etc
Использование ссылки mc = __tile[i][j] предпочтительноее, потому что многократное прямое обращение кушает намного больше процессорного времени.

Теоретически возможно, практически вчера проверял, абсолютно одинаково. В цикле изменял альфы всех тайлов обоими методами. Время одно и то же, правда в случае с ссылками мы еще и массив теребим.

etc 03.01.2007 17:53

Цитата:

Сообщение от Leezard
правда в случае с ссылками мы еще и массив теребим.

Какой массив? По-моему, без ссылок мы как раз массив на каждой строке и теребим.

Leezard 03.01.2007 18:01

Цитата:

Сообщение от __etc
Какой массив? По-моему, без ссылок мы как раз массив на каждой строке и теребим.

Вот этот массив!
Код:

var mc:MovieClip = __tile[i][j];
Массив хранящий ссылки на тайлы.

iNils 03.01.2007 18:07

Цитата:

Сообщение от Leezard
Вот этот массив!
Код:

var mc:MovieClip = __tile[i][j];
Массив хранящий ссылки на тайлы.

Мы создаем этут ссылку, когда собираемся обратится к клипу более одного раза, и таким образом повышаем быстродействие.

Leezard 03.01.2007 18:22

Цитата:

Сообщение от iNils
Мы создаем этут ссылку, когда собираемся обратится к клипу более одного раза, и таким образом повышаем быстродействие.

Вероятно вы правы.
А если только раз? К одному тайлу раз, и к соседним аналогично. Производительность у обоих методов будет равной. Вернее мы разницы не заметим. Ну вот видите друзья на счет ссылок можно записать еще один жирный плюс :)

Это как заказные убийства диких тушканов на хорошо знакомой вам местности.
В одном случае нам рассказывают как пройти к месту обитания тушкана
- "Из Гадюкино свернешь сразу налево, потом за вторым поворотом будет болото, за ним лес, прямо по просеке, на опушке - тушкан откликается на это имя ..." Дает бумажку на которой в стринговом формате написано "Гена". Мы это все в принципе знаем, но терпеливо слушаем, чтобы не обидеть заказчика. Приходим на опушку, достаем бумажку и гормко читаем - "Ге-е-ен-а-а";
В другом случае мы довольствуемся фотографией искомого тушкана в среде обитания. Вопросов где и кто не возникает.
:taunt:

iNils 03.01.2007 18:37

Что вы к своим тайлам привязались?:) Есть всегда исключения, когда стоит сделать по другому, но надо помнить, что это исключения и для общих ответов они не подойдут.
А теперь представим, что что метод обработчик действий с тайлами, обрабатывает не конкретный клип с тайлами и различные. То есть мы дожны будет передавать путь до место положения тайлов, вместо того, чтобы дать ссылку на объект (экземпляр класса), а что именно с это ссылкой делать (обращаться к массиву) наш метод знает. Вот вам и первый шаг к ООП. Мы знаеть не знаем, где именно находятся и как именно называются наши тайлы.
В моем примере, если заметили имена у объектов были одинаковы ... вернее их нет.
Код:

__tile[x][y] = attachMovie ("tile", "",...

Leezard 03.01.2007 19:04

Цитата:

Сообщение от iNils
Что вы к своим тайлам привязались?:)

Догадайтесь :)
Цитата:

Сообщение от iNils
Есть всегда исключения, когда стоит сделать по другому, но надо помнить, что это исключения и для общих ответов они не подойдут.

Золотые слова, это то что я пытался сказать все это время. :taunt:
Цитата:

Сообщение от iNils
А теперь представим, что что метод обработчик действий с тайлами, обрабатывает не конкретный клип с тайлами и различные.

Бесспорно, именно поэтому у меня обращения выглядят условно так
Код:

mc[i+"_"+j]...
mc (контейнер) на самом деле зарыт очень глубоко. Имеет четкую спецификацию и фиксированные размеры.
И еще момент (исключения) флэш от сервера получает информацию о появившихся в локации особых объектах. Далее он присылает море информации об их действиях и модификациях. Например объект переместился, помер, сказал, упал, сбежал...
Каждый объект в рамках всей системы (сервер-клиент) имеет неповторимый идентификатор. Ну очень просто по приходу стринга от сервера обратиться к объекту mc[id], так просто и естественно, что я , каюсь, забил на мобильность кода. А учитывая что таких объектов может быть много, есть все же в этом некий момент удобства.
Цитата:

Сообщение от iNils
В моем примере, если заметили имена у объектов были одинаковы ... вернее их нет.
Код:

__tile[x][y] = attachMovie ("tile", "",...

Конечно заметил.

CorC 04.01.2007 19:33

блин, народ и что вы к этой теме привязались? ведь все было отвечено на 1 странице...
З. Ы.: и как вы в выходные время находите что б тут отвечать


Часовой пояс GMT +4, время: 15:42.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.