动作脚本3-有反馈的拖放游戏,只有一个对象可以工作



我是Actionscript的新手,所以我不太确定我的代码有什么问题。

我正在创建一个Flash/Actionscript游戏,孩子们会把不同的食物拖放到食物金字塔上——现代的食物金字塔。所有项目都可以拖放,但只有第一个项目(banana_mc)会创建反馈。我不知道为什么会发生这种情况,也没有编译器错误。

我的操作脚本如下:

    banana_mc.objName = "banana";
banana_mc.initX = banana_mc.x;
banana_mc.initY = banana_mc.y;
banana_mc.val = 0;
bread_mc.objName = "bread";
bread_mc.initX = bread_mc.x;
bread_mc.initY = bread_mc.y;
bread_mc.val = 0;
broccoli_mc.objName = "broccoli";
broccoli_mc.initX = broccoli_mc.x;
broccoli_mc.initY = broccoli_mc.y;
broccoli_mc.val = 0;
burger_mc.objName = "burger";
burger_mc.initX = burger_mc.x;
burger_mc.initY = burger_mc.y;
burger_mc.val = 0;
carrot_mc.objName = "carrot";
carrot_mc.initX = carrot_mc.x;
carrot_mc.initY = carrot_mc.y;
carrot_mc.val = 0;
cheese_mc.objName = "cheese";
cheese_mc.initX = cheese_mc.x;
cheese_mc.initY = cheese_mc.y;
cheese_mc.val = 0;
chips_mc.objName = "chips";
chips_mc.initX = chips_mc.x;
chips_mc.initY = chips_mc.y;
chips_mc.val = 0;
corn_mc.objName = "corn";
corn_mc.initX = corn_mc.x;
corn_mc.initY = corn_mc.y;
corn_mc.val = 0;
eggplant_mc.objName = "eggplant";
eggplant_mc.initX = eggplant_mc.x;
eggplant_mc.initY = eggplant_mc.y;
eggplant_mc.val = 0;
egg_mc.objName = "egg";
egg_mc.initX = egg_mc.x;
egg_mc.initY = egg_mc.y;
egg_mc.val = 0;

banana_mc.buttonMode = true;
bread_mc.buttonMode = true;
broccoli_mc.buttonMode = true;
burger_mc.buttonMode = true;
carrot_mc.buttonMode = true;
cheese_mc.buttonMode = true;
chips_mc.buttonMode = true;
corn_mc.buttonMode = true;
eggplant_mc.buttonMode = true;
egg_mc.buttonMode = true;
banana_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
banana_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
bread_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
bread_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
broccoli_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
broccoli_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
burger_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
burger_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
carrot_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
carrot_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
cheese_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
cheese_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
chips_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
chips_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
corn_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
corn_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
eggplant_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
eggplant_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
egg_mc.addEventListener(MouseEvent.MOUSE_DOWN, mousePress);
egg_mc.addEventListener(MouseEvent.MOUSE_UP, mouseRelease);
//Mouse Events
function mousePress(event:MouseEvent):void {
    var item:MovieClip = MovieClip(event.target);
    item.startDrag();
    var topPos:uint = this.numChildren - 1;
    this.setChildIndex(item, topPos);
}

function mouseRelease(event:MouseEvent):void {
    var item:MovieClip = MovieClip(event.target);
    item.stopDrag();
    switch (item.objName) {
        case "banana" :
            if (bottom_mc.hitTestObject(item)) {
                updateShape(item, bottom_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            break;
        case "bread" :
            if (third_mc.hitTestObject(item)) {
                updateShape(item, third_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            break;
        case "broccoli" :
            if (bottom_mc.hitTestObject(item)) {
                updateShape(item, bottom_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            break;
            case "burger" :
            if (top_mc.hitTestObject(item)) {
                updateShape(item, top_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            case "carrot" :
            if (bottom_mc.hitTestObject(item)) {
                updateShape(item, bottom_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            case "cheese" :
            if (second_mc.hitTestObject(item)) {
                updateShape(item, second_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            case "chips" :
            if (top_mc.hitTestObject(item)) {
                updateShape(item, top_mc);
            } else {
                info_txt.text ="WRONG!";
            }
            case "corn" :
            if (bottom_mc.hitTestObject(item)) {
                updateShape(item, bottom_mc);
            } else {
                info_txt.text ="WRONG!";
            }
        default :
            ; ;
    }
    function updateShape(item:MovieClip, bin:MovieClip):void {

    item.visible = true;
    info_txt.text ="CORRECT!";
    item.val = 1;
    resetShapes();
}
function resetShapes() {
    if ((banana_mc.val == 1)&& (bread_mc.val == 1) && (broccoli_mc.val == 1) &&(burger_mc.val == 1) &&(carrot_mc.val == 1) &&(cheese_mc.val == 1) &&(chips_mc.val == 1) &&(corn_mc.val == 1) &&(eggplant_mc.val == 1) &&(egg_mc.val == 1)){
        banana_mc.x = banana_mc.initX;
        banana_mc.y = banana_mc.initY;
        bread_mc.x = bread_mc.initX;
        bread_mc.y = bread_mc.initY;
        broccoli_mc.x = broccoli_mc.initX;
        broccoli_mc.y = broccoli_mc.initY;
        burger_mc.x = burger_mc.initX;
        burger_mc.y = burger_mc.initY;
        carrot_mc.x = carrot_mc.initX;
        carrot_mc.y = carrot_mc.initY;
        cheese_mc.x = cheese_mc.initX;
        cheese_mc.y = cheese_mc.initY;
        chips_mc.x = chips_mc.initX;
        chips_mc.y = chips_mc.initY;
        corn_mc.x = corn_mc.initX;
        corn_mc.y = corn_mc.initY;
        eggplant_mc.x = eggplant_mc.initX;
        eggplant_mc.y = eggplant_mc.initY;
        egg_mc.x = egg_mc.initX;
        egg_mc.y = egg_mc.initY;

        banana_mc.visible= true;
        bread_mc.visible= true;
        broccoli_mc.visible= true;
        burger_mc.visible= true;
        carrot_mc.visible= true;
        cheese_mc.visible= true;
        chips_mc.visible= true;
        corn_mc.visible= true;
        eggplant_mc.visible= true;
        egg_mc.visible= true;

        banana_mc.val= 0;
        bread_mc.val= 0;
        broccoli_mc.val= 0;
        burger_mc.val= 0;
        carrot_mc.val= 0;
        cheese_mc.val= 0;
        chips_mc.val= 0;
        corn_mc.val= 0;
        eggplant_mc.val= 0;
        egg_mc.val= 0;
    }
}
}

如果有人能帮我,我真的很感激!这是本周任务的一部分(而不是编码任务),所以如果可能的话,我真的需要一个快速的解决方案。。。

您的switch语句被配置为查找对象名称指定的确切字符串。所以套管很重要:)执行item.objName.toLocalLowercase(),将对象的名称更改为仅包含小写字母,或者将大小写更改为匹配除香蕉外的所有对象名称。

这只是一个减少代码量的有用提示。。。

在底部的function updateShape(item:MovieClip, bin:MovieClip):void中,您有:

CCD_ 2可能更好地作为CCD_ 3

如果你像上面那样提供一个函数参数(,又名函数参数),那么当你运行resetShapes时,它只需要处理当前点击的项目(作为函数参数提供),所以你可以简单地写。。。

function resetShapes ( in_item : MovieClip ) : void
{
    if( in_item.val == 1)
    {
        in_item.x = in_item.initX;
        in_item.visible = true;
        in_item.val = 0;
    }
}

同样,在底部的function mouseRelease(event:MouseEvent):void中,您有default : ; ;,当您尝试编译时,这可能会导致问题,因此请修复或删除它。您试图使用此命令实现什么?如果我们理解您的代码或逻辑,就更容易为您提供建议。

请查看这篇Switch/Case教程文章以获得清晰。。。

相关内容

最新更新