LINUX.ORG.RU

Помогите js осилить


0

2

Бьюсь 3й час. Толку нет.

 <script src="jquery.min.js"></script>

<script>
var hashTimeout;

function updhash() {
    if (hashTimeout) clearTimeout(hashTimeout);
    hashTimeout = setTimeout(function() {
        hashTimeout = null;
        var k = $('#krpanoSWFObject')[0];
        window.location.hash="#"+k.get('xml.scene').substr(0, 8)+"="+k.get('view.hlookat')+"="+k.get('view.vlookat')+"="+k.get('view.fov');
    }, 100);    
}

$(document).ready(function(){
    var swf = createswf("tour.swf");
    var options = window.location.hash.substr(1).split('=');
    if (options.length == 4) {
        swf.addVariable("xml.scene", options[0]);
        swf.addVariable("view.hlookat", options[1]);
        swf.addVariable("view.vlookat", options[2]);
        swf.addVariable("view.fov", options[3]);
    }
    else {
        swf.addVariable("xml.scene", "scene_02");
    }
    
    swf.embed("pano"); 
});

</script>

Пояснения:

k.get('xml.scene')

Возвращает текст (типа scene_02)

+k.get('view.hlookat')

Возвращает число

Детектирование обновления урла происходит. Выдает как надо, вида:

http://192.168.0.11:8090/#scene_03=-5.533604381082802=-11.715297049231186=109.66909981523736
(конкретная сцена, координаты и угол обзора)

Кажется мне, что проблема вот тут:

.substr

Если имена сцен делать исключительно цифровыми, то работает. При вводе (копипастой или руками) подобной хитрой ссылки - переходит именно на закодированный в ней ракурс. Пример: http://ekburg.artstudio-3d.ru/#11=-13.772537447920188=17.211326795589777=0.95...

Если добавить текст, то затык, при переходе по такому урлу - ничего не происходит. Грузится дефолтный вид и все.

Перемещено fallout4all из talks


Кажется мне

Когда кажется креститься надо. Отладочную печать то хоть пробовал? :)

Да и собственно, вопрос то в чём? Что должно происходить, когда ты хэш меняешь?

Deleted
()
Последнее исправление: Mystra_x64 (всего исправлений: 1)

а если дважды подряд ввести разные цифры то работает?

добавь console.log(options) перед if`ом дабы посмотреть что будет мапиться в переменную swf.

а что делает/должна делать функция updhash? здесь нет ее вызова

ZuBB ★★★★★
()
Ответ на: комментарий от ZuBB

При каждой смене ракурса панорамы поновой опрашивать плеер (требовать с него xml.scene, view.hlookat, view.vlookat, view.fov)

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

dk-
() автор топика
Ответ на: комментарий от dk-

Вызов функции висит в другом месте.

<events
onviewchange=«js(updhash())»
/>

dk-
() автор топика
Ответ на: комментарий от Deleted

ReferenceError: createswf is not defined

И все.
И, кстати, это гон. Если бы оно не было объявлено\использовано, то и панорамы бы не было.

dk-
() автор топика
Ответ на: комментарий от dk-

Консоль не врёт, насколько мне известно %)

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.