【发布时间】:2019-11-06 19:04:04
【问题描述】:
我正在 Adobe Animate 中创建一个程序;其中一项功能是将 OSC 消息发送到 DMX 照明程序以改变房间内的照明。
标准更改按预期工作,但我遇到了“褪色”问题。我需要连续发送一系列 OSC 消息。
我现在拥有的是 Adobe Animate 通过一个独立的函数创建一系列计时器。我觉得我需要的是延迟功能,但我知道这在 AS3 中是不可能的。
function fadeFixtureData(fixture:int, rgbStart:Array, rgbEnd:Array, intervals:int):void
{
if (rgbStart.length != rgbEnd.length)
{
return void;
}
var rgbCalculated:Array = new Array();
for (var i = 0; i <= intervals; i++)
{
for (var j = 0; j < rgbStart.length; j++)
{
rgbCalculated[j] = ((((rgbEnd[j] - rgbStart[j])/intervals) * (i)) + rgbStart[j]);
}
delayedFunctionCall((i * 33), function(e:Event) {sendFixtureData(fixture,rgbCalculated);});
trace(i * 33);
trace(rgbCalculated);
}
}
function delayedFunctionCall(delay:int, func:Function) {
var timer:Timer = new Timer(delay, 1);
timer.addEventListener(TimerEvent.TIMER, func);
timer.start();
}
该程序似乎正确地跟踪了所有内容,但结果是所有消息都同时发送。只有最后一条消息被转发到照明程序。
【问题讨论】:
-
您不能创建计划依赖于 for 循环计数器的匿名动态函数。抱歉,这不是 Javascript 允许的。
标签: actionscript-3 actionscript air