我是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;
}
}
}
如果有人能帮助我,我真的很感激!它本周是作业的一部分(不是编码),所以如果可能我真的需要一个快速的解决方案......
答案 0 :(得分:0)
您的switch语句配置为查找对象名称指定的确切字符串。套管问题:) 要么使用item.objName.toLocalLowercase(),要将对象的名称更改为仅包含小写字母,要么更改您的大小写以匹配除了banana之外的所有对象的所有对象的名称。
答案 1 :(得分:0)
减少代码量只是一个有用的提示...
在你底部的function updateShape(item:MovieClip, bin:MovieClip):void
,你有:
resetShapes();
可能会更好resetShapes( item );
如果你提供一个函数参数( aka 函数参数),那么当你运行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 tutorial article