|
|
|||||
Регистрация: Oct 2012
Сообщений: 12
|
Как сделать игровой интерфейс?
Собственно, вопрос - как сделать игровой интерфейс? Как вы его делали/делаете?
Мы разрабатывает браузерную игру для социальных сетей. Там будет приличное количество различных элементов управления. И так, художник предлагает следующий вариант - он делает весь интерфейс во Flash CS, в основном на основе MovieClip, а я уже подключаю его в проекте на FlashDevelop и обращаюсь к нужным элементам управления по именам, задавая им значения. Но мне нужны будут не только простые элементы управления, типа Button или Label, а ещё RadioButton, ToggleButton, ListBox, различные игровые элементы (предметы, информация о персонажах). Проблема в том, что управлять всем этим в коде будет весьма затруднительным. Нужно будет писать дополнительный код, либо обёртки под MovieClip'ы, точно не знаю, как. Выглядеть это будет примерно так: panel.user_level.text = "3"; panel.user_avatar.addChild(...); // Чтобы добавить аватарку, нужно написать отдельный код для загрузки, после удалить прошлую аватарку и добавить загруженную. Проблема в том, что художнику придётся отдельно рисовать все элементы управления, а мне уже потом придётся их расставлять в коде, то есть, задавать нужное положение, нужный шрифт и тому подобное. Если художник вдруг захочет так, чтобы кнопка была чуть левее, то нужно будет лезть в код, хотя, мне несложно. Выглядеть это будет примерно так: var playerIcon:PlayerIcon = new PlayerIcon(this, 10, 10); playerIcon.level = 3; playerIcon.avatar = "http://ololo.png"; // Мне остаётся лишь задать ссылку. Внутри будут произведены действия для загрузки изображения на основе ещё одного дополнительного компонента. var toggleButton:ToggleButton = new ToggleButton(this, 100, 50); toggleButton.selected = true; toggleButton.label.text = "Включен"; toggleButton.label.setFont("Tahoma", 12, 0xFFFFFF); toggleButton.texture = Resources.TOGGLE_BUTTON_TEXTURE; |
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Ваш вариант вполне себе ничего. И это не проблема, что
Цитата:
Или Вы имели ввиду под проблемой именно это: Цитата:
|
|
|||||
Есть 2 конкурирующих подхода:
- рисовка целых интерфейсов вместе с кнопками во Flash IDE - скинование компонентов нарисованным художниками и расстановка кодом Если посмотреть на вконтакт - подавляющее большинство использует первый подход К сожалению не могу ничего посоветовать по решению связанных с ним проблем т.к. используем второй (но это из-за неприязни ко всему новому и из-за того что интерфейс рисуют, хорошо если к середине разработки) Т.е. используйте первый подход - не ошибётесь Последний раз редактировалось expl; 07.10.2012 в 22:15. |
|
|||||
Я предпочитаю второй подход, но иногда дают уже готовую графику и тогда приходится совмещать оба подхода. Ведь совсем необязательно, чтобы ваш PlayerIcon наследовался от DisplayObject. Вполне можно, в конструктор передавать мувиклип-графику , а дальше работать с этим классом по второму подходу.
|
|
|||||
[+4 08.09.13]
Регистрация: May 2012
Сообщений: 131
|
делаю просто. например, какое-нибудь окно, скажем, окно магазина.
в Flash CS собираю по частям всё окошко, прописывая каждому элементу своё имя. в коде - отдельный класс для этого окна с параметрами - элементами из окна. и т.д. для каких-либо элементов, которые нужно изменять параметрами извне - геттеры сеттеры. ничего сложного. |
|
|||||
Регистрация: May 2004
Адрес: Малайзия
Сообщений: 20
|
Вообще, интерфейсы - это непростая штука, правильное решение должно включать как минимум: простую возможность локализации (с самого начала), контейнеры (понадобится, уверен на 100%), лэйауты (как, скажем, будете позиционировать кнопку относительно левого нижнего края экрана? каждый раз ручками?), скинование/стилизация (минимальная поддержка CSS спасет много времени). Удобен декларативный подход к созданию интерфейсов. Использую, например, что-то вроде mxml:
<cntn:Canvas factoryid="hdb.scenes.splash::SplashView" autoSize="false" width='@StaticRef(class="hdb.utils.MultiScreenSupport",member="screenWidth")' height='@StaticRef(class="hdb.utils.MultiScreenSupport",member="screenHeight")'> <ctrl:Image contentScaleMode="zoom" source="@ClassRef(hdb.assets.SplashScreenView)" percentWidth="100" percentHeight="100" /> <cntn:HBox right="15" bottom="15" vAlign="bottom"> <ctrl:SkinnedButton id="showScoresButton" icon="@ClassRef(hdb.assets.ScoresButtonIcon)" styleName="xLargeIconButton" /> <ctrl:SkinnedButton id="achievementsButton" icon="@ClassRef(hdb.assets.AchievementsButtonIcon)" styleName="xLargeIconButton" /> <ctrl:SkinnedButton id="optionsButton" icon="@ClassRef(hdb.assets.OptionsButtonIcon)" styleName="xLargeIconButton" /> <ctrl:SkinnedButton id="playButton" icon="@ClassRef(hdb.assets.PlayButtonIcon)" styleName="xxxLargeIconButton" /> </cntn:HBox> <ctrl:SkinnedButton id="@notificationButton" visible="false" left="15" bottom="15" icon="@ClassRef(hdb.assets.NotificationButtonIcon)" styleName="xLargeIconButton" /> <ctrl:Label id="versionLabel" top="10" left="10" styleName="versionText" /> </cntn:Canvas> http://www.ryancampbell.com/2009/08/...le-and-source/ Попробуйте, лучше день потерять, потом за пять минут долететь (и не один раз, кстати). |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Предпочитаю первый подход. Расставлять всё программно... Нет уж, спасибо.
Цитата:
|
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Тут еще иногда играет роль такой момент, как тормознутость художника (полагаю, следует думать, что из-за загруженности, хотя уверен, что это далеко не всегда так). Бывает, приспичет какой-нибудь элемент интерфейса подвинуть, пишешь художнику, мол, подвинь, пожалуйста, и ждешь непонятно зачем, когда мог бы и сам подвинуть ровно на столько, на сколько нужно.
|
|
|||||
Я оба подхода использую, так как получаею псд и все оттуда режу на куски и собираю обратно. Некоторые вещи собираю во флеше и проставляю имена, некоторые кодом. Зависит от интерактивности и смотря что надо анимировать.
И как вежливо сказал Silicium, художники - творческие натуры, поэтому постоянно тормозят, так как ветер на горе Фудзияма подул в другую сторону. То лучше, чтобы от них зависело все по минимуму.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Цитата:
|
Часовой пояс GMT +4, время: 16:47. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|