如何动态创建克隆对象以及克隆对象的简单用法
很多时候,我们需要动态的创建克隆对象,例如菜单形式的Button,九宫格预览图以及地图上各种不同形态的建筑。 那么如何动态创建一组克隆对象呢? 由于对象(Actor)实际上是一组包含各种不同类型元素的集合,因此如果我们要创建对象的话,就必须先要创建一个对象(Actor)型的指针来存储实例化创建出来的对象: Actor *testClone; testClone = CreateActor("actTestClone", "icon", "(none)", "(none)", -170, - 70, true); 当然,这句话也可以写成最普通的: CreateActor("actTestClone", "icon", "(none)", "(none)", -170, - 70, true); 让创建对象指针之类复杂而无聊的事情交给MC帮你完成。 接下来的事情就是关键了,有了对象指针以后,我们可以创建一个数组用来存放好多个同样的对象。 int i; Actor *testClone[5]; for(i = 0; i < 5; i ++) //这里要先声明再赋值,不能直接写成int i=0;i < 5......,否则会出错 { testClone[ i ] = CreateActor("actTestClone", "icon", "(none)", "(none)", -170, i * 40 - 70, true); } 那么每个对象的名字是什么样的呢?我们可以通过sprintf输出看看: sprintf(testClone -> text, "%s", testClone -> clonename);//初学者注意,这里的testClone -> text不能写成testClone.text,左边如果是指针对象则写“->”,如果是普通对象则写“.” 对象名为actTestClone.1,actTestClone.2…… 然后就可以通过这些对象名来访问不同的克隆对象了。 那么actTestClone.0到哪里去了呢?实际上就是那个用来被克隆的对象“actTestClone”,这里被自动定义为了actTestClone.0==actTestClone 。 附件是例程,可以参考。 |