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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 06.01.2016, 20:49
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 21  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А чего там преобразовывать, Zack уже содержит в себе Man.
То есть он Man и "кое что еще". В этом, простите, СМЫСЛ наследования.
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Цитата:
"в документе который связан с классом" — звучит псевдонаучно, но смысл теряется. Тут вся заморочка в том, что Flash автоматически создает в документ-классе (А) переменные/свойства с названиями, которые Вы дали объектам на таймлайне*. Из-за этого у Вас возникает непонимание, почему в другом классе Вы не можете к ним обратиться — ведь в классе А Вы ничего особого для этого не делали. Flash сделал это за Вас — создал переменные, инициировал их, создав новые экземпляры классов кнопки и звезды, и поместил их в список отображения (Display List) экземпляра документ-класса. Весь этот автоматизм больше вредит чем помогает новичку понять механизм.
Я кое где покопался ну так и ничего удовлетворительного не нашел , ладно, теперь осмелюсь спросить - как это можно реализовать ? (без добавление абджekтов в список отображения непосредственно в классе В )


Последний раз редактировалось zackscript; 06.01.2016 в 21:54.
Старый 06.01.2016, 21:30
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 23  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
"Можно" по-разному, а "нужно" — создавать детей в том классе, который ими управляет, в котором логика управления жизнью этих объектов. Какой смысл создавать объекты в одном классе и помещать их в его Список Отображения, а управлять ими из другого?
Есть еще другой вариант "взгляда" на иерархию, это концепция не "родители и дети", а "инструмент". Кнопка и Звезда у Вас это инструменты для решения какой то задачи класса В, который в свою очередь — инструмент класса А. То есть А создает В, чтобы тот выполнял какую-то определенную задачу, функцию. Создатель знает, какую именно и для чего, и что делать с событиями и данными, поступающими от экземпляра В. Знает, что они означают и на что влияют в текущем контексте задачи. Сам В этого не знает, этого контекста. У него есть заложенная в него ответственность — создать то-то и то-то, отобразить, слушать события от своих детей-инструментов и что-то важное диспатчить событиями наверх классу А. Для решения этой своей задачки он создает свои инструменты — кнопки и прочее. Кнопки, на самом деле, тоже создают в себе экземпляры графики, картинки или векторные шейпы, и тоже слушают нажатия на них и прочее. Уровень ответственности все ниже и ниже, чем дальше мы уходим от центра логики приложения — Документ-класса — тем меньше знают о происходящем инструменты. Конечный шейп или картиночка в кнопке уже вообще ничего не делает и никакого кода не содержит, кнопка только слушает мышиные события над собой и показывает/скрывает состояния (картинки), В слушает нажатия на кнопки и в зависимости от них что-то посылает классу А.
Важный момент Иерархии — объекты одного уровня не могут приказывать что-то друг другу в обход более старшего. Это он, старший, знает, зачем вообще они живут и что должны делать. Каждый воспитывает только своих детей и несет ответственность только за них.
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Фууух, можно пожалуйста ссылки на 4-ю проблему (реальные примеры).

Цитата:
Какой смысл создавать объекты в одном классе и помещать их в его Список Отображения, а управлять ими из другого?
нет я создал объекты в одном классе и поместил их в его Список Отображения, и создал объект этого класса в другом где в свою очередь поместил в С/О

Старый 07.01.2016, 13:09
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 25  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Кнопка и Звезда у Вас создаются в Документ-классе.
Вы Документ-класс что ли поместили в список отображения класса В?

Добавлено через 37 минут
Код AS3:
		public var _btn:SimpleButton = Btn;
		public var _star:MovieClip = Star;
Это не создание объектов. Это создание переменных _btn и _star.
Которые Вы пытаетесь инициализировать другими переменными Btn и Star, которых НЕТ в этом классе, они в классе А. Они созданы там автоматически программой Flash и инициализированы теми экземплярами, что Вы нарисовали на таймлайне и задали им имена, которые и стали автоматически названиями переменных класса А.
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Цитата:
Вы Документ-класс что ли поместили в список отображения класса В?
Вовсе нет.
Я просто хотел красиво структурировать классы, думал что если в Мэин-классе создать объект BClass(пример ниже) то BClass мог бы манипулировать объектами , кнопками, битмапы, звуки и т.д. ну как видите нечего не получается.
А вот если я привязал бы документ с классом BClass - робит.

Main
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.display.Stage;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.display.SimpleButton;
	public class Main extends Sprite
	{
		private var _bclass:BClass;
		public function Main();
		{
			_bclass = new BClass ();
			addChild(_bclass);
		}
	}
}
BClass
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.display.SimpleButton;
	public class BClass extends MovieClip
	{
		public function BClass()
		{
			Star.x += 200;
			Btn.addEventListener(MouseEvent.CLICK,onBtn);
		}
		public function onBtn(e:MouseEvent)
		{
			trace("HI");
		}
	}
}

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

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Нужно передать в экземпляр BClass ссылки на объекты Star и Btn. То, что Вы хотите сделать — не разделение по классам, а разбиение кода по файлам с последующим инклюдом. Такого в AS3 нет (хотя, скажу честно, существует) и не принято. И да, переменные принято называть с маленькой буквы — исправьте instance name у Star и Btn.
__________________
тут я

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

Регистрация: Jan 2014
Сообщений: 181
Отправить сообщение для zackscript с помощью Skype™
Цитата:
Нужно передать в экземпляр BClass ссылки на объекты Star и Btn.
Это как ? мне нужно star и btn сохранить в переменных и использовать так: объектВ.переменнаяstar(в конструкторе класса Main) ? только сильно бейте по рукам если написал глупость.
И еще у меня в Main такая ошибка, раньше не было такого но или я запутался пока копался в поисках ответа.
В строгом режиме:
Цитата:
1120: Обращение несуществующего свойства bclass.
1180: Вызов предположительно неопределенного метода addChild.
1120: Обращение несуществующего свойства bclass.
простой режим:
Цитата:
ReferenceError: Error #1065: Переменная star не определена.
at BClass()
at Main$cinit()
at global$init()

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Простейший вариант:
— объявить в BClass публичные переменные public var btn:SimpleButton и public var star:MovieClip;
— в мейне создать экземпляр bclass:BClass;
— в мейне передать его переменным ссылки на объекты, bclass.btn = btn; bclass.star = star;

Второй вариант:
— в конструкторе BClass принимать параметры
Код AS3:
public function BClass(btn:SimpleButton, star:MovieClip) {///}
Третий вариант — создать сеттеры — Вам наверное рановато.
__________________
Reality.getBounds(this);

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

блогер
Регистрация: Jul 2013
Адрес: Север
Сообщений: 1,918
Записей в блоге: 23
Отправить сообщение для ZackMercury с помощью ICQ Отправить сообщение для ZackMercury с помощью Skype™
zackscript. Так не делается. Классы для другого, если вы не знали.
__________________
There is no thing in this world that is not simple.

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

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

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


 


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


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