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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.04.2009, 22:06
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 1  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
По умолчанию Рисование и как правильно удалять объекты?

Доброго времени суток.
Изучаю рисование во флеше и столкнулся с вопросом.

Как объект Box правильно удалить, то есть чтобы его вообще не существовало?
Как наиболее грамотно перерисовать объект Box, например изменить цвет?

Код AS3:
	var Box:Shape
	Box = new Shape();
	Box.graphics.beginFill(0xFF0000, 1);
	Box.graphics.drawRect(0, 0, 100, 100);
	addChild(Box);

Старый 29.04.2009, 22:27
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 2  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
0. С большой буквы пишут только классы и интрефейсы.
1.
Код:
removeChild (box);
box = null;
2.
Код AS3:
box.clear ();
//и рисуем опять
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 29.04.2009, 22:37
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 3  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
а если используешь второй способ, то removeChild(box) автоматически выполняется?

Добавлено через 3 минуты
кстати box.clear(); не сработало!
1061: Call to a possibly undefined method clear through a reference with static type flash.display:Shape.

Добавлено через 6 минут
И еще вопрос первый и второй коды чем то различаются, так как внешне разницы нет?
Код AS3:
			Left1 = new Shape();
			Left1.graphics.beginFill(0xB88955, 1);
			Left1.graphics.drawRect(-123, 0, 125, 19);
			Left1 = new Shape();
			Left1.graphics.beginFill(0xFF0000, 1);
			Left1.graphics.drawRect(-123, 0, 125, 19);
Код AS3:
			Left1 = new Shape();
			Left1.graphics.beginFill(0xB88955, 1);
			Left1.graphics.drawRect(-123, 0, 125, 19);
			Left1 = null;
			Left1 = new Shape();
			Left1.graphics.beginFill(0xFF0000, 1);
			Left1.graphics.drawRect(-123, 0, 125, 19);


Последний раз редактировалось vvvvvvf; 29.04.2009 в 22:45.
Старый 29.04.2009, 23:11
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 4  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Опечатка скорее всего, должно быть:
Код AS3:
box.graphics.clear();
И переменные с маленькой буквы.
__________________
Hell is the possibility of sanity

Старый 30.04.2009, 00:07
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 5  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,879
Записей в блоге: 7
Цитата:
а если используешь второй способ, то removeChild(box) автоматически выполняется?
Какой второй способ? clear чтоли? Нет.
Объект существует, пока на него ведет хотя бы одна ссылка. Если вы сделали box = null, то на объект ведет ссылка из контейнера в который он был добавлен через addChild. Поэтому сначала делает removeChild, а потом обнуляете.

Цитата:
И еще вопрос первый и второй коды чем то различаются, так как внешне разницы нет?
Нет. Второй Left1 = new Shape() забивает ссылку на первый.

Цитата:
Опечатка скорее всего, должно быть:
Ну да. Когда с AS2 на AS3 и обратно ходишь постоянно, то начинаешь путаться.
__________________
(и)Нильс.ru | Плагины для FlashDevelop

Старый 30.04.2009, 10:28
den18k вне форума Посмотреть профиль Отправить личное сообщение для den18k Найти все сообщения от den18k
  № 6  
Ответить с цитированием
den18k

Регистрация: Apr 2009
Сообщений: 7
Цитата:
Сообщение от iNils Посмотреть сообщение
Объект существует, пока на него ведет хотя бы одна ссылка.
Небольшое дополнение: даже если на объект не указывает ни одна ссылка, он все рано продолжает существовать еще некоторое время, пока не будет удален сборщиком мусора. Поэтому рекомендуется перед удалением объекта деактивировать весь активный код объекта (например циклы), поскольку он может негативно повлиять на выполнение программы.

Старый 30.04.2009, 10:45
BlooDHounD вне форума Посмотреть профиль Отправить личное сообщение для BlooDHounD Посетить домашнюю страницу BlooDHounD Найти все сообщения от BlooDHounD
  № 7  
Ответить с цитированием
BlooDHounD
стервочка (я мужик)
 
Аватар для BlooDHounD

блогер
Регистрация: Mar 2004
Адрес: Борисов
Сообщений: 3,161
Записей в блоге: 22
Цитата:
деактивировать весь активный код объекта (например циклы)
Небольшое дополнение: даже если Вы не деактивировали циклы, не партесь - ваше приложение всё равно висит.

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

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

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


 


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


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