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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 10.03.2014, 21:02
NixMist вне форума Посмотреть профиль Отправить личное сообщение для NixMist Найти все сообщения от NixMist
  № 1  
Ответить с цитированием
NixMist

Регистрация: Nov 2013
Сообщений: 38
По умолчанию Функция очистки сцены от нарисованной графики.

Предложите пожалуста функцию, которая будет очищать все графичесские элементы на сцене.

Старый 10.03.2014, 21:06
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Если графические элементы сделаны с помощью встроенных средств рисования, то -
Код AS3:
this.graphics.clear();
А если на сцене объекты (спрайты, мувиклипы, шейпы), то -
Код AS3:
this.removeChildren();

Старый 11.03.2014, 11:21
NixMist вне форума Посмотреть профиль Отправить личное сообщение для NixMist Найти все сообщения от NixMist
  № 3  
Ответить с цитированием
NixMist

Регистрация: Nov 2013
Сообщений: 38
Первый вариант я так понимаю, у меня нарисованы линии с помощью lineTO.
Я прицепил this.graphics.clear(); к кнопке, но по нажатию на кнопку линии не удаляются.


Где я наложал?(

Старый 11.03.2014, 11:39
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 4  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
значит линии нарисованы не в this , а в каком то другом объекте.
найдите тот объект в который вы рисуете линии
допустим
Код AS3:
spr.graphics.lineTo(100,100);
и именно в нем удаляйте
Код AS3:
spr.graphics.clear();
если же вы все-таки рисуете линии в this, тогда смотрите , может у вас при удалении потом опять перерисовывается все заного

Старый 11.03.2014, 11:53
NixMist вне форума Посмотреть профиль Отправить личное сообщение для NixMist Найти все сообщения от NixMist
  № 5  
Ответить с цитированием
NixMist

Регистрация: Nov 2013
Сообщений: 38
Цитата:
Сообщение от Isfet Посмотреть сообщение
если же вы все-таки рисуете линии в this, тогда смотрите , может у вас при удалении потом опять перерисовывается все заного
Точно, вы абсолютно правы.
Проблематично тогда получается удалить их.

Старый 11.03.2014, 12:26
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 6  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от NixMist Посмотреть сообщение
Проблематично тогда получается удалить их.
Думаю проблем особых нет, нужно просто подправить ваш код.

Старый 11.03.2014, 12:39
NixMist вне форума Посмотреть профиль Отправить личное сообщение для NixMist Найти все сообщения от NixMist
  № 7  
Ответить с цитированием
NixMist

Регистрация: Nov 2013
Сообщений: 38
Я ещё не совсем понял, какой кусок кода именно перерисовывает линии.
Вроде как либо этот, он вызывается при просто рисовании линий.
Код AS3:
public function update(): void
 
		{
			graphics.clear();
			graphics.lineStyle(2, 0x221322);
			graphics.moveTo(_point1.parent.x + _point1.x, _point1.parent.y + _point1.y);
			graphics.lineTo(_point1.parent.x + _point1.x, ((_point2.parent.y + _point2.y) + (_point1.parent.y + _point1.y)) / 2);
			graphics.lineTo(_point2.parent.x + _point2.x, ((_point2.parent.y + _point2.y) + (_point1.parent.y + _point1.y)) / 2);
			graphics.lineTo(_point2.parent.x + _point2.x, _point2.parent.y + _point2.y);
 
		}
Либо этот, он вызывается при передвижении объектов, из которых исходят и входят линии.
Код AS3:
public function redrawLines()
		{
			var l: int = _lines.length;
			for (var i: int = 0; i < l; i++)
			{
				_lines[i].update();
			}
		}

Старый 11.03.2014, 12:59
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 8  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
По идее, вам нужно отчистить графику тут
Код AS3:
public function redrawLines()
{
    graphics.clear(); // <-------------
	var l: int = _lines.length;
	for (var i: int = 0; i < l; i++)
	{
		_lines[i].update();
	}
}
p.s. но не факт.

Старый 11.03.2014, 13:13
NixMist вне форума Посмотреть профиль Отправить личное сообщение для NixMist Найти все сообщения от NixMist
  № 9  
Ответить с цитированием
NixMist

Регистрация: Nov 2013
Сообщений: 38
Нет вы не поняли, я хочу по нажатию на кнопку очищать сцену от всей нарисованной графики.

Старый 11.03.2014, 13:29
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 10  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Код AS3:
btn.addEventListener(MouseEvent.CLICK,removeLines);
 
public function removeLines(e:MouseEvent = null):void{
    var l: int = _lines.length;
	for (var i: int = 0; i < l; i++)
	{
		_lines[i].graphics.clear();
               // но лучше в классе линии сделать еще одну функцию clear - например
	}
  // ну и дальше пишете что еще вам нужно удалить
 
}
и как выше писал самана, перед рисование линий нужно удалять старые, иначе они будут рисоваться поверх первых
Код AS3:
public function redrawLines()
{
        removeLines(); // <-------------
	var l: int = _lines.length;
	for (var i: int = 0; i < l; i++)
	{
		_lines[i].update();
	}
}

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

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

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

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


 


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


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