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

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

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
По умолчанию if (contains), а как сделать if (do not contain)??

добрый вечер! необходимо создать условие, противоположное if(contains), т.е. типа if(not contain)... я только начинаю изучать actionScript, подскажите правильный синтаксис, как это записать?

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

Регистрация: Dec 2010
Адрес: Ярославль
Сообщений: 1,255
По сути, ваше выражение такое:
Код AS3:
if(contains == true)
Вам нужно так:
Код AS3:
if(contains == false)
Но можно записать кратко:
Код AS3:
if(!contains)

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

Регистрация: Jul 2013
Адрес: Каскелен
Сообщений: 86
я пробовал if(!contains) - не работало почему-то

Добавлено через 1 минуту
Код AS3:
private function downloadTorFn(e:MouseEvent):void 
		{
			var sendWindowCont:SendWindowCont = new SendWindowCont();
 
			if (contains(sendWindowCont)) removeChild(sendWindowCont);
			if (!contains(sendWindowCont)) addChild(sendWindowCont);
 
 
 
		}
Добавлено через 2 минуты
в таком случае без остановки делается addChild

Добавлено через 9 минут
вынес
Код AS3:
var sendWindowCont:SendWindowCont = new SendWindowCont();
в поле класса, теперь получается, что условие
Код AS3:
if (contains(sendWindowCont)) removeChild(sendWindowCont);
не работает

Старый 05.12.2013, 04:47
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 4  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от nelco Посмотреть сообщение
Код AS3:
private function downloadTorFn(e:MouseEvent):void 
		{
			var sendWindowCont:SendWindowCont = new SendWindowCont();
 
			if (contains(sendWindowCont)) removeChild(sendWindowCont);
			if (!contains(sendWindowCont)) addChild(sendWindowCont);
 
 
 
		}

в таком случае без остановки делается addChild
это и логично, вы создаете объект и никуда его не добавляете, соответственно его нет в дисплей листе данного класса, вообще не понял смысл этой операции: проверять то, что и так известно.


наверное вы имели ввиду что-то вроде

Код AS3:
private function downloadTorFn(e:MouseEvent):void 
		{
			var sendWindowCont:SendWindowCont = e.target as SendWindowCont;
 
			if (contains(sendWindowCont)) removeChild(sendWindowCont);
			if (!contains(sendWindowCont)) addChild(sendWindowCont);
 
 
 
		}

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,642
Записей в блоге: 4
Почитайте в документации описание метода contains, и поймете, что даже если объект добавлен в дочерний контейнер проверяемого контейнера, то contains() все равно вернет true. Лучше не использовать этот метод.
Я бы лучше сделал так:
Код AS3:
if (sendWindowCont.parent && sendWindowCont.parent == this) removeChild(sendWindowCont);
ну или добавил в класс метод для проверки
Код AS3:
override public function get contains(value:DisplayObject):Boolean {
   return value.parent && value.parent == this;
}
И потом бы вызывал этот contains() вместо нативного

п.с. Может с сигнатурой метода ошибся, писал прямо здесь, точно не помню

Старый 05.12.2013, 12:25
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 6  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
Сообщение от nelco Посмотреть сообщение
вынес
Код AS3:
var sendWindowCont:SendWindowCont = new SendWindowCont();
в поле класса, теперь получается, что условие
Код AS3:
if (contains(sendWindowCont)) removeChild(sendWindowCont);
не работает
А как вы определили, что не работает то? Отладчиком прошли? Да и какая разница, если в следующей строке вы его обратно добавляете?

Старый 05.12.2013, 12:35
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 7  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Новосибирск :D
Сообщений: 6,590
Записей в блоге: 17
Код AS3:
private var sendWindowCont:SendWindowCont = new SendWindowCont(); //class field
 
if (contains(sendWindowCont)) removeChild(sendWindowCont);
else addChild(sendWindowCont);
// или в одну строчку:
contains(sendWindowCont) ? removeChild(sendWindowCont) : addChild(sendWindowCont);

Старый 05.12.2013, 12:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,779
За вариант с одной строчкой надо руки по пояс отрывать.

Старый 05.12.2013, 13:18
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Новосибирск :D
Сообщений: 6,590
Записей в блоге: 17
Цитата:
Сообщение от etc Посмотреть сообщение
За вариант с одной строчкой надо руки по пояс отрывать.
Он занимает вдвое меньше места, читается вдвое проще, быстрее и выглядит натуральней.
Как тебе такой вариант?
Код AS3:
((contains(sendWindowCont) && removeChild(sendWindowCont)) is Boolean) && addChild(sendWindowCont);

Старый 05.12.2013, 13:22
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 10  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,779
Цитата:
Сообщение от Psycho Tiger Посмотреть сообщение
Он занимает вдвое меньше места, читается вдвое проще, быстрее и выглядит натуральней.
Читается не проще совершенно.

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

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

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


 


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


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