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

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

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

Регистрация: Nov 2001
Адрес: Москва
Сообщений: 155
Question Помогите с правильным snap объекта по сетке.

То есть нужно, чтобы при отпускании мыши объект прилеплялся к ближайшей линии.
В пределах клетки добиться удалось путем использования
Math.ceil и Math.floor - скачет к ближайшей линии сетки, но вот стоит пересечь эту линию, он скачет к ближайшей линии клетки, которую объект зацепил.

Это еще если объект меньше, чем шаг сетки. А если больше, вообще мрак.

Вот, к примеру, в подобном ключе вычисляю _x

Код:
 step = 10;
 coordx = Math.floor(this._x/step)*step+this._width/2;
 coordxnext = coordx + step; // следующая линия сетки - глупость, я понимаю.
	if ((this._x + this._width/2) >((coordx + coordxnext)/2)) {
	_x = Math.ceil(this._x/step)*step+this._width/2-this._width;
     } else {
	_x = Math.floor(this._x/step)*step+this._width/2;
     }

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

Регистрация: Nov 2003
Сообщений: 128
Используй округление. Если сетка равномерная, дели расстояние на шаг и округляй. получишь номер линии ячеек.

Старый 07.11.2005, 19:34
ccwds вне форума Посмотреть профиль Отправить личное сообщение для ccwds Посетить домашнюю страницу ccwds Найти все сообщения от ccwds
  № 3  
Ответить с цитированием
ccwds

Регистрация: Nov 2001
Адрес: Москва
Сообщений: 155
А зачем мне номер линии, я пока что-то не врублюсь.

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

Регистрация: Nov 2003
Сообщений: 128
номер линии * шаг = координата

Старый 07.11.2005, 22:26
ccwds вне форума Посмотреть профиль Отправить личное сообщение для ccwds Посетить домашнюю страницу ccwds Найти все сообщения от ccwds
  № 5  
Ответить с цитированием
ccwds

Регистрация: Nov 2001
Адрес: Москва
Сообщений: 155
Как я понимаю, нужно сравнивать четыре параметра для x - расстояние левого края объекта до ближайших вертикальных линий сетки и соответственно правого края до ближайших ему линий сетки.

А номер линии разве что считать начиная от линии, которая левее левого края объекта?

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

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
//init line
lineStyle (0, 0);
for (i = 0; i < 11; i++) {
moveTo (0, i * 40);
lineTo (400, i * 40);
moveTo (i * 40, 0);
lineTo (i * 40, 400);
}
// init clip
createEmptyMovieClip ("mc", 0);
mc.lineStyle (0, 0xFF0000);
mc.beginFill (0xFF0000, 50);
mc.lineTo (40, 0);
mc.lineTo (40, 40);
mc.lineTo (0, 40);
mc.lineTo (0, 0);
mc.endFill ();
//
mc.onPress = function () {
this.onMouseMove = this.mouseMove;
//startDrag(false,0,0,360,360)
};
mc.onRelease = mc.onReleaseOutside = function () {
delete this.onMouseMove;
};
mc.mouseMove = function () {
var x = Math.floor (_root._xmouse / 40) * 40;
var y = Math.floor (_root._ymouse / 40) * 40;
x = x < 0 ? 0 : x > 360 ? 360 : x;
y = y < 0 ? 0 : y > 360 ? 360 : y;
this._x = x;
this._y = y;
};
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

Регистрация: Dec 2003
Адрес: Москва
Сообщений: 176
вот, посмотри файл. Вроде работает, как надо

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

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

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


 


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


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