AS3.0关于变量作用域的问题
[code]importflash.text.TextField;bb.addEventListener(MouseEvent.CLICK,onclick);functi...
[code]import flash.text.TextField;
bb.addEventListener(MouseEvent.CLICK,onclick);
function onclick(e):void{
var mytext:TextField=new TextField();
mytext.text="hello";
addChild(mytext);
}
pp.addEventListener(MouseEvent.CLICK,remover);
function remover(e):void{
removeChild(mytext);
}[/code]
bb和pp是两个按钮,现在要实现点bb创建一个文本框,点pp移除文本框,我这么做显然是因为mytext在remover()方法里不可见,那么请问:
1、如何克服这个问题,实现这种功能。
2、推广,由函数里面new出来的东西addChilid之后怎么removeChild。
感谢各位看帖者。 展开
bb.addEventListener(MouseEvent.CLICK,onclick);
function onclick(e):void{
var mytext:TextField=new TextField();
mytext.text="hello";
addChild(mytext);
}
pp.addEventListener(MouseEvent.CLICK,remover);
function remover(e):void{
removeChild(mytext);
}[/code]
bb和pp是两个按钮,现在要实现点bb创建一个文本框,点pp移除文本框,我这么做显然是因为mytext在remover()方法里不可见,那么请问:
1、如何克服这个问题,实现这种功能。
2、推广,由函数里面new出来的东西addChilid之后怎么removeChild。
感谢各位看帖者。 展开
2个回答
展开全部
变量从AS3.0开始,就没有真正的全局变量了,有的只是相对的全局变量与局部变量,它是针对不同的域来说的,打个比方说吧,在类中有类的全局变量与局部变量,在当前时间轴上有当前时间轴的全局变量与局部变量,要想在当前域中任意地方调用变量只能声明当前域的全局变量,这样就可以任意调用了,在函数创建的实例,只要赋值给当前域的全局变量,就可以任意调用以及任意删除了。现在来说说new出来的东西addChild后,如何removeChild了,其实无论是addChild还是removeChild都是针对显示容器来说的,没有了显示容器,自然就没了这两个东西了。因此无论你是通过函数创建的还是直接创建的,都存在一个你这个显示对象添加到哪里的问题,添加到哪里,就从哪里删除,就这么简单。
从你的脚本来看,主要问题就是因为把变量声明为局部变量了,随着函数的生命终结,变量也完成了使命。所以你应该在最开始就定义变量,然后在函数中赋值,就可以解决问题了。
就是这句
function onclick(e):void{
var mytext:TextField=new TextField();
mytext.text="hello";
addChild(mytext);
}
修改成
var mytext:TextField;
function onclick(e):void{
mytext=new TextField();
mytext.text="hello";
addChild(mytext);
}
从你的脚本来看,主要问题就是因为把变量声明为局部变量了,随着函数的生命终结,变量也完成了使命。所以你应该在最开始就定义变量,然后在函数中赋值,就可以解决问题了。
就是这句
function onclick(e):void{
var mytext:TextField=new TextField();
mytext.text="hello";
addChild(mytext);
}
修改成
var mytext:TextField;
function onclick(e):void{
mytext=new TextField();
mytext.text="hello";
addChild(mytext);
}
上海德康电子
2023-06-12 广告
2023-06-12 广告
ALPS Bluetooth 模块是一种支持蓝牙协议的无线通信模块,通常用于连接蓝牙设备,如手机、耳机、音箱等。ALPS Bluetooth 模块有多种类型,其中包括:1. UGZZC-G 车载用Bluetooth模块:这是一种内置蓝牙协议...
点击进入详情页
本回答由上海德康电子提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询