理论教育 Switch操作技巧,提升实施效率!

Switch操作技巧,提升实施效率!

时间:2023-11-24 理论教育 版权反馈
【摘要】:Switch 本身是一个节点,它能够包含多个子节点,其功能主要在于控制子节点的渲染显示。图6.18.1Switch 图层结构Switch 节点可以包含多个子节点,每个子节点可以表示出三维对象不同的状态,如图6.18.1所示的完好房子和被破坏的房子两种状态。图6.18.2Switch 类继承图vsSwitch 类视图如图6.18.2所示,开发者可查看系统的自带文档,详细了解其所有功能。否则,可能依据Switch的名称不能查找到该Switch。在farmhouse.flt 文件中,Switch命名为damage。

Switch操作技巧,提升实施效率!

Switch 本身是一个节点,它能够包含多个子节点,其功能主要在于控制子节点的渲染显示。如图6.18.1所示,图中的房子来自系统自带的farmhouse.flt 文件,该文件在creator 中的层次结构明确显示,名字为“damage”的Switch 节点包含两个子节点,一个是g1,一个是house_1。左图中的g1 表示一个完好的房子,其掩码索引为0;右图中的house_1 表示一个被损坏了的房子,其掩码索引为1。

图6.18.1 Switch 图层结构

Switch 节点可以包含多个子节点,每个子节点可以表示出三维对象不同的状态,如图6.18.1所示的完好房子和被破坏的房子两种状态。实际上,一个Switch 节点可以包含多个子节点,其中0 是第一个子节点的索引,1 是第二个子节点的索引,以此类推。但是,在任何一个特定的时刻只有一个掩码索引是激活的,表示场景中只渲染显示该Switch 节点中掩码索引为激活状态的子节点,而其他节点则不渲染显示。这样,利用Switch 节点可以很方便地显示同一个物体在不同情境下的形状。

图6.18.2 Switch 类继承图

vsSwitch 类视图如图6.18.2所示,开发者可查看系统的自带文档,详细了解其所有功能。本节首先把farmhouse 加载进场景,然后利用代码激活掩码索引,显示房子的不同状态,其效果如图6.18.3所示,左图为完好的房子,右图为被损坏了的房子。

图6.18.3 Switch 效果图

对于Switch的编程使用,需要注意的是,对于Switch的命名,不能采用默认名称,即sw1等名称。否则,可能依据Switch的名称不能查找到该Switch。在farmhouse.flt 文件中,Switch命名为damage。另外,必须引入Switch 类的头文件为: #include <vsSwitch.h>。

为了应用开发方便,需要定义一个vsSwitch 静态变量

static vsSwitch* HouseSwitch; //房子Switch 指针

定义完成后,应该记得要初始化

vsSwitch * PublicMember::HouseSwitch =NULL;

操作Switch 之前,必须首先获得Switch 指针。而应用中的Switch 在房子上,则首先应得到房子的指针:(www.daowen.com)

vpObject * house=vpObject::find("farmhouse");

house->ref();

接着获取房子上的Switch:

//获取房子Switch

PublicMember::HouseSwitch=static_cast<vsSwitch *>(house->find_named("damage"));

PublicMember::HouseSwitch->ref();

详细代码位于主线程中,具体如图6.18.4所示。

图6.18.4 包含Switch 操作的主线程

对于Switch的编程使用,主要通过设置其活动掩码索引来完成,如图6.18.3所示,左图是按钮“完好”执行的效果,其代码为:

PublicMember::HouseSwitch->setActiveMask(0);//设置活动掩码索引为0

右图是按钮“破坏”执行的效果,其代码为:

PublicMember::HouseSwitch->setActiveMask(1); //设置活动掩码索引为1

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈