Рубрики
Пошаговый учебник Создание виртуальных туров в krpano

Как удалить лишние превью в стандартном скине krpano?

В этой статье предлагаю простой способ оставить только нужные превьюшки в нижней части окна krpano. Способ не автоматизированный, его можно сильно усовершенствовать, но времени нет. Поэтому принимайте как есть.

Итак, изначально имеет тур с такими превью:

Превьюшки в krpano
Превьюшки в krpano

Здесь мы видим сразу несколько картинок для бара. Если тур большой, то каждая панорама будет занимать своё место, и превьюшек будет дико много. В итоге разобраться в них очень сложно, гораздо логичнее оставить по одной для каждого помещения.

Как это сделать?

  1. Добавьте в ваши skin_settings в файле tour.xml строку preview_count=»»
    Выглядеть это будет примерно так:

    	<skin_settings preview_count=""
                           maps="false"
    	               maps_type="bing"
    	               maps_bing_api_key=""
    	               maps_zoombuttons="false"
    

    В эту переменную вы будете вписывать число превьюшек, которые останутся видимыми в интерфейсе тура.

  2. Откройте ваш 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 . В противном случае в эту переменную копируется банальный счётчик сцен (учитываются все панорамы).

  3. Найдите функцию <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

  4. Отсортируйте ваши сцены в файле tour.xml таким образом, чтобы вначале шли те панорамы, которые вы хотите оставить.
    Просто переносите каждую сцену от <scene> до </scene> выше или ниже, вырезая и вставляя текст.
  5. Вернитесь в пункт 1 и впишите в переменную preview_count=»»  число превьюшек, которые хотите оставить в панели. Например, я оставлю только 4 превью: администратор, бар, кафе, жилой этаж. Всё остальное будет скрыто.

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

Знаю, способ не самый гладкий, и задачу можно решить гораздо красивее, например, отключая отдельные панорамы при помощи переменных. Но мне некогда этим заниматься, да и нет нужды. Пользуйтесь на здоровье тем, что уже есть!

Как всё это работает?

Очень просто. Функция skin_addthumbs проверяет, какое значение имеет переменная preview_count. Если переменная пустая, то в панели превьюшек выводятся все превью от всех панорам, в порядке очерёдности. Если там стоит число, то выводится именно такое количество панорам, как указано в переменной.

Вот что получилось у меня.

Уроки по созданию виртуальных туров
Уроки по созданию виртуальных туров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.