Форум » freeDEXpano » Плагин list_default_1. Перестановка выделения на пункт текущей сцены. » Ответить

Плагин list_default_1. Перестановка выделения на пункт текущей сцены.

Solpadeine: 2 дня не могу победить проблему. Я открываю панорамы, через плагин list, где пункты списка соответствуют разным сценам. Один из пунктов списка открывает фотографию. Я хочу, чтобы после закрытия фотографии, выделенным остался пункт списка, соответствующий текущей сцене. У меня же выделенным остается пункт списка с фотографией. Изображение закрываю по клику таким скриптом: <script id="close_img" keep="1"> <pr id="vid_iz_okna" visible="0" /> <pr id="panorama_list" selection.row="@{@{api._scene}.class}"/> </script> К каждой сцене, в параметре class прописал соответствующий сцене номер списка вот так: <scene id="scene3" class="2"> ... </scene> Перепробовал уже кучу всяких разных комбинаций как это сделать, ни одна версия не работает. Список файлов тут: https://dl.dropboxusercontent.com/u/24983400/tur_kvartira.zip

Ответов - 1

Administrator: У вашей проблемы гораздо более простое решение. Добавим еще одну переменную [pre2]<variables ... last_scene_num="0" ... />[/pre2] В ней мы будем хранить информацию о последней открытой сцене. Изменим структуру списка следующим образом [pre2] <list_default id="panorama_list" ... default.is_img="0" on_selection_changed="script_update_list" column_id="zagolovok" ...> <row id="id1" nomer="init_scene" zagolovok="Коридор"/> <row id="id2" nomer="scene2" zagolovok="Ванная"/> <row id="id3" nomer="scene3" zagolovok="Кухня"/> <row id="id4" nomer="scene4" zagolovok="Маленькая комната"/> <row id="id5" nomer="scene5" zagolovok="Зал"/> <row id="id6" nomer="scene6" zagolovok="Спальня"/> <row id="id7" nomer="scene7" zagolovok="Лоджия"/> <row id="id8" nomer="" zagolovok="Вид из окна" is_img="1"/> </list_default>[/pre2] Мы добавили параметр is_img, в котором будем ставить единичку, если это изображение, а не сцена. Для всех сцен задаем значение по умолчанию: default.is_img="0" И правим скрипты, вызываемые при изменении сцены: [pre2] <script id="script_update_list" keep="1" if="|@{panorama_list.row[@{panorama_list.selection.row}].is_img}|stringInequal|1|" action_else="script_show_img"> <pr id="vid_iz_okna" visible="0"/> <scene id="@{panorama_list.row[@{panorama_list.selection.row}].nomer}"/> <pr id="last_scene_num" set="@{panorama_list.selection.row}"/> <pr id="info" text="@{panorama_list.row[@{panorama_list.selection.row}].zagolovok}"/> </script> <script id="script_show_img" keep="1"> <pr id="vid_iz_okna" visible="1"/> <pr id="info" text="@{panorama_list.row[@{panorama_list.selection.row}].zagolovok}"/> </script> [/pre2] Ключевым здесь является использование параметра if (если). Если выполняется условие (is_image не равно 1), то меняем сцену и запоминаем ее номер. Если условие не выполняется, то запускаем скрипт показа изображения. При закрытии изображения переходим в сцену, номер которой сохраненили в переменной last_scene_num. [pre2] <script id="close_img" keep="1"> <pr id="vid_iz_okna" visible="0" /> <pr id="panorama_list" selection.row="${last_scene_num}"/> </script>[/pre2] Скачать файл настроек Подробнее о условиях при выполнении скриптов можно прочитать здесь: Описание настроек freeDEXpano Раздел "Скрипты" Так же, хотел бы сделать несколько замечаний по структуре вашего проекта. Насколько я понимаю, вы хотите сделать унифицированный тур для демонстрации нескольких комнат и нескольких картинок. Для облегчения настроек, я бы порекомендовал вам, все постоянные скрипты и кнопки управления задавать в init_scene и скрывать или отображать их по мере необходимости. А все панорамы и изображения сделать в отдельных сценах. Переход же между сценами задавать через список. Кстати, даже хотспоты могут указывать переход не на конкретную сцену, а на смену выбранного пункта списка. А по событию смены выбранного ряда списка можно производить стандартизированную и прописанную в одном месте операцию смены сцены. Это позволит облегчить последующую модификацию тура под разное количество помещений и фотографий. На самом деле вариантов очень много, в том числе и очень элегантных по реализации.



полная версия страницы