设置可见性槽属性不起作用 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 函数位于另一层(在同一帧上),因为对象在那里。 “一”、“二”、“三”、“四”或“五”已打印,但可见性设置不正确。

【问题讨论】:

欢迎来到***。要让任何人回答您的问题,您需要对其进行编辑并包含代码或解释如何填充 pj。就目前而言,如果不进行疯狂的猜测,就无法回答这个问题。 @Naqries 看起来一切正常,一定有另一个原因,我们无法在此信息的帮助下看到。提供更多代码。 @BadFeelingAboutThis 感谢您的回复。 pj 是引用 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的主要内容,如果未能解决你的问题,请参考以下文章

通过后面的代码设置时,两种方式绑定不起作用

Actionscript 3.0 调用 Javascript 不起作用?

按钮可见性属性在 Kony 的 iOS 上不起作用

Android进度条设置可见不起作用

设置可见性不起作用 imageview

当我调用可见性时,Android 动画不起作用