教你如何在Slate里面如何使用ActiveTimer

[复制链接]
查看4085 | 回复8 | 2016-12-9 11:32:51 | 显示全部楼层 |阅读模式
.h文件

UCLASS()
class Test_API UMyUMG : public UUSerWidget
{
    GENERATED_BODY()
public:

      /*请求使用ActiveTimer,相当于注册了一个定时器的函数*/
      void RequestUseActiveTimer();

private:

      /*开始处理ActiveTimer,调用注册的定时器函数  */
     EActiveTimerReturnType HandleActiveTimer(double InCurrentTime, float InDeltaTime);

   /*取消ActiveTimer,取消注册的定时器函数*/
    void CancelActiveTimer();

  
     /** The handle to the active timer,定时器函数的指针 */
    TWeakPtr<FActiveTimerHandle> ActiveTimerHandle;

  /*测试用的一个计数变量,等于50的时候,停止执行处理函数*/
   int32 Count;
};


.CPP文件

void UMyUMG::RequestUseActiveTimer()
{
     if (!ActiveTimerHandle.IsValid())
    {
        /*获取UMG里的一个SWidget*/
          TSharedPtr<SWidget> ThisPtr = GetCachedWidget();

         /*给这个SWidget注册一个定时器执行函数,参数0.f表示多久后执行注册的函数*/
          ActiveTimerHandle = ThisPtr->RegisterActiveTimer(0.f, FWidgetActiveTimerDelegate::CreateUObject(this, &UMyUMG::HandleActiveTimer));
   }
}



void UMyUMG::CancelActiveTimer()
{
      if (ActiveTimerHandle.IsValid())
     {
             /*获取UMG里的一个SWidget*/
            TSharedPtr<SWidget> ThisPtr = GetCachedWidget();

           /*把这个SWidget注册的函数给取消注册了*/
           ThisPtr->UnRegisterActiveTimer(ActiveTimerHandle.Pin().ToSharedRef());
     }
}



/*执行期间的逻辑都在这里执行*/
EActiveTimerReturnType UMyUMG::HandleActiveTimer(double InCurrentTime, float InDeltaTime)
{
       /*如果Count等于50就停止计数执行了*/

       if ( 50 ==Count )
       {


                return EActiveTimerReturnType::Stop;
       }
        /*如果Count不等于50就继续计数和执行该函数*/
        ++ Count;
       return EActiveTimerReturnType::Continue;
}


zz_nirvana | 2016-12-9 11:48:44 | 显示全部楼层
cool~~~~~~~~~~~
回复

使用道具 举报

bluemain | 2016-12-9 11:57:44 | 显示全部楼层
棒棒棒!!!
回复

使用道具 举报

zjmlife | 2016-12-9 22:09:33 | 显示全部楼层
cool~~~~~~~~~~~
回复

使用道具 举报

虚幻小霸王 | 2016-12-10 14:06:58 | 显示全部楼层
我去这个太好了啊
回复 支持 反对

使用道具 举报

yuemingxishan | 2016-12-10 21:24:50 | 显示全部楼层
看到C++的我,瞬间吓尿了
回复 支持 反对

使用道具 举报

mjlantcool | 2016-12-17 14:21:46 | 显示全部楼层
虽然自信对蓝图还有点心得,但是C++完全看不懂了。。。。
每次灵感爆发都是半夜3:00,不给睡觉的节奏!
回复 支持 反对

使用道具 举报

小叶 | 2016-12-23 09:06:06 | 显示全部楼层
C++完全看不懂
回复 支持 反对

使用道具 举报

ajhonson4 | 2016-12-30 21:31:12 | 显示全部楼层

感谢楼主分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1

主题

14

回帖

2972

积分

中阶编码师

积分
2972