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

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

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

Регистрация: Jan 2012
Сообщений: 45
По умолчанию Проверка существования объекта на сцене

Как узнать, сущетсвует ли объект с определенным именем ( в моем примере objname) на сцене?
Я пытаюсь сделать это так
Код AS3:
if (stage.contains(objname))
{
	trace("Объект существует");
}
else
{
	trace("Объект не существует");
}
Если существует то все ок, а если не существует, выдается ошибка: 1120: Access of undefined property objname.

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
Код AS3:
// Сначала проверим существование объекта вообще.
if (objname && stage.contains(objname))
{
	trace("Объект существует");
}
else
{
	trace("Объект не существует");
}

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

блогер
Регистрация: Feb 2006
Сообщений: 1,474
Записей в блоге: 3
Цитата:
Как узнать, сущетсвует ли объект с определенным именем ( в моем примере objname) на сцене?
"С определённым именем" настораживает, contains, вроде, только ссылку на DisplayObject принимает

Да не, код собранный во FlashIDE тоже падает на попытках пропихнуть строку в contains(), видимо с терминологией не очень
И скорее всего надо действительно проверку добавить как bav предложил.


Последний раз редактировалось expl; 27.05.2012 в 19:49.
Старый 27.05.2012, 21:53
Gin вне форума Посмотреть профиль Отправить личное сообщение для Gin Найти все сообщения от Gin
  № 4  
Ответить с цитированием
Gin

Регистрация: Jan 2012
Сообщений: 45
Цитата:
Сообщение от bav Посмотреть сообщение
Код AS3:
// Сначала проверим существование объекта вообще.
if (objname && stage.contains(objname))
{
	trace("Объект существует");
}
else
{
	trace("Объект не существует");
}
Не помогло, если объекта нет на сцене, выдает ошибку 1120: Access of undefined property objname.

Старый 27.05.2012, 21:58
expl вне форума Посмотреть профиль Отправить личное сообщение для expl Найти все сообщения от expl
  № 5  
Ответить с цитированием
expl

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

А так не падает?
Код AS3:
if (hasOwnProperty("objname") && this["objname"] != null && stage.contains(this["objname"]))
{
   // лежит
}

Старый 27.05.2012, 21:59
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 6  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Код AS3:
var objectName:DisplayObject = getChildByName("objname");
__________________
тут я

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

Регистрация: Sep 2015
Сообщений: 69
Проверка существования объекта всегда трасирует "Объект не существует", даже после нажатия на кнопки, почему?
Смысл этой проверки для моего кода: нажали "Об игре" функция нарисовала текст об игре, нажали "Инструкции" функция удалила (или скрыла как лучше?) текст об игре и нарисовала инструкции.

Код AS1/AS2:
                function btnMouseHandle(e:MouseEvent):void
				{
 
					switch(e.target.name){
						case "btn_PLAY":
							trace("btn_01 click");
							break;
						case "btn_OPTIONS":
							trace("btn_02 click");
							break;
						case "btn_INSTRUCTIONS":
							trace("btn_03 click");
							ShowTextBlock (e.target.name);
							break;
						case "btn_ABOUT":
							trace("btn_04 click");
							ShowTextBlock (e.target.name);
							break;
						case "btn_EXIT":
							trace("btn_05 click");
							fscommand('quit');
							break;
					}
				}
 
				function ShowTextBlock (strID:String):void
				{		
					var myFormat:TextFormat = new TextFormat();	
					var AboutText = new TextField();
 
					if (stage.contains(AboutText))
							{
								trace("Объект существует");
                               //тут планировал removeChild (AboutText)
							}
							else
							{
								trace("Объект не существует");
							}
 
					if (strID == "btn_INSTRUCTIONS")
						{
							AboutText.text = "ТЕКСТ ДЛЯ ИНСТРУКЦИИ";
						}
					else 
						{
							AboutText.text = "ТЕКСТ ДЛЯ ABOUT";
						}
 
					addChild(AboutText);
				}

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Цитата:
Проверка существования объекта всегда трасирует "Объект не существует", даже после нажатия на кнопки, почему?
Потому что там каждый раз создается новое текстовое поле, которого, естественно, нет на сцене
Код AS3:
var AboutText = new TextField();
Надо сначала его туда добавить, а уже потом проверять. Порядок строк имеет значение



п.с. Не надо проверять stage.contains(...) Сначала советую почитать в документации как работает метод contains.
Чтобы проверить добавлен ли объект на сцену, достаточно просто сделать так:
Код AS3:
if (someObjec.stage) {
   trace("добавлен");
}
__________________
Ко мне можно и нужно обращаться на ты)

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

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

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


 


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


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