Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.08.2011, 13:58
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 11  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Нельзя так
Ну тогда:
Код AS3:
while (container.numChildren)
    container.removeChildAt(container.numChildren - 1);

Старый 28.08.2011, 14:02
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 12  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Цитата:
Сообщение от etc Посмотреть сообщение
Это называется плохо спроектированный код. В вашем случае конечно так нельзя. Но это только в вашем случае.
Я достаточно долго обдумывал как наиболее аккуратно сделать такие текстфилды. К моему сожалению текстфилд не является DisplayObjectContainer и на него ничего повесить нельзя. В данной задаче уже была тьма кода который работал с кучей текстфилдов, и надо было минимальной кровью дать им поддержку бекграундов. Я вижу тут только два варианта, либо делать наследника спрайта, и на него уже складывать текстфилд, либо делать так как я описал. Если делать спрайт, то он уже не будет являться текстфилдом, и все функции которые с ним работают придётся переделать.

В то-же время приведённый вами while (map_layer.numChildren) map_layer.removeChildAt(0); работает абсолютно корректно, и является более правильным способом удалить всех чайлдов. Т.к. событие removed может обрабатываться и каждый раз, когда вы пишете map_layer.removeChildAt(0) может выполняться сторонний код, который может изменять число чайлдов.

Между условиями "Удалим столько детей сколько их было в начале операции" и "Удаляем пока их совсем не останется" есть большая разница.
__________________
:)

Старый 28.08.2011, 14:05
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 13  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
У меня так текстфилды с кастомный бекграундом сделаны. Класс наследник текстфилда не может сделать addchild на себя. А нужен хитрый динамический фон.
Что вам мешало создать своеобразный компонент?
Компонент - контейнер (наследник от DisplayObjectContainer), содержащий фон и обычный текстфилд.

Старый 28.08.2011, 14:05
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 14  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Правда если кто-то особо злой на ремуве будет добавлять себя на место, можно и зависнуть. В моём случае на ремуве ещё один ремув, я думаю что это корректно, хотя и не красиво.

Добавлено через 37 секунд
Цитата:
Сообщение от i.o. Посмотреть сообщение
Что вам мешало создать своеобразный компонент?
Компонент - контейнер (наследник от DisplayObjectContainer), содержащий фон и обычный текстфилд.
Выше уже написал.
__________________
:)

Старый 28.08.2011, 14:10
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 15  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Ничего не мешает сделать текстфилд торчащим наружу ссылкой

Старый 28.08.2011, 14:10
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 16  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Цитата:
Выше уже написал.
Все равно неубедительно.
Ваш расширенный TextField прикладывает руки к своему родителю и ковыряется в его детях. При этом вам еще необходимо подписываться/отписываться от событий ADDED/REMOVED.
Не самый лучший вариант на мой взгляд.

Старый 28.08.2011, 14:13
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 17  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Можно сделать полем вашего текстфилда спрайт. В который добавлять сам этот текстфилд и фон. Всё это делать и вообще создавать спрайт можно только если нужен навороченный фон. Ну там ещё перегрузить addChild/removeChild. Будут иногда некоторые проблемы, если этот текстфилд достается при помощи getChildByName/getChildAt, ну так не юзать их лишний раз, они вот точно зло =)
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 28.08.2011, 14:23
Aquahawk вне форума Посмотреть профиль Отправить личное сообщение для Aquahawk Посетить домашнюю страницу Aquahawk Найти все сообщения от Aquahawk
  № 18  
Ответить с цитированием
Aquahawk
 
Аватар для Aquahawk

Регистрация: Nov 2010
Адрес: Москва
Сообщений: 915
Записей в блоге: 4
Отправить сообщение для Aquahawk с помощью ICQ Отправить сообщение для Aquahawk с помощью Skype™
Решение -De- интересно, но всё равно не позволяет просто заменить new TextField() на фабрику и забыть. Моё позволяет. Мне оно самому не нравится тем, что лазит в парента, и я с радостью его переделаю на более адекватное, но пока таковых не нашёл.
__________________
:)

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:39.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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