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

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

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

Регистрация: Oct 2009
Сообщений: 145
Отправить сообщение для mr_pol с помощью ICQ
По умолчанию startDrag. Движение в пределах круга

Всем привет! Как ограничить движения mc кругом? чтоб его можно было перемещать только в пределах круга радиусом, например, 100рх, а не только в пределах прямоугольника, что без проблем позволяет функция startDrag

Старый 22.01.2010, 19:45
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 2  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Вычисляйте расстояние от центра окружности до объекта и сравнивайте с радиусом этой окружности.

Старый 23.01.2010, 01:05
mr_pol вне форума Посмотреть профиль Отправить личное сообщение для mr_pol Найти все сообщения от mr_pol
  № 3  
Ответить с цитированием
mr_pol
 
Аватар для mr_pol

Регистрация: Oct 2009
Сообщений: 145
Отправить сообщение для mr_pol с помощью ICQ
Вот, вычислил и сравнил. Допустим, расстояние больше радиуса. как быть дальше?

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

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
На событие onMouseDown делайте проверку на hitTest с объектом.
Если true - включайте функцию onMouseMove, в которой приравнивайте координаты объекта, подлежащего тасканию координатам мыши.

На событие onMouseUp удаляйте функцию onMouseMove.

В процессе таскания (внутри onMouseMove) делайте вашу проверку. Если проверка дает false - отключайте строки, где у вас идет назначение координат (поместите их в условный оператор).


Последний раз редактировалось mooncar; 23.01.2010 в 04:25.
Старый 23.01.2010, 22:51
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Если проверка дает false - отключайте строки, где у вас идет назначение координат (поместите их в условный оператор).
Тогда при резких движениях объект будет останавливаться не доезжая до края круга

Так красивше будет (псевдокод):
Код AS1/AS2:
x0 = ...
y0 = ... // координаты центра
r = ... // радиус
var distance = Math.sqrt((x - x0) * (x - x0) + (y - y0) * (y - y0))
if (distance > r)
{
     //раз distance > r, а r > 0, то distance никак не равно нулю - смело делим
     var sin = (y - y0) / distance;
     var cos = (x - x0) / distance;
     x = r * cos;
     y = r * sin;//пододвигаем координаты так, чтобы не вылазили из круга
}
Должно выглядеть не так раздражающе, как залипание объекта, не дошедшего до границы

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

Регистрация: Oct 2009
Сообщений: 145
Отправить сообщение для mr_pol с помощью ICQ
сделал как-то так
Вложения
Тип файла: rar point.rar (8.9 Кб, 79 просмотров)

Старый 24.01.2010, 00:32
mr_pol вне форума Посмотреть профиль Отправить личное сообщение для mr_pol Найти все сообщения от mr_pol
  № 7  
Ответить с цитированием
mr_pol
 
Аватар для mr_pol

Регистрация: Oct 2009
Сообщений: 145
Отправить сообщение для mr_pol с помощью ICQ
я рисую линию от центра окружности до объекта. подскажите, как рисовать ее пунктирной?

Старый 24.01.2010, 20:36
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 8  
Ответить с цитированием
expl

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
я рисую линию от центра окружности до объекта. подскажите, как рисовать ее пунктирной?
Точно обсуждалось здесь, и не один раз, еще бы найти.
Тезиса 2:
- встроенной поддержки программного рисования пунктирный линий нет;
- надо составлять эти линии из обычных - ручками или с помощью http://bezier.ru/

В данном случае можно тупо:
Код AS1/AS2:
//x0, y0, distance, sin, cos - из предыдущего примера
var strokeSize = 5;
var currentDistance = 0
while (currentDistance < distance)
{
      moveTo(x0 + cos * currentDistance, y0 + sin * currentDistance)
      currentDistance += strokeSize
      lineTo(x0 + cos * currentDistance, y0 + sin * currentDistance)
      currentDistance += strokeSize
}

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

Регистрация: Sep 2005
Сообщений: 950
есть еще реализация пунктирной линии
Код AS1/AS2:
MovieClip.prototype.moveTo = function(x:Number, y:Number) {
	this.xc = x;
	this.yc = y;
	ASnative(901, 3).apply(this,arguments);
};
MovieClip.prototype.lineTo = function(x:Number, y:Number, n:Number) {
	if (n) {
		var dx = (x-this.xc)/n/2;
		var dy = (y-this.yc)/n/2;
		for (var i = 0; i<n; i++) {
			ASnative(901, 3).call(this,this.xc+2*i*dx,this.yc+2*i*dy);
			ASnative(901, 4).call(this,this.xc+(2*i+1)*dx,this.yc+(2*i+1)*dy);
		}
	} else {
		ASnative(901, 4).apply(this,arguments);
	}
	this.xc = x;
	this.yc = y;
};
var mc:MovieClip = this.createEmptyMovieClip("mc", 1);
	mc.lineStyle(2,0x990000,100);
	mc.moveTo(0,0);
	mc.lineTo(100,500,20);
	mc.lineStyle(3,0x990000,100);
	mc.moveTo(100,500);
	mc.lineTo(465,665);

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

Регистрация: Oct 2009
Сообщений: 145
Отправить сообщение для mr_pol с помощью ICQ
lexa2000lexa, спасибо!

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

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

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


 


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


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