Я новичок в ActionScript, поэтому я не уверен, что проблема с моим кодом.Actionscript 3 - Drag and Drop игра с обратной связью, только один объект работает
Я создаю игру Flash/ActionScript, где дети будут перетаскивать различные продукты питания на пирамиду пищи - современную. Все элементы перетаскиваются, однако только первый элемент (banana_mc) создает обратную связь. Я понятия не имею, почему это происходит, и нет ошибок компилятора.
Мой ActionScript выглядит следующим образом:
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;
}
}
}
Если кто-то может помочь мне, я бы очень признателен! Это часть задания на этой неделе (не для кодирования), поэтому мне действительно нужно быстрое решение, если это возможно ...
я редактировал код и поместить его обратно в вышеприведенном фрагменте кода. Но это все еще не работает, и теперь банановый объект тоже не работает. Я также получаю эту ошибку, когда я перетаскиваю объект: TypeError: Ошибка # 1006: значение не является функцией. \t at healthyeating2_fla :: MainTimeline/mouseRelease() –
Не могли бы вы проверить «разрешить отладку» для меня? Если вы используете Adobe Flash CS, это меню в меню> публикация настроек> расширенные настройки. Я не могу сказать, что вызывает вашу проблему в это время, но это поможет. Вы также можете удалить функцию toLocalLowercase(), поскольку все имена вашего объекта имеют строчные буквы. Кроме того, отличной функцией, которая поможет, будет инструмент отладки. Если вы используете adobe flash cs, нажмите cntrl + ** shift ** + enter, чтобы войти в режим отладки. Ваш тестовый swf остановится и покажет строку, откуда исходит ошибка, а также текущие значения, которые она обрабатывает, которые могут быть связаны с ней. – quantomworks
Я снова изменил код и вставил его выше. Однако отладка ничего не делает. Он не показывает ошибок в коде. Теперь некоторые объекты производят обратную связь, а некоторые - нет. Но обратная связь в любом случае неверна. Помог ли вам по электронной почте файл проекта? –