在播放器中,我想允许用户手动拖动选择的边界(开始时间和结束时间)。 我可以使用 dragStart 消息来捕获用户是否开始拖动,但我无法获取元素的最终位置,因为我不知道用户何时停止拖动。
我尝试过这样的事情:
on dragStart
repeat until the mouse is up
/*unfortunately, this part freeze the player*/
end repeat
put the timeScale of me into sr
put the endTime of me into endT
put endT/sr
end dragStart
但是播放器被wait命令冻结了。所以用户无法移动边界,我无法获得“endTime”的最终位置。
如何等到鼠标开启,但没有冻结播放器?
答案 0 :(得分:1)
有许多方法可以摆脱阻塞循环,等待#34;使用消息"或者在处理程序中及时发送消息,该处理程序在间隔期间释放引擎。但最基本的可能就是这样,如果你想尝试一下。在新卡上创建一个按钮和一个字段。在按钮脚本中:
on dragStart
put the loc of me into line 1 of fld 1
end dragStart
on mouseMove
if the mouseLoc is within the rect of me and the mouse is down then
set the loc of me to the mouseLoc
end if
end mouseMove
on mouseup
put the loc of me into line 2 of fld 1
end mouse up
现在这已经过头了,但至少展示了如何使用小型处理程序来处理小问题。
答案 1 :(得分:0)
这最终可以通过一个非常简单的代码实现(通常使用livecode):
on selectionchanged
put the timeScale of me into sr
put the endTime of me into endT
put endT/sr into fld 1
end selectionchanged