如何动态创建克隆对象以及克隆对象的简单用法

   很多时候,我们需要动态的创建克隆对象,例如菜单形式的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 。

附件是例程,可以参考。
posted @ 2013-05-20 17:46  zj_king  阅读(244)  评论(0编辑  收藏  举报