|
主题: 请问如何从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
多谢斑竹!!
那如果父脚本和行为脚本含有同名称的属性,那取得值应该属于哪一个呢?如果含有同样名称的方法,那会执行哪个呢?我自己先试试! :)
|