8.电影剪辑变量的生存期 此前,我们说过变量的作用域反映了两个问题,(1)变量能存在多长时间?(2)在代码中的哪些地方能够设置并取回变量的值?
对于电影剪辑变量,我们已经知道了有关回答第二个问题的要素。但是我们跳过了对第一个问题的回答。现在,让我们回过头来面对它,并提出最后一个有关代码中变量的设想。
7.1设想五 假设我们创建有三个关键帧的新电影。在帧一上,我们放置一个电影剪辑实例,ball。在ball的时间轴上,我们创建一个变量,radius。然后我们右键点击帧二,在弹出菜单中选择插入关键帧,以使帧二上的内容和帧一中的完全一样。主时间轴上的帧三是空白关键帧(ball实例不会在那里出现)。
在主时间轴上的帧二,我们可以使用下列代码查明变量radius的值: trace (ball.radius); stop ();
现在,提出问题:在主时间轴上,如果我们将上面的代码从帧二移动到帧三,当电影测试时,Output窗口中会出现什么?
答案:什么也不会出现(或出现undefined)。因为电影剪辑实例ball并不在主时间轴的帧三上,因此ball中的所有变量对于此帧来说都是不可见的。
又一个问题,如果将上述代码从帧二向前移动到帧一而不是帧三,那么Output窗口又会出现什么呢?
答案:同样,什么也没有(或出现undefined)。为什么?ball出现在该帧中呀,怎么还是什么也没有呢?这是有关时间轴的问题,留点悬念,我们会在以后的章节中彻底地揭开谜底。
提示:只有当电影剪辑实例在工作区中呈现的时候,定义在电影剪辑时间轴上的电影剪辑变量才能持续(因为描述的是变量的生存期,所以我用持续这个词来表示可使用或可利用的意思)。定义在某个Flash文档的主时间轴上的变量在该文档中一直持续,除非该文档被从播放器中卸载(卸载可以通过unloadMovie ()函数完成,或者是因为另一个电影被加载到该电影所在的电影文档层上而发生的自动卸载)。
如果用脚本编辑某电影,而该电影中包含了一些电影剪辑,这些电影剪辑又被放置在不同时间轴的多个帧上,这时你会发现有关变量生存期的概念是多么重要。在你试图使用某个电影剪辑中的变量之前,一定要而且永远要确保该电影剪辑呈现在某个时间轴上。
出处:蓝色理想
责任编辑:无意
上一页 变量(7)- 在不同的时间轴上访问变量 下一页 变量(9)- 局部变量
◎进入论坛Flash专栏版块参加讨论
|