设置可见性槽属性不起作用 actionscript 3.0
Posted
技术标签:
【中文标题】设置可见性槽属性不起作用 actionscript 3.0【英文标题】:set visibility trough property not working actionscript 3.0 【发布时间】: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
函数位于另一层(在同一帧上),因为对象在那里。 “一”、“二”、“三”、“四”或“五”已打印,但可见性设置不正确。
【问题讨论】:
欢迎来到***。要让任何人回答您的问题,您需要对其进行编辑并包含代码或解释如何填充p
和 j
。就目前而言,如果不进行疯狂的猜测,就无法回答这个问题。
@Naqries 看起来一切正常,一定有另一个原因,我们无法在此信息的帮助下看到。提供更多代码。
@BadFeelingAboutThis 感谢您的回复。 p
和 j
是引用 SimpleButton 对象的数组。我在上面添加了更多代码。
@AlexUsachov 感谢您的回复。我在上面添加了更多代码。
这样好多了,谢谢。查看您的代码,我仍然看不到 j
的定义位置? p1
,p2
,p3
实例在您的时间线上吗?除了具有此代码的框架之外,这些对象是否存在于其他框架上?您是否收到任何错误消息(确保您正在制作调试电影,并且只播放电影以便收到错误消息)
【参考方案1】:
只是为了让您的代码更简单、更易于阅读。
使用你的 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;
希望这一切都好,并且有些用处。
【讨论】:
以上是关于设置可见性槽属性不起作用 actionscript 3.0的主要内容,如果未能解决你的问题,请参考以下文章