Совместите навигацию внешнего крикла с выбранной навигацией внутреннего круга - PullRequest
0 голосов
/ 28 июня 2019

Это мой код для демонстрационных целей https://jsbin.com/mugosec/65/edit?js,output

Это то, что я пытаюсь достичь: если я нажму на внутренний круг, я хочу, чтобы видимые навигационные элементы внешнего круга центрировались напункт навигации внутреннего круга.Пока я могу успешно и последовательно запускать навигационные элементы внешнего круга в начале элемента навигации внутреннего круга.Я использую baseAngle navitem внутреннего круга + видимые градусы navItems внешнего круга, чтобы правильно расположить мой внешний круг.

let wheelSliceAngle = 360 / this.wheel.navItemCount;
let text_labels = (mod_options.length) + 1;
let subWheelSliceAngle = 360 / (sub_wheel_labels.length);
let labels_length = sub_wheel_labels.length
let non_text_labels = non_text_labels_length
let x  = (subWheelSliceAngle * non_text_labels);
let y = (subWheelSliceAngle * text_labels);
for (let portion of this.wheel.navItems) {
    console.log('portion baseAngle',portion)
    let sub_wheel_var = y
    let wheel_var = portion.baseAngle
    let angle = wheel_var + sub_wheel_var
    portion.sub_wheel = initSubWheel(this.wheel, angle);
    portion.sub_wheel.hide()
    let wheel_nav = portion;
    let _that = this;
    let old_refresh = wheel_nav.refreshNavItem;
    //     console.log(portion);
    wheel_nav.refreshNavItem = function() {
        old_refresh.apply(this, arguments);
    };
    wheel_nav.navigateFunction = function() {
        resetMarkers()
        this.wheelnav.hideSubMenus();
        full_portion_sub_wheel.hide()
        this.sub_wheel.show();
        setTimeout(() => {
            this.sub_wheel.navItems.map(x => x.selected = false);
            this.sub_wheel.navItems.forEach((v, i) => { v.setSelected() })
            this.refreshNavItem();
        }, 0)
    }
}

Если я настрою переменные sub_wheel_var и wheel_var из:

let y = (subWheelSliceAngle * text_labels);
let sub_wheel_var = y
let wheel_var = portion.baseAngle
let angle = wheel_var + sub_wheel_var

to:

let y = (subWheelSliceAngle * text_labels);
let sub_wheel_var = y
let wheel_var = portion.navAngle
let angle = wheel_var + sub_wheel_var

У меня может быть начало OuterCircleNav в середине ICNI.

Что я действительно хотел бы сделать, так это чтобы середина OCN соответствовала середине ICNI.

Делая это:

let y = (subWheelSliceAngle * text_labels);
let sub_wheel_var = y/2
let wheel_var = portion.navAngle
let angle = wheel_var + sub_wheel_var

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

Чтобы упростить работу с кодом, я также добавил переменные sections и extras, чтобы сделать его прощедобавить дополнительные разделы или дополнительные внешние навигационные элементы соответственно.Я обнаружил, что, если я смогу заставить что-то работать для одной комбинации разделов и дополнений, другая комбинация будет искажена.Я знаю, что ответ заключается в том, как я вычисляю y, или subWheelSliceAngle, или sub_wheel_var.

Еще раз вы можете просмотреть код здесь: https://jsbin.com/mugosec/65/edit?js,output

Iабсолютно признателен за любую помощь.

Большое спасибо.

...