Arrays 设置可见性槽属性不工作actionscript 3.0
这是我的第一篇文章Arrays 设置可见性槽属性不工作actionscript 3.0,arrays,actionscript-3,if-statement,flash,visibility,Arrays,Actionscript 3,If Statement,Flash,Visibility,这是我的第一篇文章 if (condition) { trace("called"); p[1].visible = false; j[1].visible = false; } 使用上面的代码,“called”被打印在控制台中,但这两个对象(按钮)仍然可见。然后,当我尝试将设置的可见性(p[1].visible=false;和j[1].visible=false;)从条件中取出时,它工作得很好 我想知道这里的问题是什么,如何在某些条件下设置可见性 [编辑] 这是我实际
if (condition) {
trace("called");
p[1].visible = false;
j[1].visible = false;
}
使用上面的代码,“called”被打印在控制台中,但这两个对象(按钮)仍然可见。然后,当我尝试将设置的可见性(p[1].visible=false;
和j[1].visible=false;
)从条件中取出时,它工作得很好
我想知道这里的问题是什么,如何在某些条件下设置可见性
[编辑]
这是我实际的源代码。上面的代码片段只是为了简化我的问题
import flash.events.MouseEvent;
import flash.ui.Mouse;
import flash.events.Event;
stop();
var isInit:Boolean;
var val:Array;
var p:Array;
if (!isInit)
{
isInit = initial();
}
function initial():Boolean
{
trace("init");
val = new Array();
val[1] = 0;
val[2] = 0;
val[3] = 0;
val[4] = 0;
val[5] = 0;
val[6] = 0;
pinit();
jinit();
ainit();
binit();
cinit();
dinit();
einit();
return true;
}
function pinit():void
{
p = new Array();
p[1] = p1;
p[2] = p2;
p[3] = p3;
}
// event listener works
p[1].addEventListener(MouseEvent.CLICK, function (event:MouseEvent):void {
p[1].visible = false;
});
p[2].addEventListener(MouseEvent.CLICK, function (event:MouseEvent):void {
p[2].visible = false;
});
if (isInit)
{
trace("set visibility"); // this is printed as well
var i:int;
for (i = 1; i <= 3; i++)
{
setVisibility(i, val[i]);
}
}
function setVisibility(num:int, val:int):void
{
if (val==0)
{
p[num].visible = true;
j[num].visible = true;
}
else if (val==1)
{
trace("one");
p[num].visible = false;
j[num].visible = false;
}
else if (val==2)
{
trace("two");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
}
else if (val==3)
{
trace("three");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
b[num].visible = false;
}
else if (val==4)
{
trace("four");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
b[num].visible = false;
c[num].visible = false;
}
else if (val==5)
{
trace("five");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
b[num].visible = false;
c[num].visible = false;
d[num].visible = false;
}
}
导入flash.events.MouseEvent;
导入flash.ui.Mouse;
导入flash.events.Event;
停止();
var-isInit:布尔型;
var-val:数组;
var-p:数组;
如果(!isInit)
{
isInit=初始值();
}
函数initial():布尔值
{
跟踪(“初始”);
val=新数组();
val[1]=0;
val[2]=0;
val[3]=0;
val[4]=0;
val[5]=0;
val[6]=0;
pinit();
jinit();
ainit();
binit();
cinit();
迪尼特();
einit();
返回true;
}
函数pinit():void
{
p=新数组();
p[1]=p1;
p[2]=p2;
p[3]=p3;
}
//事件侦听器工作
p[1]。addEventListener(MouseEvent.CLICK,函数(事件:MouseEvent):void{
p[1].visible=false;
});
p[2]。addEventListener(MouseEvent.CLICK,函数(事件:MouseEvent):void{
p[2].visible=false;
});
如果(isInit)
{
跟踪(“设置可见性”);//这也是打印的
变量i:int;
for(i=1;i只是为了使代码更简单、更易于阅读
使用val数组,您可以这样填充它
val = new Array (0,0,0,0,0,0,0);
是的,这有七个数字,因为数组从0开始。你不必引用它,但我会填充它,使它看起来更漂亮
我还将末尾的if-else位更改为:
switch (val){
case 0:
p[num].visible = true;
j[num].visible = true;
break;
case 1:
trace("one");
p[num].visible = false;
j[num].visible = false;
break;
case 2:
trace("two");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
break;
case 3:
trace("three");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
b[num].visible = false;
break;
case 4:
trace("four");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
b[num].visible = false;
c[num].visible = false;
break;
case 5:
trace("five");
p[num].visible = false;
j[num].visible = false;
a[num].visible = false;
b[num].visible = false;
c[num].visible = false;
d[num].visible = false;
break;
}
至于您的实际问题,我不认为您可以从数组中更改按钮,因为它将成为按钮的副本,而不是按钮本身(希望这是有意义的)。我仍然会使用数组,但我会使用布尔值,而不是按钮可见性。因此,最后您可以:
btnButton.visible = p1;
希望这些都没问题,并且有一定的用处。欢迎来到stackoverflow。对于任何回答您问题的人,您都需要编辑它并包含代码,或者解释p
和j
是如何填充的。就目前而言,这个问题的回答必须是一个猜测。@Naqries看起来一切都应该是这样的这可能是另一个原因,我们无法使用此信息进行查看。请提供更多代码。@Badfeelingabout感谢您的回复。p
和j
是指SimpleButton对象的数组。我在上面添加了更多代码。@AlexUsachov感谢您的回复。我在上面添加了更多代码。这样更好,谢谢。Lo查看您的代码,我仍然看不到j
是在哪里定义的?您的时间轴上有p1
、p2
、p3
实例吗?除了包含此代码的帧外,这些对象是否存在于其他帧上?您是否收到任何错误消息(确保您正在进行调试电影,只需播放电影即可获得错误消息)