Перетащите игру сортировать предметы на три цели

Пожалуйста, мне нужна помощь. Я потратил 2 недели на то, чтобы сделать игру с перетаскиванием мышью в cs4 actioncript 3.0 и собираюсь сдаться. До сих пор я получал помощь, но лучшее, что я получил, это попытаться начать с нуля, а не декомпилировать чужую работу. так вот у меня есть массив, который выглядит так

var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "Nuts and boltsl";
answerdest[1] = "1";
answername[2] = "water";
answerdest[2] = "2";
answername[3] = "gold";
answerdest[3] = "3";
answername[4] = "Iron";
answerdest[4] = "3";

Мне нужно три цели и возможность разместить название элемента в моем массиве (это всего лишь его небольшой фрагмент) на экране, если он упал на цель в соответствии с номером ответа, отвечающим за этот элемент, в который он помещен. столбец, и следующий элемент мой массив появляется. Если нет, он возвращается в исходное положение. Кажется, это должно быть легко сделать, но я не учитель информатики. Я учитель естественных наук, который пытается что-то сделать для своего ученика. У меня есть базовые навыки кодирования для CS4.

Это насколько я получил, но не могу понять, как получить перетаскивание, чтобы проверить, находится ли оно в правильном месте. И получить, чтобы создать новую возможность перетаскивания, если ответ правильный. Я создал цель ответа с именем "Answer1",

var objectoriginalX:Number;
var objectoriginalY:Number;

Atom.buttonMode = true;
Atom.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Atom.addEventListener(MouseEvent.MOUSE_UP, dropObject);

Matter.buttonMode = true;
Matter.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Matter.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObject(event:MouseEvent):void {
    event.target.startDrag();
    event.target.parent.addChild(event.target);
}       
var dropCount:int = 0;
var dbCount:int=0;
var dbutton0;
function dropObject (event:MouseEvent):void
{
    {
        event.target.stopDrag();
        var targetName = Answer1;
        trace (targetName);
        var matchingTarget:DisplayObject = getChildByName(targetName);
        if (event.target.dropTarget != null && event.target.dropTarget.parent == answerdest[1])
        {
            event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
            event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
            event.target.buttonMode = false;
            alpha = .8
            dropCount ++;
            event.target.x = 10
            event.target.y = (Number(dropCount) * 100);
            trace ("hit");
            trace (dropCount);
        } else 
        {
        event.target.x = 100;
        event.target.y = 111;
        trace ("miss");
        }
    } 
}

var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "Nuts and boltsl";
answerdest[1] = "Answer1";
answername[2] = "water";
answerdest[2] = "2";
answername[3] = "gold";
answerdest[3] = "3";
answername[4] = "Iron";
answerdest[4] = "3";
text3
text3.text = answername[1];

var myText:TextField = new TextField();
Atom.addChild(myText);
myText.text = answername[1] ;

Спасибо за вашу помощь. Я не знаю, нахожусь ли я на правильном пути, чтобы делать то, что мне нужно.

1 ответ

частичный ответ

var answername:Array = new Array();
var answerdest:Array = new Array();
answername[0] = "gravel";
answerdest[0] = "1";
answername[1] = "Nuts and boltsl";
answerdest[1] = "Answer1";
answername[2] = "water";
answerdest[2] = "2";
answername[3] = "gold";
answerdest[3] = "3";
answername[4] = "Iron";
answerdest[4] = "3";
text3
text3.text = answername[1];

Это довольно грязно. Я собираюсь показать немного лучше. Даже мой метод здесь не самый лучший, но он достаточно похож на то, что вы делаете, чтобы его не было сложно принять.

var answer:Array = [
    {_name:"gravel",dest:"1"},
    {_name:"Nuts and bolts",dest:"Answer1"},
    {_name:"water",dest:"2"},
    {_name:"gold",dest:"3"},
    {_name:"Iron",dest:"4"}
];
text3 // what is this supposed to do? I didn't get rid of it. But just a string sitting in the middle of your code should be throwing an error. I'd get rid of it. 
//text3.text = answername[1]; // now we have a better way!
text3.text = answer[1]._name;

Я знаю, что это не поможет решить вашу проблему, но давайте очистим ваш код, и в конце концов мы разберемся с этим. Я просто не мог объяснить это просто комментарием.

var objectoriginalX:Number;
var objectoriginalY:Number; 

Atom.buttonMode = true;
Atom.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Atom.addEventListener(MouseEvent.MOUSE_UP, dropObject);

Matter.buttonMode = true;
Matter.addEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
Matter.addEventListener(MouseEvent.MOUSE_UP, dropObject);

function pickupObject(event:MouseEvent):void {
    event.target.startDrag(); 
    event.target.parent.addChild(event.target);
}        
var dropCount:int = 0;
var dbCount:int=0;
var dbutton0;
function dropObject (event:MouseEvent):void
{
         event.target.stopDrag(); 
         var targetName = Answer1;
         trace (targetName);
         var matchingTarget:DisplayObject = getChildByName(targetName);
         if (event.target.dropTarget != null && event.target.dropTarget.parent == answer[1].dest) // red flag here! 
//dest is a String and .parent is a MovieClip. 
//They can never be equal. This block of code would never run like this. 
        {
            event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickupObject);
            event.target.removeEventListener(MouseEvent.MOUSE_UP, dropObject);
            event.target.buttonMode = false;
            alpha = .8
            dropCount ++;
            event.target.x = 10
            event.target.y = (Number(dropCount) * 100);
            trace ("hit"); 
            trace (dropCount);
        } else 
        {
        event.target.x = 100;
        event.target.y = 111;
        trace ("miss");
        } 
} 

var answer:Array = [
    {_name:"gravel",dest:"1"},
    {_name:"Nuts and bolts",dest:"Answer1"},
    {_name:"water",dest:"2"},
    {_name:"gold",dest:"3"},
    {_name:"Iron",dest:"4"}
];
text3.text = answer[1]._name;

var myText:TextField = new TextField();
Atom.addChild(myText);
myText.text = answer[1]._name;
Другие вопросы по тегам