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

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

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

Регистрация: Sep 2011
Адрес: СПБ
Сообщений: 10
По умолчанию Условия

Что не так в моих правилах, у меня он определяется и как первый и как второй

Код AS3:
 
private function mouseMove (e:MouseEvent):void 
{
	if (((e.localX >= 0) && (e.localX < 50)) && ((e.localY >= 0) && (e.localY < 50)))
	{	
		_selection.x = 0;
		_selection.y = 0;
	} 
 
	if (((e.localX >= 0) && (e.localX < 50)) && ((e.localY >= 50) && (e.localY < 100)))
	{
		_selection.x = 0;
		_selection.y = 50;
	}
}


Последний раз редактировалось ruzi; 06.11.2011 в 15:40.
Старый 06.11.2011, 15:45
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 2  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Если должно выполняться первое условие, и при этом игнорироваться второе, то для второго условия нужно использовать оператор else if, а не if
иначе проверяются оба, и если оба true, соответственно и оба блока коды будут выполнены.

п.с. Название темы не раскрывает сути вопроса.

Старый 06.11.2011, 15:52
ruzi вне форума Посмотреть профиль Отправить личное сообщение для ruzi Найти все сообщения от ruzi
  № 3  
Ответить с цитированием
ruzi

Регистрация: Sep 2011
Адрес: СПБ
Сообщений: 10
Суть, что они должны выполняться либо, одно либо второе.
При нахождении мыши на поле отслеживается положение курсора, и меняется положение объекта.
А я кажется понял, надо проверять на каком объекте отслеживается положение мыши.
Попробую может получится.
Спасибо.

Старый 06.11.2011, 15:53
strangedk вне форума Посмотреть профиль Отправить личное сообщение для strangedk Найти все сообщения от strangedk
  № 4  
Ответить с цитированием
strangedk
 
Аватар для strangedk

Регистрация: Oct 2010
Адрес: Харьков
Сообщений: 616
Записей в блоге: 1
Отправить сообщение для strangedk с помощью ICQ Отправить сообщение для strangedk с помощью Skype™
Всё работает, только неясно, так ли вам нужно:

Код AS3:
import flash.events.MouseEvent;
 
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove_handler);
 
function onMouseMove_handler (e:MouseEvent):void {
	if (((e.localX >= 0) && (e.localX < 50)) && ((e.localY >= 0) && (e.localY < 50))) {	 
		// от 0:0 до 50:50
		trace("first " + e.localX + ":" + e.localY);
	}
 
	if (((e.localX >= 0) && (e.localX < 50)) && ((e.localY >= 50) && (e.localY < 100))) {
		// от 0:50 до 50:100
		trace("second " + e.localX + ":" + e.localY);		
	}
}
[IMG]http://i32.***********/big/2011/1106/51/c26e11b0caeab28c287fbc3ff8878351.jpg[/IMG]

Цитата:
либо, одно либо второе
Оно и так либо одно, либо второе.


Последний раз редактировалось strangedk; 06.11.2011 в 15:56. Причина: ошибся
Старый 06.11.2011, 15:55
Ookami вне форума Посмотреть профиль Отправить личное сообщение для Ookami Найти все сообщения от Ookami
  № 5  
Ответить с цитированием
Ookami
 
Аватар для Ookami

Регистрация: Aug 2011
Адрес: 56° 51' с.ш. 53° 13' в.д.
Сообщений: 172
Записей в блоге: 1
Они оба не могут быть TRUE в данном контексте... Условие можно немного упростить, слишком много скобок, они тут лишние. Ну и само собой да, лучше использовать else if, например так:
Код AS3:
if ((e.localX >= 0) && (e.localX < 50) && (e.localY >= 0) && (e.localY < 50)) {	
		_selection.x = 0;
		_selection.y = 0;
	} else if ((e.localX >= 0) && (e.localX < 50) && (e.localY >= 50) && (e.localY < 100)) {
		_selection.x = 0;
		_selection.y = 50;
	}
А вот почему срабатывают оба условия - не понятно, по идее не должны - одно из них все-равно будет ложным.


Последний раз редактировалось Ookami; 06.11.2011 в 15:57.
Старый 06.11.2011, 16:07
Newred вне форума Посмотреть профиль Отправить личное сообщение для Newred Посетить домашнюю страницу Newred Найти все сообщения от Newred
  № 6  
Ответить с цитированием
Newred
 
Аватар для Newred

Регистрация: May 2010
Адрес: Киев, Украина
Сообщений: 140
Записей в блоге: 2
Я предлагаю сделать что то такое вместо громоздких if -else:
Код AS3:
private function mouseMove (e:MouseEvent):void 
{	
	_selection.x = Math.floor(e.localX/50) * 50 ;
	_selection.y = Math.floor(e.localY/50) * 50 ;
}


Последний раз редактировалось Newred; 06.11.2011 в 16:19.
Старый 06.11.2011, 16:46
ruzi вне форума Посмотреть профиль Отправить личное сообщение для ruzi Найти все сообщения от ruzi
  № 7  
Ответить с цитированием
ruzi

Регистрация: Sep 2011
Адрес: СПБ
Сообщений: 10
Просто я создаю поле по которому передвигая мышь двигался бы квадрат, но проблема когда я передвигаю мышь, квадрат переходит но новое положение и положение курсора отслеживается уже на квадрате.

Старый 06.11.2011, 16:49
Newred вне форума Посмотреть профиль Отправить личное сообщение для Newred Посетить домашнюю страницу Newred Найти все сообщения от Newred
  № 8  
Ответить с цитированием
Newred
 
Аватар для Newred

Регистрация: May 2010
Адрес: Киев, Украина
Сообщений: 140
Записей в блоге: 2
Цитата:
...и положение курсора отслеживается уже на квадрате.
Тогда слушатели назначь не на квадрат, а на stage или контейнер

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

Регистрация: Sep 2011
Адрес: СПБ
Сообщений: 10
Так и сделал
Код AS3:
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
Добавлено через 11 минут
У меня получилось, а на сколько обоснованно и какие проблемы могут возникнуть при том что я использую mouseX и mouseY

Код AS3:
private function mouseMove (e:MouseEvent):void
{
	if (((mouseX >= 0) && (mouseX < 50)) && ((mouseY >= 0) && (mouseY < 50)))
	{	
		_selection.x = 0;
		_selection.y = 0;
	} 
	if (((mouseX >= 0) && (mouseX < 50)) && ((mouseY >= 50) && (mouseY < 100)))
	{
		_selection.x = 0;
		_selection.y = 50;
        }
}
Добавлено через 20 минут
А теперь подскажите пожалуйста, а как лучше всего проверку выполнять, если поле 500 на 500 px.


Последний раз редактировалось ruzi; 06.11.2011 в 17:11.
Старый 06.11.2011, 17:29
Newred вне форума Посмотреть профиль Отправить личное сообщение для Newred Посетить домашнюю страницу Newred Найти все сообщения от Newred
  № 10  
Ответить с цитированием
Newred
 
Аватар для Newred

Регистрация: May 2010
Адрес: Киев, Украина
Сообщений: 140
Записей в блоге: 2
Цитата:
А теперь подскажите пожалуйста, а как лучше всего проверку выполнять, если поле 500 на 500 px.
Замени в моём примере
Код AS3:
e.LocalX на mouseX
e.LocalY на mouseY

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

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

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


 


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


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