Render.ru

Изменение масштаба модели спиннером

Почемучкин

Активный участник
Рейтинг
7
#1
Здравствуйте, Знатоки!

Помогите, пожалуйста, разобраться с работой спиннеров.

Я сделал спиннер для изменения масштаба модели:
Код:
rollout ImportRollout "Model Import"
(
    spinner SpnModelScale "Model scale: " range:[0.01,100,g_modelScale] type:#float scale:0.01 fieldwidth:60 align:#left
    
    on SpnModelScale changed val do g_modelScale = val
)
По умолчанию значение g_modelScale = 1.0.
При изменении значения спиннера с помощью перемещения зажатой ЛКМ, оно изменяется с шагом 0,02 (хотя scale:0.01).
При изменении значения спиннера с помощью нажатия ЛКМ на стрелку вверх\вниз, оно изменяется с шагом 1.0 (хотя scale:0.01).
При попытке ручного ввода значения в поле спиннера, оно не изменяется (остается текущее значение спиннера).

Безуспешно пытался использовать эвент для изменения значения спиннера при ручном вводе значения в поле спиннера:
Код:
rollout ImportRollout "Model Import"
(
    spinner SpnModelScale "Model scale: " range:[0.01,100,g_modelScale] type:#float scale:0.01 fieldwidth:60 align:#left

    on SpnModelScale changed val do g_modelScale = val
    on SpnModelScale entered do g_modelScale = SpnModelScale.value
)
Подскажите, пожалуйста, как сделать, чтобы:
1) значение спиннера изменялось с шагом 0.01 как при изменении значения спиннера с помощью перемещения зажатой ЛКМ, так и при изменении значения спиннера с помощью нажатия ЛКМ на стрелку вверх\вниз
2) значение спиннера изменялось при ручном вводе и нажатии Enter

Спасибо.

PS: Я так и не понял, как использовать дополнительные аргументы в этом эвенте:
Код:
on <spinner> entered [<inSpin_arg>] [<inCancel_arg>] do <expr>
 

Владислав Бодюл

Активный участник
Рейтинг
15
#2
Проверьте настройки макса на вкладке General в группе Spinners. По дефолту выглядит так:



Если включена привязка, то отключите. При включённой привязке у меня такое-же поведение только при одиночном клике по стрелке значение также меняется на 1, а в остальных случаях меняет нормально с шагом 0.01.

inSpin_arg - вернёт true если значение было изменено с помощью мыши.
inCancel_arg - вернёт true если во время зажатой ЛКМ нажали ПКМ.
 

Почемучкин

Активный участник
Рейтинг
7
#3
Спасибо. Стоял флажок на Use Snap, убрал его.
Теперь при изменении значения спиннера с помощью нажатия ЛКМ на стрелку вверх\вниз,
оно изменяется с шагом 0.01 (как и указано в scale:0.01).

Однако, остальные проблемы так и остались:
1) При изменении значения спиннера с помощью перемещения зажатой ЛКМ,
оно все также изменяется с шагом 0,02 (хотя scale:0.01).
2) При попытке ручного ввода значения в поле спиннера, оно не изменяется (остается текущее значение спиннера).

inSpin_arg - вернёт true если значение было изменено с помощью мыши.
inCancel_arg - вернёт true если во время зажатой ЛКМ нажали ПКМ.
Спасибо, но это я понял из хелпа по макскрипту.
Я не понял только КАК и КОГДА применять эти аргументы.
В хелпе по максскрипту нет ни одного примера их применения.
Мне бы пример поглядеть, где их активно используют.
 
Сверху