代理:::插科打诨

  代理是unrealscript中非常重要的课题,关于UI关于Mobile交互都不可或缺,对于CloudPC和IAP部分如果欠缺了这部分的知识常常会与崩溃结缘。

  凡是以Actor继承的类都会进行垃圾处理,而Object则不会,恰恰UI部分是以Object继承来的。这意味着,不清空就崩溃!

  代理是绑定在object上的函数,他们的主要作用是提供回调,例如在UI系统中通知事件。

  1.声明一个代理

  Class Button extends Window;

  delegate OnClick(Button B,int MouseX,int MouseY);  //看看这里完全是为了实现UI而做的类。

  2.调用一个代理

class Button extends Window;

  var int MouseDownX,MouseDownY;

  delegate OnClick(Button B,int MouseX,int MouseY);

  function MouseDown(int MouseX,int MouseY)

  {

    MouseDownX=MouseX;

    MouseDownY=MouseY;
  }

  function MouseUp(int MouseX,int MouseY)

  {

    if(MouseX==MouseDownX&&MouseY==MouseDownY)

           OnClick(self,MouseX,MouseY);
  }

  3.最重要的,将代理指向一个函数。否则代理就没有实现

  通常要实现一个代理,要将其指向一个函数,而这个函数一般不在自己的类中,而这个类中一般要声明一个和代理参数,返回类型一样的函数。

  重新定义一个类

  class FuckButton extends Window;

  var Button OKButton;

  function FuckClick(Button B,int MouseX,int MouseY)

  {

    if(B==OkButton)

    SaveDetails();

    CloseWindow();
  }

  event init()

  {

     OkButton=Create(class'Button',40,100,53,20);

      OkButton.OnClick=FuckClick;
  }

  同样可以在defaultproperties中分配

  OKButton.OnClick=MyClick;

原文地址:https://www.cnblogs.com/NEOCSL/p/2941949.html