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

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

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

Регистрация: Jul 2012
Сообщений: 48
По умолчанию Не работают двойные условия?

Здраствуйте, не работает часть кода где начинается двойной условие, там выбивается такие ошибки:
Монтажный кадр 1, слой "code", кадр 1, строка 120 1084: Синтаксическая ошибка: identifier перед logicaland.
Монтажный кадр 1, слой "code", кадр 1, строка 120 1084: Синтаксическая ошибка: semicolon перед rightparen.
Монтажный кадр 1, слой "code", кадр 1, строка 123 1083: Синтаксическая ошибка: else не ожидается
Монтажный кадр 1, слой "code", кадр 1, строка 126 1083: Синтаксическая ошибка: else не ожидается


Код AS1/AS2:
function chekim (e:Event):void
{
if (wallLeft.hitTestObject(player as DisplayObject))
{
movingLeft = false;
trace(movingLeft);
}else if (wallDown.hitTestObject(player as DisplayObject)){
	movingDown = false;
	trace(movingDown);
} else if (wallRight.hitTestObject(player as DisplayObject)){
	movingRight = false;
	trace(movingRight);
} else if (wallUp.hitTestObject(player as DisplayObject)){
	movingUp = false;
	trace(movingUp);
} else if (wallUp.hitTestObject(player as DisplayObject)) && (wallleft.hitTestObject(player as DisplayObject)){
	movingUp = false;
	movingLeft = false;
} else if ((wallUp.hitTestObject(player as DisplayObject)) && (wallRight.hitTestObject(player as DisplayObject))){
	movingUp = false;
	movingRight = false;
} else if (wallDown.hitTestObject(player as DisplayObject)) && (wallLeft.hitTestObject(player as DisplayObject)){
	movingDown = false;
	movingLeft = false;
} else if (wallDown.hitTestObject(player as DisplayObject)) && (wallRight.hitTestObject(player as DisplayObject)){
	movingRight = false;
	movingDown = false;
}
}
В чем ошибка? Заранее благодарен.

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

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Код AS3:
if (wallDown.hitTestObject(player as DisplayObject)) && (wallLeft.hitTestObject(player as DisplayObject))
Скобку рано закрыли

Код AS3:
if (wallDown.hitTestObject(player as DisplayObject) && (wallLeft.hitTestObject(player as DisplayObject)))
Да и не только здесь. Компилятор все правильно рассказывает.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
В трех местах. Используйте редактор с подсветкой.
Код AS3:
function chekim (e:Event):void
{
	if (wallLeft.hitTestObject(player as DisplayObject))
	{
		movingLeft = false;
		trace(movingLeft);
	}else if (wallDown.hitTestObject(player as DisplayObject)){
		movingDown = false;
		trace(movingDown);
	} else if (wallRight.hitTestObject(player as DisplayObject)){
		movingRight = false;
		trace(movingRight);
	} else if (wallUp.hitTestObject(player as DisplayObject)){
		movingUp = false;
		trace(movingUp);
	// Вот здесь не хватает скобок
	} else if (wallUp.hitTestObject(player as DisplayObject)) && (wallleft.hitTestObject(player as DisplayObject)){
		movingUp = false;
		movingLeft = false;
	} else if ((wallUp.hitTestObject(player as DisplayObject)) && (wallRight.hitTestObject(player as DisplayObject))){
		movingUp = false;
		movingRight = false;
	// Здесь
	} else if (wallDown.hitTestObject(player as DisplayObject)) && (wallLeft.hitTestObject(player as DisplayObject)){
		movingDown = false;
		movingLeft = false;
	// и здесь
	} else if (wallDown.hitTestObject(player as DisplayObject)) && (wallRight.hitTestObject(player as DisplayObject)){
		movingRight = false;
		movingDown = false;
	}
}

Старый 24.09.2012, 01:01
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 4  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
Код AS3:
if ( wallLeft.hitTestObject( player as DisplayObject ) ){
	movingLeft = false;
	trace( movingLeft );
}else if ( wallDown.hitTestObject( player as DisplayObject ) ){
	movingDown = false;
	trace( movingDown );
} else if ( wallRight.hitTestObject( player as DisplayObject ) ){
	movingRight = false;
	trace(movingRight);
} else if ( wallUp.hitTestObject( player as DisplayObject ) ){
	movingUp = false;
	trace(movingUp);
} else if ( wallUp.hitTestObject( player as DisplayObject ) && 
				wallleft.hitTestObject( player as DisplayObject ) ){
	movingUp = false;
	movingLeft = false;
} else if ( wallUp.hitTestObject( player as DisplayObject ) && 
				wallRight.hitTestObject( player as DisplayObject ) ){
	movingUp = false;
	movingRight = false;
} else if ( wallDown.hitTestObject( player as DisplayObject ) && 
				wallLeft.hitTestObject( player as DisplayObject ) ){
	movingDown = false;
	movingLeft = false;
} else if ( wallDown.hitTestObject( player as DisplayObject ) && 
				wallRight.hitTestObject( player as DisplayObject )){
	movingRight = false;
	movingDown = false;
}

Старый 24.09.2012, 01:06
Riki вне форума Посмотреть профиль Отправить личное сообщение для Riki Найти все сообщения от Riki
  № 5  
Ответить с цитированием
Riki

Регистрация: Jul 2012
Сообщений: 48
Всем спасибо за ответы, а ответьте пожалуйста почему эти двойные условия не выполняются? То есть врезание в левую стену оно фиксирует, а верхнюю уже нет, и оно продолжает пролетать...

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
непонятно зачем вы проверяете по нескольку раз, условия с "&&" не нужны


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

Регистрация: Jul 2012
Сообщений: 48
Все разобрался. Надо было перед началом двойных условий убрать else и оставить только if. Всем огромное спасибо.

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

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
для кого я писал?

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

Регистрация: Jul 2012
Сообщений: 48
Такая проверка необходима на углах, где стены пересекаются.

Старый 24.09.2012, 01:30
fish_r вне форума Посмотреть профиль Отправить личное сообщение для fish_r Посетить домашнюю страницу fish_r Найти все сообщения от fish_r
  № 10  
Ответить с цитированием
fish_r
 
Аватар для fish_r

блогер
Регистрация: Jan 2011
Сообщений: 1,162
Записей в блоге: 4
вы дублируете проверки, вот я о чем. если для левой стены проверка проведена и значение выставлено в false, то ниже уже не нужно эту проверку проводить (даже в сочетании с другими сторонами ), справедливо это и для всех остальных сторон.

то есть такое выражение:
Код AS3:
 
if ( wallLeft.hitTestObject( player as DisplayObject ) ){
	movingLeft = false;
	trace( movingLeft );
}
 
if ( wallDown.hitTestObject( player as DisplayObject ) ){
	movingDown = false;
	trace( movingDown );
} 
 
if ( wallRight.hitTestObject( player as DisplayObject ) ){
	movingRight = false;
	trace(movingRight);
} 
 
if ( wallUp.hitTestObject( player as DisplayObject ) ){
	movingUp = false;
	trace(movingUp);
}
эквивалентно тому что писалось выше


Последний раз редактировалось fish_r; 24.09.2012 в 02:10.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:47.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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