Вопросы по Quest Navigator
Здесь задаём любые вопросы по плееру Quest Navigator.
Storm:
в каком стиле CSS находиться рамка с двумя полосками, просто хочется её убрать
Storm, вы вообще заглядывали в стили?
Строки 493…503 файла game.css:
/* Вторичный фон - двойные полоски по краям */
#skin-back2
{
position: fixed;
left: 0px;
top: 0px;
right: 0px;
bottom: 0px;
overflow: hidden;
border-style: solid;
}
Особенно обратите внимание на комментарий в первой строчке этого отрывка :)
Storm:
Так же когда выводиться основное описание локации у нас от этой рамки есть отступы. Мне хочется их брать, чтобы расположить свои элементы там, где нужно. Подскажите где они прописаны.
там же строки 161…164 и 176…179:
/* MAIN DESC AND VARS DESC */
#qsp-main, #qsp-vars {
padding: 10px 19px 0 13px;
}
/* MAIN DESC AND VARS DESC */
#qsp-main, #qsp-vars {
padding: 0;
}
Эти строки затрагивают оформление окон основного и дополнительного описания одновременно.
Nex, подскажи пожалуйста, как сделать, чтобы на некоторых локациях (в зависимости от имени) к <body> добавлялся некий класс?
Если быть точным, то я не могу понять, как в game.js делать проверку значения $curloc.
Я не Nex, но попробую посоветовать не определять в JS значение $CURLOC. Стоит передать ее скрипту как параметр.
И как это сделать?
Так-то всё просто:
function qspSkinOnUpdateSkin() {
$(document.body).toggleClass('%class_name1%', %проверка_имени_локации%);
$(document.body).toggleClass('%class_name2%', %проверка_имени_локации%);
$(document.body).toggleClass('%class_name3%', %проверка_имени_локации%);
}
Но я не понимаю, как записать проверку названия локации.
HertzQ:
подскажи пожалуйста, как сделать, чтобы на некоторых локациях (в зависимости от имени) к <body> добавлялся некий класс?
Делайте это в коде игры, например в onnewloc
EXEC('JS:document.getElementById(''ваш айди'').style.backgroundImage = "url(backgrounds/<<$curloc>>.jpg)";')
Можете сделать проверку на нужные локации if $curloc = … : bla-bla
Или на автомате просто добавляя к названию нужных локаций что-нибудь (а-ля, wood_bg) и
if MID($curloc,len($curloc)-2,3)='_bg':EXEC('JS:...;')
Babai:
Делайте это в коде игры, например в onnewloc
Без обид, но это плохой совет.
HertzQ:
Делайте это в коде игры
Это хороший совет. Я это и имел ввиду. Если он вам не нравится - аргументируйте, пожалуйста.
Код отдельно, оформление отдельно.
Правильно будет реализовать добавление класса именно в game.js, а не в коде игры.
HertzQ:
Правильно будет реализовать добавление класса именно в game.js, а не в коде игры.
И в идеале, после обновления плеера переписывать game.js? Даже если вы добавите свой.js в шаблон, все равно останется шанс на не совместимость, после обновления кода плеера.
Игра не должны зависеть от плеера, все что можно сделать в игре - делайте в игре.
HertzQ:
Код отдельно, оформление отдельно.
Вы все-равно будете делать оформление средствами игры - дивы, стили текста и блоков и офрмлять все через css. JS нужен для “костылей”, крайних случаев когда средствами игры это не реализовать, как в данном случае, так как шаблон игры статичен и неизменяем средствами игры.
HertzQ:
Код отдельно, оформление отдельно.
Вы, кажется, чего-то не понимаете. Пример выше вам показывает, как вставить фон в див, в зависимости от локации. Так вот, это не оформление. Это - контент игры.
Вы будете весь контент выводить в JS и CSS? Тогда зачем вам QSP?
А цитата выше подразумевает, что код, логика игры должны быть отделены от оформления (внешнего представления контента) силами самого QSP. Просто не смешивайте в одной локации логику и оформление.
И тем не менее, хотелось бы всё-таки спросить об этом Nex’а.
HertzQ,
1. Определяем набор “сцен”: типов локаций, оформление которых различается.
Типичные варианты: “обложка”, “основная часть”, “об игре”, “концовка”.
Придумываем названия классов для каждой сцены. Пусть это будет “cover”, “main”, “about”, “ending”.
2. Прописываем в CSS-файле соответствующие правила, для применения этих классов к тегу BODY:
/* Если в основном экране или в концовке, то делаем верхний край основного описания ниже, чтобы оставить место для верхней панели */
body.main #qsp-wrapper-main,
body.ending #qsp-wrapper-main { top:57px; }
body:not(.main):not(.ending) #qsp-wrapper-main { top:0px; }
3. В шаблоне игры, в файле “game.js” создаётся функция “skinSetStage”, которая “переключает” текущий класс тега BODY.
var skinStage = "";
function skinSetStage(cssClass)
{
// Переключаем класс всего body, тем самым задаем разный стиль для разных игровых экранов
var t = $(document.body);
if ((skinStage !== '') && (t.hasClass(skinStage)))
t.removeClass(skinStage);
skinStage = cssClass;
if ((cssClass !== '') && (!t.hasClass(cssClass)))
t.addClass(cssClass);
}
4. В игре, в нужных локациях прописывается вызов этой функции.
! Стартовая локация игры.
! В начале игры, назначаем обработчик "загрузки игрового сохранения".
$ONGLOAD = 'OnLoad'
! Назначаем первую сцену - показываем "обложку" игры.
$stage = 'cover'
GS 'Stage'
! Локация "OnLoad".
! При загрузке игры,
! скрываем и показываем все необходимые элементы скина.
GS 'Stage'
! Локация "Stage"
EXEC('JS:skinSetStage("' + $stage + '");')
! Первая сюжетная локация. Показываем сцену "основная часть".
$stage = 'main'
GS 'Stage'
! Проигрыш. Показываем сцену "концовка".
$stage = 'ending'
GS 'Stage'
Большое спасибо.
помогите пожалуйста при открытие игры появляется надпись ошибка при выполнении js-вызова .как исправить?