这是我的第一篇文章。
if (condition) {
trace("called");
p[1].visible = false;
j[1].visible = false;
}
使用上面的代码"调用"在控制台中打印,但两个对象(按钮)仍然可见。然后,当我尝试将设置可见性(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;
}
}
ainit, binit, cinit, etc
函数在另一层(在同一帧上),因为对象在那里。 &#34; one&#34;,&#34; two&#34;,&#34; three&#34;,&#34; four&#34;或&#34; five&#34;已打印,但未正确设置可见性。
答案 0 :(得分:0)
只是为了让您的代码更简单易读。
使用你的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;
希望一切都好,有些用。