主题:  关于“属性列表”的问题

counte

职务:普通成员
等级:1
金币:0.0
发贴:22
注册:2001/6/15 16:40:49
#12001/6/15 16:47:09
在电影脚本中设定如下:
on startmoive
set location=["cow":1,"hen":5]
put location
end
为何在message window 中输入put location 后,显示的不是属性列表location的值而是显示为[void]“空”呢?
而且我已经在电影脚本中输入了“put location”的命令,应该打开message window后就可以直接显示location的值了吧?为何还要输入相同命令,否则就空空如野呢?



lovem

职务:普通成员
等级:1
金币:0.0
发贴:38
注册:2001/3/25 15:13:06
#22001/6/15 18:21:21
呵呵,老哥,你的英文写错 startmoive ——> startMovie 。使用Alphabetical Lingo 按钮。



rainy_5d

职务:普通成员
等级:2
金币:1.0
发贴:225
注册:2000/10/23 19:44:16
#32001/6/15 23:50:57
属性变量似乎应该这样写:

location=[#cow:1,#hen:5]

使用符号。



lovem

职务:普通成员
等级:1
金币:0.0
发贴:38
注册:2001/3/25 15:13:06
#42001/6/16 11:51:37
用字符串也可以,但速度较慢,且对大小写敏感,最好用符号,速度快,对大小写又不敏感。



counte

职务:普通成员
等级:1
金币:0.0
发贴:22
注册:2001/6/15 16:40:49
#52001/6/16 12:37:11
此问题的dexn回复:
(注:dexn是宇风的director版主)


dexn:如果你说运行时,消息窗口也没显示,那是一种奇怪的事,要是你设置了property location,出来的值有点怪,并不是列表,而且在消息窗口用put出来的也是空。如果设置为global location那就没问题了,如果两种都不设置,那么出来的就是void了,因为值传不出来。
如果你要监测一个变量的值,可以用监测窗口,很方便的。

counte:又一次得到金鼎你的帮助,非常感谢。
一切确实如你所说,没有global location 的缘故,所以才会在watch window 中看不到locatio的植。
我还想问的是,“值传不出来,是指location本身的值只是在watch window中看不见而已是吧??但在电影中,它一定是如我初始设定的那样,已经存在了,对吗?

dexn:不太正确的,如果没有定义或用property定义,属于局部变量,global是全局变量,对于局部变量,只有在所属范围及有效时间内有效,而没有定义的话,生命最短,范围最小,只有在该程序一次运行有效,一旦运行结束,就没有了,同一个精灵不同的程序段可以存在相同的变量名而不同的值。而property则大、长得多,只有一旦赋值,而在整个精灵都存在,生命值到离开该精灵时丢失,所以同一个变量,在不同的精灵可以有不同的值也是可以的(局部变量都可以)。global定义的在整部电影都存在,甚至调用其他电影后,在被调用的电影内依然可以被调用和设置,他是唯一的。根据以上分析,不难发现,只有global是唯一的,也就是说在消息窗口唯一可以被确认,也才可被显示。TextText