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

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

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
По умолчанию Loader class и дочерние обьекты

Наткнулся на 2 проблемы.
Первая - это Loader class, с помощью него я гружу картинку извне, после могу сразу добавить на сцену - как и написано в примере хэлпа.
Loader.content - то, что мы загрузили. Теперь внимание - если мы создаем новый класс и передаем туда этот Loader (пусть он у нас, скажем будет ldr):
Код:
new someClass(ldr);
В someClass`e, в конструкторе пишем:
Код:
trace(ldr); //параметр который я принимаю в класс обзовем так же
Выводит: [Loader object] - все шикарно.

Если сделаем:
Код:
trace(ldr.content); //получаем null
Если сделать в главном классе (по привычке ещё пишу в фреймах)
Код:
trace(ldr.content); //выдает то, что мы загружали
Странно, возникает единствення мысль - обьекты не передаются с его дочерними свойствами и обьектами - мысль конечно, полная ересь, что и проверяем:
Код:
new someClass(ldr.content); //в конструкторе оутпут - null
С чем это связано?

И 2 вопрос, наверное более глупый, причем настолько, что не хочется ради него открывать новую тему
Код в главном классе:
Код:
var zone:paintArea=new paintArea();
addChild(zone);
zone.addChild(toPaint);
Как из класса paintArea получить ссылку на toPaint?
getChildAt не помогает, оно и понятно - когда выполняется конструктор у нас элементарно toPaint ещё отсутсвует в zone. Конечно, можно добавить toPaint в самом конструкторе, но дело в том, что этих toPaint у меня много - в зависимости от ситуации, выбор - передавать через параметр, ну а это делать как то не хочется. Есть варианты, или таки придеться?

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

Регистрация: Sep 2002
Сообщений: 30,787
Почему имена классов с маленькой буквы начинаются?

1. Загрузка была завершена на момент создания SomeClass?
2. Либо переопределить addChild у zone, либо подписаться на событие ADDED и ADDED_TO_STAGE и смотреть детей.

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

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
А еще лучше - не передавать ничего в конструктор =) Отдельным методом, потом самому же удобнее будет.
__________________
Hell is the possibility of sanity

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Имена с маленькой буквы - привычка. Это ведь не как не влияет на быстродейственность?
2wvxvw : отдельным методом и сделал, но после помучился с z-сортировкой. Если это передать в конструктор, то можно делать addChild имено в той последовательности, в какой тебе нужно.
2__etc : можно поподробней, что ты имеешь ввиду под словом "переопределить", не совсем понял твою мысль. Про события ADDED ты предлагешь подписаться в someClass на добавление, скажем, 3 элемента и после вызывать метод? Ммм, логично)

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

Регистрация: Sep 2002
Сообщений: 30,787
Psycho Tiger, во флешовом фреймворке нет ни одного класса, у которого имя с маленькой буквы начинается, а у вас есть.

Переопределить — override. Т.е. написать свой метод addChild.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Оверрайдить addChild - это слишком для начинающего ас3-ера.
В принципе то, если я работаю один - то совершенно без разницы как называется класс. Чтож, учту и постораюсь писать с большой буквы... Хотя в привычку уже вошло - первая буква маленькая, следуйщие слова с большой...

Старый 21.04.2008, 19:23
badun вне форума Посмотреть профиль Отправить личное сообщение для badun Найти все сообщения от badun
  № 7  
Ответить с цитированием
badun

Регистрация: Dec 2007
Сообщений: 269
вот шаблон, дописывай свой функционал, ничего сложного нет
Код:
		override public function addChild(child:DisplayObject):DisplayObject 
		{
			return super.addChild(child);
		}

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Ммм, и то верно) Я то подумал что полностью самому addChild etc предлагает написать.

Хорошо, и 2 вопрос - кто знает?
Цитата:
И 2 вопрос, наверное более глупый, причем настолько, что не хочется ради него открывать новую тему
Код в главном классе:
Код:
var zone:paintArea=new paintArea();
addChild(zone);
zone.addChild(toPaint);
Как из класса paintArea получить ссылку на toPaint?
getChildAt не помогает, оно и понятно - когда выполняется конструктор у нас элементарно toPaint ещё отсутсвует в zone. Конечно, можно добавить toPaint в самом конструкторе, но дело в том, что этих toPaint у меня много - в зависимости от ситуации, выбор - передавать через параметр, ну а это делать как то не хочется. Есть варианты, или таки придеться?

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

Регистрация: Sep 2002
Сообщений: 30,787
Написать сеттер toPaint.

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

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,599
Записей в блоге: 17
Хм, а почему не работает в качестве параметра?
Как может не null обьект стать null`oм?

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

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

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


 


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


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