В этой статье предлагаю простой способ оставить только нужные превьюшки в нижней части окна krpano. Способ не автоматизированный, его можно сильно усовершенствовать, но времени нет. Поэтому принимайте как есть.
Итак, изначально имеет тур с такими превью:
Здесь мы видим сразу несколько картинок для бара. Если тур большой, то каждая панорама будет занимать своё место, и превьюшек будет дико много. В итоге разобраться в них очень сложно, гораздо логичнее оставить по одной для каждого помещения.
Как это сделать?
- Добавьте в ваши skin_settings в файле tour.xml строку preview_count=»»
Выглядеть это будет примерно так:<skin_settings preview_count="" maps="false" maps_type="bing" maps_bing_api_key="" maps_zoombuttons="false"
В эту переменную вы будете вписывать число превьюшек, которые останутся видимыми в интерфейсе тура.
- Откройте ваш vtourskin.xml, найдите <action name=»skin_startup»> и добавьте внутрь условный оператор:
if( skin_settings.preview_count, copy(preview_counter, skin_settings.preview_count) , copy(preview_counter, scene.count) );
Это условие проверяет, задана ли переменная preview_count , и если задана, то копирует её значение в переменную preview_counter . В противном случае в эту переменную копируется банальный счётчик сцен (учитываются все панорамы).
- Найдите функцию <action name=»skin_addthumbs»> и доработайте её напильником. А именно:
После строки add(thumbbarheight, thumbpadding); добавьте код:if( skin_settings.preview_count, mul(thumbbarwidth, thumbxoffset, preview_counter) , mul(thumbbarwidth, thumbxoffset, scene.count) );
Затем найдите строку for(set(i,0), i LT preview_counter, inc(i), и замените константу scene.count на переменную, заданную нами ранее: preview_counter
Должно получиться примерно так:
for(set(i,0), i LT preview_counter, inc(i), inc(thumb_cnt); txtadd(thumbname,'skin_thumb_',get(i)); addlayer(get(thumbname));
А ещё лучше подключите этот код отдельным файлом, удалив предварительно из vtourskin.xml
- Отсортируйте ваши сцены в файле tour.xml таким образом, чтобы вначале шли те панорамы, которые вы хотите оставить.
Просто переносите каждую сцену от <scene> до </scene> выше или ниже, вырезая и вставляя текст. - Вернитесь в пункт 1 и впишите в переменную preview_count=»» число превьюшек, которые хотите оставить в панели. Например, я оставлю только 4 превью: администратор, бар, кафе, жилой этаж. Всё остальное будет скрыто.
В типовом случае вам лучше сначала собрать весь тур, не меняя последовательность сцен, а уже после этого перетащить в конец документа сцены, которые хотите скрыть, и указать число видимых.
Знаю, способ не самый гладкий, и задачу можно решить гораздо красивее, например, отключая отдельные панорамы при помощи переменных. Но мне некогда этим заниматься, да и нет нужды. Пользуйтесь на здоровье тем, что уже есть!
Как всё это работает?
Очень просто. Функция skin_addthumbs проверяет, какое значение имеет переменная preview_count. Если переменная пустая, то в панели превьюшек выводятся все превью от всех панорам, в порядке очерёдности. Если там стоит число, то выводится именно такое количество панорам, как указано в переменной.
Вот что получилось у меня.