Объект не возвращается в исходное положение при отпускании CS4

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

Проблемы:

  1. Когда я отпускаю объект, если он правильный, он должен привязываться к верхней части этого раздела. Если он неправильный, он должен вернуться к своей первоначальной ориентации, чтобы его снова подобрали. К сожалению, он остается там, где я его разместил, и не возвращается обратно в исходное место, когда он неверен. Я исправил другие проблемы с этим файлом флэш-памяти, касающиеся того, что код должен находиться на главной временной шкале или в спрайте, но это, похоже, не дает эффекта после освобождения объекта. В конце сценария есть _root.rlamp1.gotoAndPlay(1) это зуммер, который гаснет, если ответ неверен. Это работает правильно.

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

Спасибо за вашу помощь.

  // [Action in Frame 1]

 answername = Array();
 answerdest = Array();
 answername[0] = "gravel";
 answerdest[0] = "1";
 answername[1] = "nuts and bolts";
 answerdest[1] = "1";
 answername[2] = "oxygen";
 answerdest[2] = "2";
 answername[3] = "helium";
 answerdest[3] = "2";
 answername[4] = "gold";
 answerdest[4] = "2";


        dbCount = 0;

        dbutton.duplicateMovieClip("dbutton" + dbCount,dbCount * 100);

        dbutton.visible = false;

        dbutton0.answer = answerdest[dbCount];

        dbutton0.theText.text = answername[dbCount];



    // This code is on the sprite and not on the main actionscript

   onClipEvent (load)
    {
        this.defx = _x;
        this.defy = _y;
        if (this.theText.text.length > 20)
        {
            this.theText._height = 31;
            this.theBox._height = 27;
        }
        else
        {

            this.theText._height = 19;
            this.theBox._height = 19;
        } // end else if
    }
    on (press)
    {
        if (this.noDrag !=true)
        {
            startDrag (this,false);
        }
    }


    on (release)
    {
        if (this.noDrag != true)
        {
            stopDrag ();
            if(this.hitTest(_root["dz" + this.answer]))
            {
                totalHeight = 0;
                for (v = 0; v < _root.dbCount; v++)
                {
                    if (_root["dbutton" + v].answer == this.answer)
                    {
                        totalHeight = totalHeight + _root["button" + v].theBox._height ;
                    } // end if
                } // end of for
                ++_root.dbCount;
                this .duplicateMovieClip("dbutton" + _root.dbCount, _root.dbCount * 100);
                _root["dbutton" + _root.dbCount]._x = this.defX;
                _root["dbutton" + _root.dbCount]._y = this.defY;
                _root["dbutton" + _root.dbCount].answer = _root.answerdest[_root.dbCount + 1];
                _root["dbutton" + _root.dbCount].theText.text = _root.answername[_root.dbCount +1];
                if (_root["dbutton" + _root.dbCount].theText.text == "undefined")
                {
                    _root["dbutton" + _root.dbCount].theText.text = "Finished!";
                    _root["dbutton" + _root.dbCount].noDrag = true;
                } // end if
                this.noDrag = true;
                this._y = _root["dz" + this.answer]._y + totalHeight;
                this._x = _root["dz" + this.answer]._x - _root["dz" + this.answer]._width / 2;
                ++_root["dz" + this.answer].numItems;
                _root.glamp1.gotoAndPlay (1);

            }
            else
            {
                this.X = this.defX;
                this._Y = this.defY;
                _root.rlamp1.gotoAndPlay(1);
            } // end if
        } // end else if
    }

1 ответ

Проблема в том, что в коде спрайта есть имена и свойства переменных с ошибками.

Замени эти строки

this.X = this.defX;
this._Y = this.defY;

с этими линиями

this._x = this.defx;
this._y = this.defy;

и ваш код должен работать.

Другие вопросы по тегам