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

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

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

Регистрация: Oct 2006
Сообщений: 2,283
наиболее универсальным был бы внешний XML,хотя я предпочитаю JSON

Добавлено через 1 минуту
Цитата:
слушатели взаимодействия с объектами
это не то, что можно хранить

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

Регистрация: Mar 2014
Сообщений: 27
Цитата:
Сообщение от undefined Посмотреть сообщение
наиболее универсальным был бы внешний XML,хотя я предпочитаю JSON

Добавлено через 1 минуту

это не то, что можно хранить
Тогда вы не могли бы подсказать по структуре, что где должно быть описано и из каких классов управляться?

В упрощенной, первой версии, хотелось бы понять как осуществляется работа между классами, по этому как я уже писал ранее, количество классов ограничено до:

Main.as - точка входа
DisplayManager.as - управление экранами
Objects.as - все динамические объекты

Хочу уточнить, что вся анимация покадровая, по этому взаимодействие с объектами - это событие клика -> условие проверки на доступность -> запуск анимации/добавление или удаление объектов

У меня почти полностью готовы исходники (локации, анимации и пр.), но реализовать я могу лишь одну локацию в одном классе. А правильно разделить на классы и связать в одну работающую программу не могу. Обидно.

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

Регистрация: Oct 2006
Сообщений: 2,283
Как я и думал напишите все за меня.Нет уж.Для начала рекомендую описать по-минимуму в json свои игровые экраны: какие объекты на них находятся, координаты.Дальше грузишь этот json,и генерируешь по нему свои игровые экраны.Там же и вешаешь свои слушатели на событие клик.
Цитата:
по этому как я уже писал ранее, количество классов ограничено до
Глупое ограничение. Классов должно быть ровно столько, сколько нужно.Например, я не знаю что ты хочешь разместить в Objects.as, видимо,какое-то описание логики игровых объектов.Зачем все объекты в одну кучу валить?Это будет т.н. спагетти-код.Тут по хорошему надо определиться какой функционал будет общим для всех объектов и вынести его в базовый класс GameObjectBase.as и потом все игровые объекты наследовать от GameObjectBase.Тогда objects надо сделать пакетоми в него положить GameObjectBase.as и всех его наследников.
Итак дальнейшие шаги:
1)Описать игровые экраны в json файле
2)Определиться с тем, что общего у всех игровых объектов.По-минимуму у каждого игрового объекта должно быть визуальное представление.Соответственно все игровые оъекты должны уметь выставлять себе внешний вид:
Код AS3:
package objects 
{
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.utils.getDefinitionByName;
	/**
	 * ...
	 * @author 
	 */
	public class GameObjectBase extends Sprite 
	{
		protected var view:DisplayObjectContainer;
		public function GameObjectBase() 
		{
			super();
 
		}
		public function setView(linkage_id:String):void {
			var cl:*= getDefinitionByName(linkage_id);
			if (cl is Class) {
				view = new cl() as DisplayObjectContainer;
				addChild(view);
			}
		}
 
	}
 
}
Если выяснится еще какой-то общий функционал для всех игровых объектов, будешь добавлять его в этот класс.
Для начала хватит.
PS:Все идет к тому, что весь код за тебя буду писать я.Так не пойдет

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

Регистрация: Mar 2014
Сообщений: 27
За меня ни в коем случае! (разве что самую малость)
За подробные подсказки спасибо, именно это меня интересует в первую очередь.

Старый 17.09.2016, 16:31
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 15  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Там еще MVC есть.
А вообще тут столько материала, что можно пять игр написать не парясь. Нужно только с 2004 года все топики осилить.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
undefined, чем обусловлено использование типа DisplayObjectContainer?
Вы собираетесь в него что-то добавлять? Или всё-таки Вы его добавляете в отображение? Так для этого достаточно более общего класса DisplayObject. Сужая тип до DOC, Вы отсекаете возможность использовать в качестве view битмапы, векторные шейпы и текстовые поля.

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

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

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Сообщение от Wolsh Посмотреть сообщение
undefined, чем обусловлено использование типа DisplayObjectContainer?
Вы собираетесь в него что-то добавлять? Или всё-таки Вы его добавляете в отображение? Так для этого достаточно более общего класса DisplayObject. Сужая тип до DOC, Вы отсекаете возможность использовать в качестве view битмапы, векторные шейпы и текстовые поля.
Согласен, писал на коленке, особо не запариваясь.Lesnoj,поправь у себя тип у view на DisplayObject, и приведение в setView.

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

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Код AS3:
var cl:*= getDefinitionByName(linkage_id);
Такая штука очень небезопасна.Скорее всего такой процесс разработки для новичка не катит.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Oct 2006
Сообщений: 2,283
Цитата:
Сообщение от dimarik Посмотреть сообщение
Код AS3:
var cl:*= getDefinitionByName(linkage_id);
Такая штука очень небезопасна.Скорее всего такой процесс разработки для новичка не катит.
А что не так, тип *?

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

Регистрация: Mar 2014
Сообщений: 27
Цитата:
Сообщение от undefined Посмотреть сообщение
Согласен, писал на коленке, особо не запариваясь.Lesnoj,поправь у себя тип у view на DisplayObject, и приведение в setView.
Объясните пожалуйста по вашему коду:
  • Мы обратились к DisplayManager из Main
    Код AS3:
    DisplayManager.init(this.root as DisplayObjectContainer);
    , но откуда у нас к нему доступ?
  • Что происходит в DisplayManager проверке
    Код AS3:
    if (curScreen !=-1 && screens && screens[curScreen].parent) {
    ?
  • Почему нет ф-ции конструктора в DisplayManager?
  • Какой класс расширяет DisplayManager?
  • Для чего метод
    Код AS3:
    public static function get rootDO():DisplayObjectContainer {
    ?

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

Теги
классы , ООП

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

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


 


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


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