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

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

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

Регистрация: Dec 2013
Сообщений: 49
Question Как найти родителя от ссылочной переменной

добрый день

Есть функция
Код AS3:
function test(obj:DisplayObject):void {
 
}
Как мне получить родителя obj если таковой имеется

попробую на примере объяснить
Например у нас есть код в главном классе
Код AS3:
for (var i:Number = 0, num = this._controlLayer.numChildren; i < num; i++) 
{
	this._controlLayer.getChildAt(i).dispatchEvent( new Event(Event.RESIZE));	
}
_controlLayer это MovieClip добавленный как родитель
добавленные DisplayObject в _controlLayer умеют слушать это событие
Код AS3:
public function resize(e:Event):void 
{
	trace('resize conteiner');
        trace('roon.name', this.root.name); 
}
trace('roon.name', this.root.name); выдает root1 а не control_layer.

Я походу что то делаю не так, подскажите как получить родителя если мы имеем только ссылку DisplayObject

Заранее спасибо!
Upd...
Блин вот я туплю, есть же свойство parent, кто может удалите тему аж стыдно(


Последний раз редактировалось kotyavo; 04.01.2014 в 12:56. Причина: внесена конкретика, надеюсь что внес)
Старый 04.01.2014, 14:44
Babylon вне форума Посмотреть профиль Отправить личное сообщение для Babylon Посетить домашнюю страницу Babylon Найти все сообщения от Babylon
  № 2  
Ответить с цитированием
Babylon
[+1 25.10.13]
[+4 18.03.14]
 
Аватар для Babylon

Регистрация: Jan 2006
Адрес: Москва, Зеленоград
Сообщений: 653
Отправить сообщение для Babylon с помощью ICQ
Можешь передать this из класса родителя чилду как параметр или как свойство. Только нафига?

Старый 04.01.2014, 16:07
kotyavo вне форума Посмотреть профиль Отправить личное сообщение для kotyavo Найти все сообщения от kotyavo
  № 3  
Ответить с цитированием
kotyavo

Регистрация: Dec 2013
Сообщений: 49
this это не по фун-шую в данной ситуации
Я создал для себя хелперы
Код AS3:
package com.skin 
{
	import flash.display.DisplayObject;
	/**
	 * ...
	 * @author тупое IDE
	 */
	public class SkinHelper
	{
 
		/**
		 * Задать ширину в пикселях или процентах
		 * @param	obj
		 * @param	width
		 */
		public static function width(obj:DisplayObject , width:String ):void 
		{		
			obj.width = (width.indexOf('%') != -1) ? (  obj.stage.stageWidth * parseInt(width) / 100 ) : parseInt(width);
		}
 
		/**
		 * Задать Высоту в пикселях или процентах
		 * @param	obj
		 * @param	height
		 */
		public static function height(obj:DisplayObject , height:String ):void 
		{
			obj.height = (height.indexOf('%') != -1) ? ( obj.stage.stageHeight * parseInt(height) / 100 ) : parseInt(height);
		}
 
		/**
		 * Расположить элемент по X Y
		 * @param	obj
		 * @param	direction: center,top,left,rigth,bottom,middle
		 */
		public static function aling(obj:DisplayObject, direction:String = 'center,top'):void 
		{
			var arr:Array = direction.split(',');
			for (var i = 0, len = arr.length; i < len; i++) 
			{
				switch(arr[i])
				{
					case 'center':
						obj.x = obj.stage.stageWidth / 2 - obj.width;
						obj.y = obj.stage.stageHeight / 2 - obj.height;
						break;
					case 'top':
						obj.y = 0;
						break
					case 'left':
						obj.x = 0;
						break
					case 'right':
						obj.x = obj.stage.stageWidth - obj.width;
						break
					case 'bottom':
						obj.y = obj.stage.stageHeight - obj.height;
						break
					case 'middle':
						obj.y = obj.stage.stageHeight /2 - obj.height;
						break;
				}
 
			}
		}
 
 
	}
 
}
Хочу проверить если у obj parent есть то использовать parent, если нету то использовать stage
Касательно проверки если сделать obj.parent!=null , true : false;
То получаю ошибку . Не ужели без try catch нельзя не как ?

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

Регистрация: Oct 2010
Сообщений: 1,049
Отправить сообщение для bav с помощью ICQ
А что за ошибку получаете и в какой строке? Свойство parent при проверке необязательно сравнивать с null:
Код AS3:
var s:Sprite = new Sprite();
trace( s.parent ? "yes" : "no" ); // no
addChild(s);
trace( s.parent ? "yes" : "no" ); // yes
removeChild(s);
trace( s.parent ? "yes" : "no" ); // no

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

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

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


 


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


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