【发布时间】:2013-11-29 08:14:52
【问题描述】:
我在这里做一个简单的真假拖拽游戏。
我将舞台上的所有物体都制作成影片剪辑:
问题(q1,q2,q3),
删除目标(q1Match, q2Match, q3Match)
拖动对象(答案)例如。问题 1 的 q1a1 和 q1a2,以及
正确和错误答案的响应(oui,非)。
用户可以在回答后转到下一个问题,跳过问题并返回回答上一个未回答的问题。
当用户返回回答之前未回答的问题时,我遇到了问题。
假设用户跳过问题 2,然后正确回答问题 3。 用户返回回答问题 2。当用户拖动错误放置目标时,响应将显示“oui”影片剪辑,说明这是正确的答案。似乎它带有在问题 3 中正确回答它的记忆。
import flash.display.MovieClip;
import flash.events.MouseEvent;
oui.visible = false;
non.visible = false;
q1.visible = true;
q2.visible = false;
q3.visible = false;
q1Match.visible = true;
q2Match.visible = false;
q3Match.visible = false;
q1a1.visible = true;
q1a2.visible = true;
q2a1.visible = false;
q2a2.visible = false;
q3a1.visible = false;
q3a2.visible = false;
back_btn.visible = false;
var num:int = 0;
nx_btn.addEventListener(MouseEvent.CLICK, nextQuestion);
function nextQuestion(event:MouseEvent):void{
switch (num){
case 0:
oui.visible = false;
non.visible = false;
q1.visible = false;
q1Match.visible = false;
q1a1.visible = false;
q1a2.visible = false;
q2.visible = true;
q2Match.visible = true;
q2a1.visible = true;
q2a2.visible = true;
back_btn.visible = true;
back_btn.buttonMode = true;
break;
case 1:
oui.visible = false;
non.visible = false;
q2Match.visible = false;
q2.visible = false;
q2a1.visible = false;
q2a2.visible = false;
q3.visible = true;
q3Match.visible = true;
q3a1.visible = true;
q3a2.visible = true;
break;
case 2:
oui.visible = false;
non.visible = false;
q3.visible = false;
q3Match.visible = false;
q3a1.visible = false;
q3a2.visible = false;
gotoAndStop(3);
break;
}
num++;
}
back_btn.addEventListener(MouseEvent.CLICK, prevQuestion);
function prevQuestion(event:MouseEvent):void{
switch (num){
case 0:
oui.visible = false;
non.visible = false;
back_mc.visible = false;
break;
case 1:
oui.visible = false;
non.visible = false;
q2.visible = false;
q2Match.visible = false;
q2a1.visible = false;
q2a2.visible = false;
q1.visible = true;
q1Match.visible = true;
q1a1.visible = true;
q1a2.visible = true;
back_mc.visible = false;
break;
case 2:
oui.visible = false;
non.visible = false;
q3.visible = false;
q3Match.visible = false;
q3a1.visible = false;
q3a2.visible = false;
q2.visible = true;
q2Match.visible = true;
q2a1.visible = true;
q2a2.visible = true;
back_mc.visible = true;
back_mc.buttonMode = true;
break;
}
num--;
}
var dragArray:Array = [q1a1, q1a2, q2a1, q2a2, q3a1, q3a2];
var matchArray:Array = [q1Match, q2Match, q3Match];
var currentClip:MovieClip;
var startX:Number;
var startY:Number;
for(var i:int = 0; i < dragArray.length; i++) {
dragArray[i].buttonMode = true;
dragArray[i].addEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
function item_onMouseDown(event:MouseEvent):void {
currentClip = MovieClip(event.currentTarget);
startX = currentClip.x;
startY = currentClip.y;
addChild(currentClip);
currentClip.startDrag();
stage.addEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
}
function stage_onMouseUp(event:MouseEvent):void {
stage.removeEventListener(MouseEvent.MOUSE_UP, stage_onMouseUp);
currentClip.stopDrag();
var index:int = dragArray.indexOf(currentClip);
var matchClip:MovieClip = MovieClip(matchArray[index]);
oui.visible = false;
non.visible = false;
if(q1a1.hitTestObject(q1Match)) {
q1a1.x = q1Match.x;
q1a1.y = q1Match.y;
q1a1.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
q1a2.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
q1a1.buttonMode = false;
q1a2.buttonMode = false;
oui.visible = true;
non.visible = false;
}
if(q1a2.hitTestObject(q1Match)){
q1a2.x = startX;
q1a2.y = startY;
non.visible = true;
oui.visible = false;
}
if(q2a2.hitTestObject(q2Match)) {
q2a2.x = q2Match.x;
q2a2.y = q2Match.y;
q2a1.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
q2a2.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
q2a1.buttonMode = false;
q2a2.buttonMode = false;
oui.visible = true;
non.visible = false;
}
if(q2a1.hitTestObject(q2Match)){
q2a1.x = startX;
q2a1.y = startY;
non.visible = true;
oui.visible = false;
}
if(q3a2.hitTestObject(q3Match)) {
q3a2.x = q3Match.x;
q3a2.y = q3Match.y;
q3a1.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
q3a2.removeEventListener(MouseEvent.MOUSE_DOWN, item_onMouseDown);
q3a1.buttonMode = false;
q3a2.buttonMode = false;
oui.visible = true;
non.visible = false;
}
if(q3a1.hitTestObject(q3Match)){
q3a1.x = startX;
q3a1.y = startY;
non.visible = true;
oui.visible = false;
}
}
请帮忙! T_T
【问题讨论】:
标签: actionscript-3 movieclip flash-cs3