多个按钮的 AS2 数组共享相同的操作以及单独的操作

Posted

技术标签:

【中文标题】多个按钮的 AS2 数组共享相同的操作以及单独的操作【英文标题】:AS2 Array of Multiple Buttons Sharing Same Actions As Well as Individual Actions 【发布时间】:2015-01-11 00:32:55 【问题描述】:

我有 5 个按钮 mcs,它们都共享相同的翻转/滚动功能。但是,它们在 rollOver 上也都有特定的操作,例如 mc1 也会在 rollOver 上执行以下操作:

TweenLite.to(tips_mc.tip1, 1,  _alpha:100 );

如何将每个单独的调用添加到数组中的 rollOver 上的每个 mc?

我的数组如下:

var btnArray:Array = new Array(mc1, mc2, mc3, mc4, mc5);
for (i=0; i<btnArray.length; i++) 
///initial state///
btnArray[i].enabled = true;
btnArray[i].id = i;
btnArray[i].onRollOver = function() 
    this.gotoAndPlay("over");
;
btnArray[i].onRollOut = function() 
    this.gotoAndPlay("out");
;

非常感谢任何帮助!谢谢!

【问题讨论】:

【参考方案1】:

您可以在不同的functions 中编写您的操作,然后像这样调用它们:

var functionsArray:Array /* of Function */ = [f1, f2, f3, f4, f5]; 
var btnArray:Array /* of MovieClip */ = [mc1, mc2, mc3, mc4, mc5];
var l:Number = btnArray.length;

for (var i:Number = 0; i < l; i++)

    btnArray[i].enabled = true;
    btnArray[i].id = i;
    btnArray[i].onRollOver = function()
    
        functionsArray[this.id](); // you invoke your function here 
        this.gotoAndPlay("over");
    
    btnArray[i].onRollOut = function()
    
        this.gotoAndPlay("out");
    


function f1():Void trace("I'm the function 1");
function f2():Void trace("I'm the function 2");
function f3():Void trace("I'm the function 3");
function f4():Void trace("I'm the function 4");
function f5():Void trace("I'm the function 5");

【讨论】:

谢谢 HelloFlash,我很抱歉,但我仍然不明白我将如何确保 f1 仅在 mc1 翻转时触发等...您介意解释一下吗?抱歉 - 以前从未使用过数组。谢谢! user2163224 - 我不明白你的问题:你只需要应用代码。当您超过 mc1 时,将调用 f1。 user2163224 - 当您超过 mc1 的 btnArray[0] 时,调用 f1 的 functionsArray[0]。 啊,非常感谢!现在我明白了!

以上是关于多个按钮的 AS2 数组共享相同的操作以及单独的操作的主要内容,如果未能解决你的问题,请参考以下文章

两个单独的 UIButtons 共享相同的按下...不能同时按下两个

让多个 UIButton 共享相同外观的最佳方法

如何在多个 UITableView 单元格之间共享相同的 UIView

多个 UIAlertView;每个都有自己的按钮和动作

TestNG,Selenium 如何在多个类之间共享对象

一些我容易混淆的知识(关于数组的操作对字符串的操作)