由用户创建的信息 AngryArcticFox
22 April 2017 16:38
Скажите, как запустить анимацию value в материале?
Поставил в материале ноду value, проанимировал ее. в NLA редакторе обозвал дорожку ChangeValue.
Код:
В браузере сообщения об ошибке:
No fcurves in action "ChangeValue"
Object "Paint" has no applied animation
Поставил в материале ноду value, проанимировал ее. в NLA редакторе обозвал дорожку ChangeValue.
Код:
exports.changeMainColorAnim = function () {
m_anim.apply(object, "ChangeValue", m_anim.SLOT_0);
m_anim.set_behavior(object, m_anim.AB_FINISH_STOP);
m_anim.play(object, function(){
m_mat.set_nodemat_rgb(object, ["paint","PaintCurrentColor"], newColorRGB[0], newColorRGB[1], newColorRGB[2]);
}, m_anim.SLOT_0);
}
В браузере сообщения об ошибке:
No fcurves in action "ChangeValue"
Object "Paint" has no applied animation
17 April 2017 04:37
И все-таки, как реализовать запуск функции на onClick? Я столкнулся с ситуацией, когда id кнопки заранее не известен. Например, есть объект которому нужно поменять цвет. Заранее палитра цветов не известна и у кнопки смены цвета не присвоен ID. Более того, не известно итоговое количество таких кнопок, зато известно, что на событие можно повесить функцию смены цвета с параметром нового:
По идее в коде должна быть функция для смены цвета:
Но т.к. функция внутри приложения, достучаться к ней не получится.
Пока я решил проблему объявив глобальную переменную ColorBuffer и передавая через нее значение цвета в b4w.
Но мне кажется этот вариант реализации может служить только заплаткой, тем более, что встает проблема отслеживания изменения значения переменной colorBuffer, сейчас оно реализовано на таймер, тогда как логичнее было бы запускать функцию на клик.
Подскажите, как правильно реализовать задачу?
<img src="button.png" onClick="ChangeColor([255,255,255])">
По идее в коде должна быть функция для смены цвета:
ChangeColor (newColor){
m_mat.set_diffuse_color(object, "Material", css_to_rgb(newColor[0], newColor[1], newColor[2]));
}
Но т.к. функция внутри приложения, достучаться к ней не получится.
Пока я решил проблему объявив глобальную переменную ColorBuffer и передавая через нее значение цвета в b4w.
ChangeColor (newColor){
ColorBuffer = newColor;
}
*****b4w********************
m_mat.set_diffuse_color(object, "Material", css_to_rgb(ColorBuffer[0], ColorBuffer[1], ColorBufferr[2]));
Но мне кажется этот вариант реализации может служить только заплаткой, тем более, что встает проблема отслеживания изменения значения переменной colorBuffer, сейчас оно реализовано на таймер, тогда как логичнее было бы запускать функцию на клик.
Подскажите, как правильно реализовать задачу?
17 January 2017 17:19
10 January 2017 08:42
09 January 2017 16:20
09 January 2017 09:02
18 December 2016 16:21
08 December 2016 02:52