Actionscript 3 flash AS3中的addChild和removeChild(操作脚本3)
接下来的代码是关于一个非常简单的幻灯片放映。单击后,我想显示一张图片(或swf),同时使其他图片消失。。。 这是我的代码,它工作正常,但在btn3中,当我单击时,第二张图片不会消失。。 我不知道为什么。你能教我一些新的方法来充分重写我的代码吗Actionscript 3 flash AS3中的addChild和removeChild(操作脚本3),actionscript-3,removechild,addchild,Actionscript 3,Removechild,Addchild,接下来的代码是关于一个非常简单的幻灯片放映。单击后,我想显示一张图片(或swf),同时使其他图片消失。。。 这是我的代码,它工作正常,但在btn3中,当我单击时,第二张图片不会消失。。 我不知道为什么。你能教我一些新的方法来充分重写我的代码吗 import flash.display.Loader; import flash.events.Event; var my_first_swf_loading_ever:Loader=new Loader(); my_
import flash.display.Loader;
import flash.events.Event;
var my_first_swf_loading_ever:Loader=new Loader();
my_first_swf_loading_ever.load(new URLRequest('1.jpg'));
var my_second_pic:Loader=new Loader();
my_second_pic.load(new URLRequest('2.jpg'));
var my_3_pic:Loader=new Loader();
my_3_pic.load(new URLRequest('pictures/3.jpg'));
btn.addEventListener(MouseEvent.CLICK, clicked);
function clicked(evt:Event):void
{
if (contains(my_second_pic)) {
removeChild(my_second_pic);
if (contains(my_3_pic)) {
removeChild(my_3_pic);
}
}
my_first_swf_loading_ever.x=120;
my_first_swf_loading_ever.y=120;
addChild(my_first_swf_loading_ever);
}
btn2.addEventListener(MouseEvent.CLICK, clicked2);
function clicked2(evt:Event):void
{
if (contains(my_first_swf_loading_ever)) {
removeChild(my_first_swf_loading_ever);
if (contains(my_3_pic)) {
removeChild(my_3_pic);
}
}
my_second_pic.x=120;
my_second_pic.y=120;
addChild(my_second_pic);
}
btn3.addEventListener(MouseEvent.CLICK, clicked3);
function clicked3(evt:Event):void
{
if (contains(my_first_swf_loading_ever)) {
removeChild(my_first_swf_loading_ever);
if (contains(my_second_pic)) {
removeChild(my_second_pic);
}
}
my_3_pic.x=120;
my_3_pic.y=120;
addChild(my_3_pic);
}
您应该将代码的格式设置得更整洁,因为问题会更清楚。在以下行中:
if (contains(my_first_swf_loading_ever)) {
removeChild(my_first_swf_loading_ever);
if (contains(my_second_pic)) {
removeChild(my_second_pic);
}}
检查第二张图片的代码未执行,如果重新构造代码,您可以看到原因:
if (contains(my_first_swf_loading_ever)) // First check
{
removeChild(my_first_swf_loading_ever);
if (contains(my_second_pic)) // Second check is only reached if first check returns true
{
removeChild(my_second_pic);
}
}
重组为:
if (contains(my_first_swf_loading_ever)) // First check
{
removeChild(my_first_swf_loading_ever);
}
if (contains(my_second_pic)) // Second check - not reliant on first
{
removeChild(my_second_pic);
}
以便进行两次检查。代码的其余部分也是如此,如果检查是相反的,那么其他按钮上也会出现同样的问题
下面是一个很好的参考资料,您可以在编写代码时查看,以了解如何格式化不同的内容以帮助提高代码的可读性: