将游戏排序项目拖放到三个目标



请我需要一些帮助。我花了2个星期的时间尝试在CS4 ActionScript 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的基本编码技能。

这是我所获得的,但无法弄清楚如何获得拖放部分以检查它是否在正确的位置。如果答案正确,则可以创建一个新的拖放。我创建了一个名为"答案1"的答案目标,

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] ;

感谢您的帮助。我不知道我是否在正确的轨道上做我需要做的事情。

部分答案

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;

最新更新