Мел Баттон: Цвет ScriptJob?

Начиная с jQuery 1.7, вы должны использовать jQuery.fn.on :

$(staticAncestors).on(eventName, dynamicChild, function() {});

До этого рекомендуется использовать live() :

$(selector).live( eventName, function(){} );

Однако live() устарел в 1.7 в пользу on() и полностью удален в 1.9. Подпись live():

$(selector).live( eventName, function(){} );

... может быть заменена следующей on() сигнатурой:

$(document).on( eventName, selector, function(){} );

Например, если ваша страница динамически создавала элементы с именем класса dosomething, вы привязывали бы событие к родительскому, который уже существует (здесь есть нуль проблемы, вам нужно что-то, что существует для привязки, не привязка к динамическому контенту), это может быть (и самый простой вариант) - document. Хотя иметь в виду document, возможно, не самый эффективный вариант .

$(document).on('mouseover mouseout', '.dosomething', function(){
    // what you want to happen when mouseover and mouseout 
    // occurs on elements that match '.dosomething'
});

Любой родитель, который существует в момент привязки события, прекрасен. Например,

$('.buttons').on('click', 'button', function(){
    // do something here
});

применимо к

-1
задан Green Cell 28 March 2019 в 01:44
поделиться

1 ответ

Этот ответ полностью на Python, поэтому вы можете преобразовать его в MEL, если вы настаиваете на его использовании.

Задания сценария могут запускаться различными способами при возникновении события. Это могут быть такие вещи, как, когда время изменилось, пользователь отменяет действие, или в вашем случае, когда выбор изменился.

Вы можете получить полный список названий этих событий, выполнив следующее:

cmds.scriptJob(listEvents=True)

То, что вы ищете, это "SelectionChanged".

Чтобы это сработало, вам нужно определить функцию, которая будет вызываться при запуске задания скрипта (при изменении выбора). Вот простой пример этого.

import maya.cmds as cmds


# Create a function that will be called from the script job whenever there's a change to the selection.
def func():
    print "The selection has changed!"

# Create a new script job and save the result to a variable. The result is the script job's id number.
script_job_id = cmds.scriptJob(event=["SelectionChanged", func])

# When it's no longer needed, pass the script job's id with the kill parameter to remove it.
#cmds.scriptJob(kill=script_job_id)

Таким образом, в вашем случае, когда вы запускаете функцию, она может проверить, выбран ли объект, и в зависимости от того, есть он или нет, вы можете заставить его закрасить кнопку.

Когда ваш инструмент закрывается, вы можете удалить задание сценария, используя его параметр kill, чтобы он больше не работал, когда он вам не нужен.

И в качестве примечания, что вы написали Хагги, если у вас нет веских причин, я бы просто придерживался Python вместо MEL. Синтаксис намного проще, он имеет безумное количество библиотек, и он просто более силен для выполнения простых вещей, таких как манипулирование строками. Плюс Python используется во многих других программах, MEL - нет. Это правда, что есть некоторые команды, которые могут быть выполнены только в MEL, но вы можете легко оценить строку MEL с помощью Python.

0
ответ дан Green Cell 28 March 2019 в 01:44
поделиться