|
前面说过“鼠标移动”事件触发频率太高,现在找到了一个低频使用这个事件的方法,代码如下
//globle
point gv_p;
trigger gv_cursormoveTrigger;
//Action
bool Cursormove_Func (bool testConds, bool runActions)
{
// Actions
if (!runActions)
{
return true;
}
TriggerEnable(TriggerGetCurrent(), false);
gv_p = Point(EventMouseMovedPosXWorld(), EventMouseMovedPosYWorld());
//显示坐标
UIDisplayMessage(PlayerGroupAll(), c_messageAreaSubtitle, (FixedToText(PointGetX(gv_p), c_fixedPrecisionAny) + (StringExternal(",") + FixedToText(PointGetY(gv_p), c_fixedPrecisionAny))));
//-------------
return true;
}
//function
void gf_Setcursorpoint () {
if ((gv_cursormoveTrigger != null))
{
TriggerDestroy(gv_cursormoveTrigger);
}
gv_cursormoveTrigger = TriggerCreate("Cursormove_Func");
TriggerAddEventMouseMoved(gv_cursormoveTrigger, c_playerAny);
}
然后在任意一个周期性事件触发里调用这个Setcursorpoint () ,
比如在一个0.125秒的周期事件触发里调用Setcursorpoint () ,效果是每0.125秒响应一次鼠标移动事件,并获取当前鼠标坐标点赋值给gv_p,想添加其他动作的话可以写在“//显示坐标”下面,这里添加了一个显示当前鼠标的世界坐标的动作。
PS:galaxy和C几乎一样,写起来太顺手了~~要是支持指针就更好了 |
|