【问题标题】:AS3 Array object showing up by ordering通过排序显示的 AS3 Array 对象
【发布时间】:2012-03-23 10:44:11
【问题描述】:

我在舞台上有 3 个 MC 都是 alpha=0

var mcArray:Array = [mc1,mc2,mc3];
for (var j:int = 0; j < mcArray.length; j++)
{
    mcArray[j].alpha = 0;
}

我有一个按钮,一旦我点击它就会使 1 个 MC 变为 alpha=1

revealBtn.buttonMode = true;
revealBtn.useHandCursor = false;
revealBtn.addEventListener(MouseEvent.CLICK, revealClick);

function revealClick(event:MouseEvent):void
{
    for (var j:int = 0; j < mcArray.length; j++)
    {
        mcArray[j].alpha = 1;
    }
}

但是使用上面的脚本,它将使所有 3 个 MC 变为 alpha=1。

我知道这可以通过使用以下代码来实现:

if(mc1.alpha!=1){
mc1.alpha=1
}
if(mc2.alpha!=1){
mc2.alpha=1
}
if(mc3.alpha!=1){
mc3.alpha=1
}

此代码将给出我想要实现的目标,但如果 MC 超过 3 个,则脚本行会更长。

【问题讨论】:

  • 谢谢大家!以下所有方法都运行良好!

标签: arrays actionscript-3 flash


【解决方案1】:
revealBtn.buttonMode = true;
revealBtn.addEventListener(MouseEvent.CLICK, revealClick);

var mcArray:Array = [mc0,mc1,mc2];

function revealClick(event:MouseEvent):void
{
    for(var i:uint = 0; i<mcArray.length; i++){
        if(this['mc'+i].alpha !== 1){
            this['mc'+i].alpha = 1;
            break;
        }
    }
}

【讨论】:

  • 只需使用mcArray[i] 而不是this['mc' + i]
  • 当然,但是 this[] 数组更通用。假设我调用了 MovieClips、skyTVContainer、skySportsContainer、skyMoviesContainer 等,还有一个名为 packages = {'TV':[100, 20], 'Sports':[200, 20]} 等的对象,然后你可以看到我可以交互包对象(包中的变量 i)使用 this['sky'+i+'Container'].x = packages[i][0] 获取各种容器的坐标
  • 我的意思是,mc0mc1mc2 已经在 mcArray 中。当您对其进行迭代时,只需使用mcArray[i](或使用for each)。如果您只想做this['mc'+i],那么将它们全部放在一个数组中是没有意义的。如果您想这样做,只需摆脱 mcArray 并将您的 for 循环更改为 for( var i:int = 0; i &lt; 2; i++ )
  • 执行this['mc'+i] 还会将您与可以更改的影片剪辑的名称联系起来。如果明天你决定打电话给他们obj0/1/2,你现在需要回去改变你所有的循环
【解决方案2】:

不,if 语句仍然会将所有三个转换为 alpha 1。

您希望在点击时将三个中的哪一个设置为 alpha = 1?

您可以使用类似这样的方法在数组中没有 alpha = 1 的第一个 mc 上设置 alpha = 1

function revealClick(event:MouseEvent):void {
    for (var j:int = 0; j < mcArray.length; j++){
        if ( mcArray[j].alpha != 1 ){
            mcArray[j].alpha = 1;
            return;
        }
    }
}

【讨论】:

    【解决方案3】:

    只需使用计数器。

    var cnt : int = -1; 
    function revealClick(event:MouseEvent):void
    {
        if(++cnt < mcArray.length) mcArray[cnt].alpha = 1;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-02
      • 1970-01-01
      • 2014-04-26
      相关资源
      最近更新 更多