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

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

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

Регистрация: Jan 2016
Сообщений: 32
Question Проблема с родительскими и дочерними объектами

Всем привет, у меня следующая проблема.
Есть символ "hero". Внутри него есть ещё символ - "leftM". Проблема в том, что я не могу обратиться к "hero.leftM". Т.е. символ "hero" добавлен на сцену с помощью addChild, и к "hero" обратиться могу, но к "hero.leftM" - нет. Может нужно "leftM" тоже на сцену добавить с помощью addChild? Но, с другой стороны, он же добавляется вместе с "hero" ...
Спасибо.

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Наверное вы забыли назначить имя Вашему символу в свойствах.

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

Регистрация: Jan 2016
Сообщений: 32
Нет, имя есть (

Старый 10.01.2016, 17:28
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 4  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Если все добавляется через код, то к детям обращаться надо так:
Код AS3:
hero.getChildByName("leftM");
не забыв, предварительно выставить name у ребенка.

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

Регистрация: Jan 2016
Сообщений: 32
эм, если к детям мы обращаемся по имени, то к чему мы обращаемся например так: "simvol1.simvol2.svoystvo"? Через точку то есть.

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

Регистрация: Apr 2009
Сообщений: 409
Flash автоматически записывает в переменные всех детей вложенных в мувик, можете сделать так же)
hero.leftM=hero.getChildByName("leftM");

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

Регистрация: Oct 2006
Сообщений: 2,281
Вообще говоря через точку можно обращаться только к детям, внутри символов, созданных в flash ide т.к. в этом случае ide сама расширяет базовые классы и дописывает им свойства с именами детей.Для DO, которые ты сам создаешь/компонуешь в коде этого не происходит, поэтому надо обращаться по имени ребенка
Код AS3:
var p:Sprite=new Sprite();
var child:Sprite=new Sprite();
p.addChild(child);
child.name="child";
trace(p.child);//ошибка компиляции, свойства child нет у спрайта
trace(p.getChildByName("child"));//[object Sprite]
Добавлено через 4 минуты
Цитата:
можете сделать так же)
hero.leftM=hero.getChildByName("leftM");
только если hero - MovieClip(что скорее всего так и есть)

Старый 13.01.2016, 22:02
SpeakerG вне форума Посмотреть профиль Отправить личное сообщение для SpeakerG Найти все сообщения от SpeakerG
  № 8  
Ответить с цитированием
SpeakerG

Регистрация: Jan 2016
Сообщений: 32
та у меня такая проблема, что обращение ваще не выходит, никак :/

Код AS3:
stage.addEventListener(Event.ENTER_FRAME, work);
function work (event:Event)
{
	for (var b = boxes.length; b > 0; b-- )
	{
		var boxN = boxes[b-1];
 
		if (boxN.hitTestObject(hero.leftM))
		{
			trace('yeh')
		}
	}
}
TypeError: Error #2007: Параметр hitTestObject не должен быть равен нулю.
at flash.display:isplayObject/_hitTest()
at flash.display:isplayObject/hitTestObject()
at _fla::MainTimeline/work()

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

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
Сдается мне, что на этом символе (который там leftM в библиотеке), надо правой кнопкой - export for actionscript. И после этого к нему можно будет обращаться в коде

п.с.
Код AS3:
for (var b = boxes.length; b > 0; b-- )
	{
		var boxN = boxes[b-1];
 
		if (boxN.hitTestObject(hero.leftM))
		{
			trace('yeh')
		}
	}
Это работает как-то через задницу) Не лучше ли написать так:
Код AS3:
for (var b:int = 0; b < boxes.length; b++) {
   var boxN = boxes[b];
   //...
}

Старый 13.01.2016, 22:21
undefined вне форума Посмотреть профиль Отправить личное сообщение для undefined Найти все сообщения от undefined
  № 10  
Ответить с цитированием
undefined

Регистрация: Oct 2006
Сообщений: 2,281
Цитата:
Сдается мне, что на этом символе (который там leftM в библиотеке), надо правой кнопкой - export for actionscript. И после этого к нему можно будет обращаться в коде
Это еще зачем? export нужен если требуется создавать экземпляр с помощью new.Скорее товарищ добавляет leftM не в ide,а где-то в коде

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

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

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


 


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


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