释放cs4时,对象不会返回到原始位置

时间:2016-12-09 00:46:29

标签: drag-and-drop position sprite actionscript-2 flash-cs4

我正在进行拖放活动,其中多个项目将放置在同一目标上。我在主时间线上有动作代码,然后是附加到精灵的代码。

问题:

  1. 当我释放对象时,如果它是正确的,它应该捕捉到该部分的顶部。如果不正确,则应返回其原始方向以便再次拾取。不幸的是它停留在我放置它的位置,并且当它不正确时不会移回原始位置。我已经修复了这个flash文件的其他问题,如果代码应该在主时间线或精灵中,但是在释放对象后这似乎没有效果。在脚本末尾附近有_root.rlamp1.gotoAndPlay(1)如果答案不正确,这是一个蜂鸣器。这是正常的。

  2. 我不知道这些是否是相关项目,但如果给出了正确的位置,我希望下一个项目从原始位置开始,但它从我的鼠标而不是原始位置开始。我对编码比较陌生,正在尝试为我的科学课做一个活动,以获得即时反馈,看看他们是否理解概念。

  3. 感谢您的帮助。

      // [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 个答案:

答案 0 :(得分:0)

问题是精灵代码中有拼写错误的变量名称和属性。

替换这些行

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

用这些行

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

并且您的代码应该可以使用。