首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >盒子换色游戏

盒子换色游戏
EN

Stack Overflow用户
提问于 2014-11-11 12:32:48
回答 1查看 74关注 0票数 0

我想通过这段代码实现的是,每当我点击16个框中的任何一个,我就会得到一个红色的颜色,但是下一次我在任何其他(或相同的)框上都会得到一个蓝色的颜色。这个代码所做的是,如果我单击任何其他框,它首先给我一个红色的颜色(总是),只有当我再次单击同一个框时,我才会得到下一个颜色,也就是说,所有的框的颜色都是相互独立的。请帮帮忙,我是actionscript的初学者。提前谢谢。

代码语言:javascript
复制
var i=0;

box1.addEventListener(MouseEvent.CLICK, func1(i));
box2.addEventListener(MouseEvent.CLICK, func2(i));
box3.addEventListener(MouseEvent.CLICK, func3(i));
box4.addEventListener(MouseEvent.CLICK, func4(i));
box5.addEventListener(MouseEvent.CLICK, func5(i));
box6.addEventListener(MouseEvent.CLICK, func6(i));
box7.addEventListener(MouseEvent.CLICK, func7(i));
box8.addEventListener(MouseEvent.CLICK, func8(i));
box9.addEventListener(MouseEvent.CLICK, func9(i));
box10.addEventListener(MouseEvent.CLICK, func10(i));
box11.addEventListener(MouseEvent.CLICK, func11(i));
box12.addEventListener(MouseEvent.CLICK, func12(i));
box13.addEventListener(MouseEvent.CLICK, func13(i));
box14.addEventListener(MouseEvent.CLICK, func14(i));
box15.addEventListener(MouseEvent.CLICK, func15(i));
box16.addEventListener(MouseEvent.CLICK, func16(i))


function func1(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box1.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func2(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box2.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func3(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box3.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func4(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box4.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func5(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box5.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func6(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box6.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func7(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box7.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func8(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box8.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func9(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box9.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func10(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box10.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func11(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box11.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func12(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box12.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func13(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box13.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func14(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box14.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func15(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box15.transform.colorTransform = myColorTransform;
        i++;
    }
}

function func16(i:int):Function{
    return function paint(e:MouseEvent):void{
        var myColorTransform:ColorTransform = new ColorTransform();
        if (i%4==0) {
            myColorTransform.color = 0xFF0000;
        }
        else if (i%4==1) {
            myColorTransform.color = 0x0000FF;
        }
        else if (i%4==2) {
            myColorTransform.color = 0x00FF00;
        }
        else if (i%4==3) {
            myColorTransform.color = 0xFFFF00;
        }
        box16.transform.colorTransform = myColorTransform;
        i++;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-11-11 13:05:57

要做到这一点,您必须声明i对象范围,也不需要使用16个函数,只需创建一个函数并使用Event.target属性来确定单击了哪个框,然后更改其colorTransform。另外,如果您使用4个静态颜色转换对象,而不是每次单击时创建一个,这会更好,但这可以等待。

代码语言:javascript
复制
static var cts:Vector.<ColorTransform>=Vector.<ColorTransform>([]);
cts.push(new ColorTransform(0,0,0,1,0xFF,0,0,0));
cts.push(new ColorTransform(0,0,0,1,0,0,0xFF,0));
cts.push(new ColorTransform(0,0,0,1,0,0xFF,0,0));
cts.push(new ColorTransform(0,0,0,1,0xFF,0xFF,0,0));
// these are short forms of color transform initialization, 
// instead of making one and assigning "color", you pass required parameters
// at its creation time.
// add more in case you need
static var nextTransform:int=0;
function paint(e:Event):void {
    var dest:DisplayObject = e.target as DisplayObject;
    if (!dest) return; // should never trigger, but a good precaution anyway
    dest.transform.colorTransform = cts[nextTransform]; 
    nextTransform++;
    if (nextTransform>=cts.length) nextTransform=0;
}

如果您需要此函数来保持原来的行为,则应该将dest转换为MovieClip或您的框中的类而不是DisplayObject,并在此函数中使用dest.nextTransform代替nextTransform

此外,对于您自己的教育,您应该尝试了解这段代码的行为,以防您决定添加更多的颜色,如果这样的话,您为什么要对原始代码进行如此多的更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26865031

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档