演职人员名单MobileMenuList

Posted on 2013-06-08 16:01  neocsl  阅读(484)  评论(0编辑  收藏  举报

  当你的游戏打完,你也会将你的演职人员名单像电影开发者一样滚动显示。  

  下面就是滚动技术的实现,我会讲的非常混乱。

  MobileMenuList和MobileMenuListItem使我们所选择的滚动列表,他的特性是可以让玩家交互查看。

  我们不仅仅设置滚动的速度,同时还定义自己的列表能否被玩家交互控制。

  MobileMenuObject类中,非常重要的选项是处理交互和渲染。

  渲染在function renderObject(Canvas Canvas,float DeltaTime)中进行。

  MobileMenuList中Drag.bIsDragging和Movement.bIsMoving是两个重要的属性,他们分别定义List列表当前是否有选项ListItem被拖动和移动。

  其中var SelectedMenuItem SelectedItem;  //SelectedMenuItem是其定义的结构,分别有当前被选中物体的Index,Offset, bEndOfList。

  CalculatedSelectedItem是用于处理当前选中的List位置信息的,包括滚动和位置情况,对了,以及是否结束bEndOfList。

  这样在知道了位置信息之后我们才能渲染。

  function RenderObject(Canvas Canvas,float DeltaTime)

  {

      if(!Drag.bIsDragging&&!Movement.bIsMoving)

      {

           CalculatedSelectedItem(SelectedItem,DeltaTime*ScrollPixelPerSec,false);     //我们让其在每Tick中都进行滚动
      }

      Super.RenderObject(Canvas,DeltaTime);
  }

   //既然我们让显示人员名单可控,我们就得处理触碰事件。

  event bool OnTouch(EZoneTouchEvent EventType,float TouchX,float TouchY,MobileMenuObject ObjectOver,float DeltaTime)

  {

//这才是能否接受Touch的前提条件

      if(bAllowInterrupt)

      {

        return Super.OnTouch(EventType,TouchX,TouchY,ObjectOver,DeltaTime);
      }

      return true;
  }

  
/** When user taps on an options, should we scroll to it?  Typically, when there is no obvious 'selected', you don't want to */
var bool bTapToScrollToItem;

  认真的去读MobileMenuList,Epic为我们做了很多有用的接口。下一节MobileMenuListItem