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

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

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Любителям наследоваться от графики:

Представьте приложение аля quiz. Каждый вопрос "нарисован" дизайнером (всмысле созданы отдельные символы и всё красиво расставлено). Нужно чтобы это всё анимированно появлялось, затем каждая плашка с вопросом имеет своё внутреннее поведение (аля ToggleButton или сложный компонент как на последней картинке). Что, будете от каждого символа наследоваться?
Миниатюры
Нажмите на изображение для увеличения
Название: 02-question-lvl1.jpg
Просмотров: 167
Размер:	47.3 Кб
ID:	25633   Нажмите на изображение для увеличения
Название: 03-answer-lvl1.jpg
Просмотров: 159
Размер:	62.1 Кб
ID:	25634   Нажмите на изображение для увеличения
Название: 04-question-lvl3.jpg
Просмотров: 167
Размер:	58.5 Кб
ID:	25635  

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
getChildByName как бы.

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

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
что с ним?

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

блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
Как бы даже с наследованием.
Наследуемся от контейнера со всей графикой и крутим-вертим.

Старый 16.12.2010, 19:50
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 15  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
От каждого вопрос-сет-контейнера наследоваться? Что с поведением каждого(ну почти) элемента в контейнере?

Старый 16.12.2010, 19:56
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 16  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Я пришел к выводу, что лично мне очень даже неудобно разделять логику.
Так, чтобы часть была в swc, а часть в основном проекте в билдере, например.
Теперь вообще не создаю *.as файлов в flashIDE-проекте. Линковать можно благо в любой пакет и без создания файла. Классы соответственно получают имена в стиле CircleView, EnemyView, LevelView;
В основном проекте же все классы, которые будут работать с символами из библиотеки наследуются от, например, класса BaseControlLogic (его идею подрезал у коллеги) (сам класс наследуется, например, от EventDispatcher).
Он может выглядеть так:


Код AS3:
package base {
	import flash.display.DisplayObjectContainer;
	import flash.display.Sprite;
	import flash.events.EventDispatcher;
	import flash.events.MouseEvent;
	import tools.CursorMgr;
 
	public class BaseControlLogic extends EventDispatcher {
		protected var _view : Sprite;
		protected var _owner : DisplayObjectContainer;
 
		public function BaseControlLogic(){
			super();
		}
 
		public function setView(view : Sprite) : void {
			if(view) {
				initView(view);
			} else {
				removeView();
			}
		}
 
		public function getView() : Sprite {
			return _view;
		}
 
		protected function initView(view : Sprite) : void {
			_view = view;
		}
 
		protected function removeView() : void {
			if(_owner) {
				_owner.removeChild(_view);
				_owner = null;
			}
			_view = null;
		}
 
		public function set owner(owner : DisplayObjectContainer) : void {
			_owner = owner;
			_owner.addChild(_view);
		}
 
		public function get visible() : Boolean {
			return _view ? _view.visible : false;
		}
 
		public function set visible(visible : Boolean) : void {
			if(_view) {
				_view.visible = visible;
			}
		}
	}
}
В потомках же переопределяем initView(); как нам надо.
Например так.

Код AS3:
package levels{
	import dialogs.base.BaseControlLogic;
 
	import flash.display.DisplayObject;
 
	public class Level extends BaseControlLogic{
		private var _enemies : Vector.<Enemy>;
		public function Level(){
		}
 
		override protected function initView(view : Sprite) : void {
			super.initView(view);
			getEnemiesFromView(); // получаем всех врагов
			/*
			* делаем с ними, что надо
			*/
		}
 
		private function getEnemiesFromView():void{
			var child : DisplayObject;
			var enemy : Enemy;
			_enemies = new Vector.<Enemy>();      
 
			for(var : int = 0; i < _view.numChildren; i++){
				child = _view.getChildAt(i);
				if(child is EnemyView){
					enemy = new Enemy();
					enemy.setView(child);
					_enemies.push(enemy);
				}
			}
		}
  }
}

Естественно, Enemy наследуется от BaseControlLogic примерно таким же образом.

Мне кажется, что такой способ должен тебе подойти.
Ну или хотя бы натолкнуть на действия.
В общем использовать flashIDE как редактор уровней вполне себе можно.
И я уже такое делал. Правда тогда весь проект был во флеше, но это не имеет значения. Каждый клип уровня был слинкован со своим классом и передовался методу compileLevel(levelView):Level, который возвращал уже удобно подготовленный к обращению в коде уровень. Ну или не возвращал, если я в дизайне налажал и не поставил, например, ни одного респауна.


Я сам новичок, поэтому могу не видеть кучи подводных камней такого метода.
Но мне пока нравится.


Так. Кажется, я прослоупочил ответ =)
И немного протупил =(


Последний раз редактировалось ChuwY; 16.12.2010 в 20:15.
Старый 16.12.2010, 21:35
КорДум вне форума Посмотреть профиль Отправить личное сообщение для КорДум Найти все сообщения от КорДум
  № 17  
Ответить с цитированием
КорДум
 
Аватар для КорДум

блогер
Регистрация: Jan 2008
Адрес: syktyvkar
Сообщений: 3,803
Записей в блоге: 10
Цитата:
От каждого вопрос-сет-контейнера наследоваться? Что с поведением каждого(ну почти) элемента в контейнере?
Как бы, в статье, где вы выложили данную ссылку, описан способ, как можно сделать лучше - gloomyBrain сказал. А вообще да, getChildByName тут, если так уж очень религия не позволяет сделать все программно.
__________________
тут я

Старый 17.12.2010, 00:00
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 18  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Не вижу я там способа как сделать лучше, там все советуют расширяться от графики или добавлять композицией. А тем временем TanaTiX правильный вопрос задал, да и я тут пример с картинками привёл. Расширение от графики не позволит вам создать разные (визуально) объекты с одни внутренним поведением, для этого надо графику как раз экстендить от кодового класса — для этого есть поле base class (code behind получается). Причём для этого не надо перекомпилировать swc, достаточно указать правильный порядок classpath для mxmlc и ваш код будет вкомпилен вместо указанного во fla base class. Причем с fla-файлом сможет работать даже дизайнер, т.к. вкомпиливать можно (нужно!) классы-пустышки (просто BaseClass extends Sprite/MovieClip).

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

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
достаточно указать правильный порядок classpath для mxmlc
Получается, что нужно писать 2 класса - пустышку для Flash IDE + реальный для mxmlc. А где (как) правильно указать порядок? (И можно ли в FD?)

Ага - в в свойствах проекта =)
__________________
...вселенская грусть

Старый 17.12.2010, 00:16
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 20  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Пустышку пускай конечно jsfl генерирует (у fla-файла надо добавить classpath до реальной src папки, чтобы можно было указать на base class, а перед компиляцией swc автоматом создать все базовые классы-пустышки)

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

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

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


 


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


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