主题:  请问如何从sprite取得与之相关联的对象呢?

win_5d

职务:普通成员
等级:1
金币:0.0
发贴:49
#12003/9/15 23:26:03
比如我的父脚本中有一个addlink方法,在运行时我取得sprite,该sprite是通过new父脚本得到的对象相关联的,我直接用sprite.addlink不能运行,那应该先取得对象,那么用什么方法可以通过sprite来取得关联在它身上的对象呢?

谢谢!



D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
#22003/9/16 1:30:37
没看清楚你是什么意思,你可以看看help的sendsprite
产生子对象的方法是
childobj=new(script"person",cs1,cs2,cs3...)
cs这里代表参数



win_5d

职务:普通成员
等级:1
金币:0.0
发贴:49
#32003/9/16 10:50:15
首先谢谢!

我的意思是这样的:
on init me
sprite(cellspritenum).member=cellmembername
sprite(cellspritenum).loc=cellloc
end
我创建一个子对象之后,在初始化(调用init方法)的时候将某个精灵赋予演员角色,并使它显示在舞台的某个坐标位置。
我是想问,如何通过该sprite取得那个子对象呢?因为我想使用子对象中的方法:)难道子对象和这个sprite就没有关系了吗?

不知道我陈述清楚没有,再次麻烦,谢谢!



HolyKnight

职务:普通成员
等级:1
金币:1.0
发贴:175
#42003/9/16 14:11:25
你的意思是不是在其他精灵中如何使用init吗?!!



win_5d

职务:普通成员
等级:1
金币:0.0
发贴:49
#52003/9/16 15:04:18
不只是使用init方法,而是通过sprite使用子对象的所有方法,就好像sprite就是一个子对象的引用一样。

我在任何地方可以使用父脚本创建一个子对象,在创建子对象的时候我赋予一个精灵角色,如上面的init方法。我使用scriptInstanceList方法查看的时候,我只看到该精灵的行为脚本,而没有父脚本中编写的任何方法。

在director自带的parent script.dir这个例子中,它是将生成的子对象放在一个list当中,然后利用sprite的spritenum来找到相对应的子对象。这个例子比较简单,最多只生成四个对象,然后放到一个子对象list中,spritenum是从6到9,生成新的对象的spritenum都是逐渐加1,因此每次通过sprite找到与之对应的对象都是the clikon-5即可。

那如果我的sprite和子对象没有这样的线性关系,比如说spritenum-5就可以从子对象列表中找到对应的子对象,如果不是这样的简单线性关系该怎么办呢?

不知道在director中好像没有映射表这样的数据结构,使其sprite和子对象一一对应起来,或者提供什么散列函数?

简单来说就是我想通过sprite来找到子对象,谢谢!! :)



D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
#62003/9/16 15:22:31
父脚本---objecttemp
--------------------------------------------------------------------------
property pmember,psprite,ploc
on new me,mem,coordinate
pmember=mem
ploc=coordinate
return me
end
on coordinatemade me,pre
psprite=sprite(pre)
psprite.puppet=true
psprite.member=pmember
psprite.loc=ploc
end
------------------------------------------------------

on mouseup me
temploc=the mouseloc+10
childobject=new(script"objecttemp",3,temploc)
coordinatemade(childobject,1)
end


是不是这样(刚才写急了,有个小错误,

编辑历史:[这消息被54zq编辑过(编辑时间2003-09-16 15:29:16)]


win_5d

职务:普通成员
等级:1
金币:0.0
发贴:49
#72003/9/16 15:59:41
非常感谢,这个我看明白了!:)

有一个问题就是在你的例子当中所生成的childobject这个子对象别的地方如果想调用(引用)的话该怎么办呢?我总不能再new一次吧,那就是另外一个对象了:)

比如你的父脚本还有一个方法:
on quitmovie me
quit
end

如你的例子中通过父脚本生成的一个sprite(1),当在这个精灵上mouseup的时候,我怎么去调用quitmovie这个方法呢?问题是我没有方法得到那个childobject对象,我所关心的是如何定位这个childobjcet对象,而不是如何去产生它,谢谢!

谢谢斑竹的耐心指导 ;)



D计划-混沌

职务:管理员
等级:6
金币:15.2
发贴:3528
#82003/9/16 19:59:26
父脚本---objecttemp
--------------------------------------------------------------------------
property pmember,psprite,ploc
on new me,mem,coordinate
pmember=mem
ploc=coordinate
return me
end
on coordinatemade me,pre
psprite=sprite(pre)
psprite.puppet=true
psprite.member=pmember
psprite.loc=ploc
end
on mouseup me
alert "ok"
end
------------------------------------------------------
on beginsprite me
temploc=the mouseloc+10
childobject=new(script"objecttemp",3,temploc)
coordinatemade(childobject,1)
sprite(1).scriptInstanceList.add(childobject)
end



win_5d

职务:普通成员
等级:1
金币:0.0
发贴:49
#92003/9/16 20:38:39
多谢斑竹!!

那如果父脚本和行为脚本含有同名称的属性,那取得值应该属于哪一个呢?如果含有同样名称的方法,那会执行哪个呢?我自己先试试! :)