1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Создание интерфейса скриптом (функцией) - КАК???

Тема в разделе "MAXScript", создана пользователем -, 13 июн 2005.

Модераторы: Savin Denis
  1. Guest

    Помогите, плиз! Есть много одинаковых кнопок (елемент button с одинаковыми параметрами), которые отличаются только именем и текстом на самих кнопках и прописывать их все в роллоуте как-то не красиво и муторно. Да и действия on <button_name> pressed do для этих кнопок отличаются только лишь одним параметром, а описывать приходится это для каждой кнопки. Получается слишком много однообразного и нецелессообразного текста в коде скрипта. Может есть какой-нибудь способ создания некоего шаблона, который бы использовался функцией таким образом, чтобы при запуске скрипта просто подставлялись только отличающиеся от других значения (<rollout>.controls=имя_кнопки, <rollout>.controls.text etc.), а все остальные одинаковые параметры (width, height,across,enabled etc.) брались бы из этого шаблона? Не знаю, достаточно ли толково объяснил проблему, но надеюсь на то, что спецы скрипта меня поймут и помогут дельным советом!
    Заранее благодарен за помощь.
     
  2. Guest

    Огромное тебе спасибо, Денис за помощь! Я всё таки решил эту проблему, но несколько другим способом - использовал команду execute :)
     
  3. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    Вопревых никто не запрещает тебе подставлять в качестве параметров элементы массива
    Либо пользуйся функциями для динамического создания - RolloutCreator Functions
     
  4. Guest

    Спасибо, Денис. Большая просьба покажи, плиз, на маленьком примере как подставить параметры из массива в элементы интерфейса. О бщем-то я представляю знаю как, но у меня не получается это проделать с элементами интерфейса. Как в явном виде указать в функции конкретный элемент? Пробовал через (rollout).controls, но для этого необходимо, чтобы кнопки были уже прописаны, а ведь они должны создаваться вот этой самой функцией... Вообщем, я что-то не догоняю, просвети меня, пожалуйста, или скинькакой-нибудь примерчик.

    Вот более конкретный пример. Нужно чтобы при запуске утилиты создавался ряд кнопок с разными названиями и именами, причём в два ряда (across:2). Название элемента интерфейса и текст на кнопке могут быть одинаковыми и берутся из массива, который в свою очередь создаётся из строк считываемого текстового файла (как это сделать - вопросов нет).

    Должно получиться что-то подобное:
    ------------------------------------
    utility myUtil "TestButton"
    (

    button Red "Red" across:2 width:64 height:18 align:left
    button Blue "Blue" width:64 height:18 align:right
    button Yellow "Yellow" across:2 width:64 height:18 align:left
    button White "White" width:64 height:18 align:right
    button Black "Black" across:2 width:64 height:18 align:left
    button Gray "Gray" width:64 height:18 align:right

    )
    ну и так далее... Всего около 20-и кнопок.

    --------------------------------

    А с RolloutCreator-ом я совсем запутался, попытался применить его в utility так всё время получаю ошибку "Reguired class or function, got:undefined"...:(
     
  5. Savin Denis vip

    Savin Denis Moderator Команда форума

    С нами с:
    05.05.2005
    Сообщения:
    1.633
    Симпатии:
    0
    Баллы:
    210
    utility myUtil "TestButton"
    (
    local bName = #("button1",
    "button2",
    "button3",
    "button4",
    "button5",
    "button6" )

    spinner ind "Index ID" width:68 height:16 range:[0,2,0] type:#integer
    button bb1 "bb1" across:2 width:64 height:18 align:#left
    button bb2 "bb2" width:64 height:18 align:#right

    fn setBtn =
    (
    bb1.text = bName[1 + ind.value]
    bb2.text = bName[2 + ind.value]
    )

    on myUtil open do setBtn()
    on ind changed val do setBtn()
    )
     
Модераторы: Savin Denis

Поделиться этой страницей