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

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

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

Регистрация: Dec 2009
Сообщений: 14
По умолчанию отследить имя клипа

Можно ли отследить имя клипа при его пересечении с другим клипом?
есть вариант просканировать сцену на мувиклипы с помощью "in this" и "_name" и поочереди проверить пересечение с всема клипами, но это не очень практично так как в сцене могут быть сотни клипов. возможно ли както определить имя клипа если он пересекается с указаным клипом? задача состоит в том чтобы сделать сортировку глубины клипов в зависимости от их положеня на сцене по оси y, и если один клип пересек второй и он по оси выше, он должен оказатся под ним (swapDepth). или посоветуйте другой способ решения задачи...

Старый 29.12.2009, 14:02
fresh.flash вне форума Посмотреть профиль Отправить личное сообщение для fresh.flash Посетить домашнюю страницу fresh.flash Найти все сообщения от fresh.flash
  № 2  
Ответить с цитированием
fresh.flash

Регистрация: Sep 2009
Адрес: Николаев
Сообщений: 26
Записей в блоге: 1
Код AS1/AS2:
first_mc.hitTest(sec_mc);

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

Регистрация: Dec 2009
Сообщений: 14
fresh.flash, вы не правельно поняли вопрос, спасибо я знаю как определить пересечение, но ситуация в том что в клипе создается столько мувиков сколько будет перемменных в загружаемом файле и каждый должен проверять пересечение с другими мувиками, в вашом ответе вы четко указали имя первого второго клипа, но я не имею такой возможности впесать в скрипт сто строк такого кода и перечислить все возможные имена

Старый 29.12.2009, 15:13
fresh.flash вне форума Посмотреть профиль Отправить личное сообщение для fresh.flash Посетить домашнюю страницу fresh.flash Найти все сообщения от fresh.flash
  № 4  
Ответить с цитированием
fresh.flash

Регистрация: Sep 2009
Адрес: Николаев
Сообщений: 26
Записей в блоге: 1
Это если мувики в руте и называются mc1, mc2 и т.д. В результате будет 100 массивов для каждого мувика
Код AS1/AS2:
for (var i:Number=0; i < 100; i++) {
	_root["peresechenieArray_"+i] = new Array();
	for (var j:Number=0; j < 100; j++) {
		if (i != j) {
			if (_root["mc"+i].hitTest(_root["mc"+j]) {
				_root["peresechenieArray_"+i].push(_root["mc"+j]);
			}
		}
	}
}


Последний раз редактировалось fresh.flash; 29.12.2009 в 15:16.
Старый 29.12.2009, 15:45
Plam вне форума Посмотреть профиль Отправить личное сообщение для Plam Найти все сообщения от Plam
  № 5  
Ответить с цитированием
Plam

Регистрация: Dec 2009
Сообщений: 14
спасибо, вот кстати я нашол способ тасовать все мувиклипы по оси Z ориентируясь где находятся персонажи по Y даже если у них нет имени) может комуньть пригодится кто к примеру делает игру и ему надо отследить глубену персонажей...
помещаем на мувиклипы код и они тасуются автоматически все

Код:
onClipEvent (enterFrame) {
	for (var i in this._parent) {
		if (typeof (this._parent[i]) == 'movieclip') {
			if (this._y>this._parent[i]._y) {
				if (this.getDepth()<this._parent[i].getDepth()) {
					this.swapDepths(this._parent[i]);
				}
			}
			if (this._y<this._parent[i]._y) {
				if (this.getDepth()>this._parent[i].getDepth()) {
					this.swapDepths(this._parent[i]);
				}
			}
		}
	}
}

Старый 29.12.2009, 15:51
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Чтобы не перегружать процессор, нужно оптимизировать код.
Могут быть разные варианты решения.

Вопрос вам - пересечение происходит при движении мувика, так? Как организовано это движение - пользователь берет мувик и двигает или они двигаются программно? Если последнее верно, то сколько двигается одновременно и есть ли событие определяющее начало движения?

Или у вам важна чисто сортировка в начале, а движения нет?


Последний раз редактировалось mooncar; 29.12.2009 в 15:57.
Старый 29.12.2009, 16:01
Plam вне форума Посмотреть профиль Отправить личное сообщение для Plam Найти все сообщения от Plam
  № 7  
Ответить с цитированием
Plam

Регистрация: Dec 2009
Сообщений: 14
передвежение начинается по отслеживанию значения переменной, я думаю этот код можно использовать только во время перемещения мувиклипа, достаточно одному клипу перемещатся чтобы оба поменялись местами так что думаю можно так и оптимизировать...

Добавлено через 2 минуты
Код AS1/AS2:
onClipEvent (enterFrame) {
         if (move == 1){
	for (var i in this._parent) {
		if (typeof (this._parent[i]) == 'movieclip') {
			if (this._y>this._parent[i]._y) {
				if (this.getDepth()<this._parent[i].getDepth()) {
					this.swapDepths(this._parent[i]);
				}
			}
			if (this._y<this._parent[i]._y) {
				if (this.getDepth()>this._parent[i].getDepth()) {
					this.swapDepths(this._parent[i]);
				}
			}
		}
	}
}
}
Добавлено через 11 минут
ребята, выручайте, есть ещоо одна задача... создается онлайн проэктик, короче когда игрок подключается на сервере его ник дописывается в тхт файлик в новую строку, файл выглядит примерно так:
vasya
dima
shasha

когда человек покидает игру то имя с файла вытерается..
задача состоит в следующем, надублировать клип и каждому клипу дать имя по списку в файле, тоесть первый клип должен иметь имя vasya (или переменную с этим значением), второй клип должен быть dima и третий shasha... тхт загружается при помощи LoadVars().

Добавлено через 1 час 53 минуты
вот пока что пришло на ум это розбить текст на массив через "\n" и прогнать дубликаты по массиву, больше варанов нет?


Последний раз редактировалось Plam; 29.12.2009 в 16:14.
Старый 29.12.2009, 22:30
Quarto вне форума Посмотреть профиль Отправить личное сообщение для Quarto Найти все сообщения от Quarto
  № 8  
Ответить с цитированием
Quarto

Регистрация: Aug 2009
Сообщений: 14
Зачим создавать уйму клипов, когда можно искать в том же массиве, в него добавлять, и из него же удалять при уходе?

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

Регистрация: Dec 2009
Сообщений: 14
имена хранятся в тхт файле на сервере а флєш клиент должен для каждого имени сделать дубликат и получать на взятое имя параметры переменных

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

Регистрация: Aug 2009
Сообщений: 14
Массив под имена, массив(ы) под параметры... Это вроде должно быть легче и быстродейственнее, чем хранить н объектов и свойства к ним?

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

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

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


 


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


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