【发布时间】:2018-10-08 08:34:47
【问题描述】:
这是我的第一篇文章。
if (condition) {
trace("called");
p[1].visible = false;
j[1].visible = false;
}
上面的代码“调用”在控制台中打印,但两个对象(按钮)仍然可见。然后,当我尝试将设置的可见性(p[1].visible = false; 和 j[1].visible = false;)从条件中排除时,它运行良好。
我想知道这里的问题是什么以及如何在某些条件下设置可见性?
[编辑]
这是我的实际源代码。上面的代码 sn-p 只是为了简单我的问题。
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 函数位于另一层(在同一帧上),因为对象在那里。 “一”、“二”、“三”、“四”或“五”已打印,但可见性设置不正确。
【问题讨论】:
-
欢迎来到stackoverflow。要让任何人回答您的问题,您需要对其进行编辑并包含代码或解释如何填充
p和j。就目前而言,如果不进行疯狂的猜测,就无法回答这个问题。 -
@Naqries 看起来一切正常,一定有另一个原因,我们无法在此信息的帮助下看到。提供更多代码。
-
@BadFeelingAboutThis 感谢您的回复。
p和j是引用 SimpleButton 对象的数组。我在上面添加了更多代码。 -
@AlexUsachov 感谢您的回复。我在上面添加了更多代码。
-
这样好多了,谢谢。查看您的代码,我仍然看不到
j的定义位置?p1,p2,p3实例在您的时间线上吗?除了具有此代码的框架之外,这些对象是否存在于其他框架上?您是否收到任何错误消息(确保您正在制作调试电影,并且只播放电影以便收到错误消息)
标签: arrays actionscript-3 if-statement flash visibility