flash ActionScript 的全局变量该在哪声明?

有两个场景,代码如下场景1(CJ1)第一帧:if(a!=0){b._visible=true;}else{b._visible=false;}场景2(CJ2)第一帧:a=... 有两个场景,代码如下
场景1(CJ1)第一帧:
if(a!=0){
b._visible=true;
}else{
b._visible=false;
}

场景2(CJ2)第一帧:
a=1;
gotoAndPlay("CJ1",1)

那么,我的_global.a=0;该在哪声明呢?
放在场景1第一帧行吗?那么这样回到场景1第一帧a=啥?
展开
 我来答
赵客观天
2011-05-19 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:108
采纳率:75%
帮助的人:33.2万
展开全部
fionafql(Adobe的社区经理也叫Fiona的,哈哈)的回答是错的。你的第二段代码功能是可以实现的。但你_global的用法是完全错误的。
用帮助文档中的话说:“设置全局变量的值时,必须使用该变量的完全限定名称,例如,_global.variableName。否则,将创建一个同名的局部变量,该局部变量将屏蔽您所设置的全局变量。”
参见:ActionScript 2.0 语言参考 / ActionScript 语言元素 / 全局属性 / _global 属性
网址:
http://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/2/help.html?content=Part1_Learning_AS2_1.htm
(参考资料居然有字数限制?汗……难道网址可以只写一半的?)

也就是说:在你的代码中所有a,都应该写成_global.a。
而你现在的写法,实际上在第二帧的第一行创建了一个名为a的时间轴变量。之后的所有操作都是针对这名为a的时间轴变量的。
如果不相信,你可以trace一下。
trace(a);
trace(_global.a);
你会发现不论你怎么改a的值,_global.a的值永远等于0!

不过,以前用AS 2.0做开发的时候(很久很久之前的事情了),我是禁止公司的开发工程师使用_global的,因为容易冲突;fionafql所说的_root也是禁止使用的,因为这样一旦被别的文件加载,_root会指向加载器。如果用lockroot,会让事情变得无法控制。当年他们因为这个恨死我了。哈哈……但最后证明我是对的。
当然,这通常是专业的开发工程师考虑的问题了,你不用考虑那么多。
fionafql
2011-05-19 · TA获得超过1048个赞
知道答主
回答量:54
采纳率:0%
帮助的人:67.7万
展开全部
声明在主场景的第一帧,应该可以,要是在元件里用到的话,要加上_root.**哦,不然会取不到值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式