//****************************************************************************// // Drag&Drop Control device Version 0.85 // // Original filename dragcontrol.as // // (c) Copyright 2001-2003 All Rights Reserved // // Sergey Moisevich (MSA) webdevelop@softhome.net // // Created 8/05/2003 Last Modified 12/05/2003 // //****************************************************************************// // Request Flash Player 6 or higher // //****************************************************************************// // ** Create global control device $ref = _global.DragDevice = {}; $ref._dragdocks = []; // ** Public methods declaration // ** Register Movieclip or component is Drag Dock Component $ref.setDragDock = function(dock){ this.removeDragDock(dock); this._dragdocks.push(dock); } // Unregister Drag Dock Component $ref.removeDragDock = function(dock){ var l = this._dragdocks.length; if (l) { var i = 0; do { if (this._dragdocks[i] == dock){ this._dragdocks.splice(i,1); --l; return true; } } while (++i DragContol error: MovieClip for dragging is required.'); delete this._dragObject; delete this.onMouseUp; delete this.onMouseMove; return ; } if (dragObject.kind) dragObject.clip.startDrag.apply(dragObject.clip, dragObject.kind); else dragObject.clip.startDrag(false); // ????????? ???? dock ???????? ????????????!! if (dragObject.source == dragObject.clip) this._saveDock = dragObject.source; if (!dragObject.clip.onMouseMove) dragObject.clip.onMouseMove = function(){ updateAfterEvent(); }; } if (this._overDock && this._overDock.hitTest(_root._xmouse, _root._ymouse, true)){ this._overDock.onDragMove(dragObject, this._overDock._xmouse, this._overDock._ymouse); return ; } var dock = this._getDockAtCursor('onDragEnter'); if (!dock){ // ???????? ?? ?????? if (this._overDock) this._overDock.onDragLeave(dragObject, this._overDock._xmouse, this._overDock._ymouse); dragObject.accept = false; this._overDock = null; } else if (!this._overDock){ // ?? ???? ??????????? ????????? this._overDock = dock; dock.onDragEnter(dragObject, dragDock._xmouse, dragDock._ymouse); } else if (this._overDock != dock){ // ???? ???? ? ?????????? ? ????????? ? ??? ??????? this._overDock.onDragLeave(dragObject, this._overDock._xmouse, this._overDock._ymouse); dragObject.accept = false; this._overDock = dock; dock.onDragEnter(dragObject, dragDock._xmouse, dragDock._ymouse); } } $ref.addProperty( 'activated', function(){return this._activated;}, function(f){ f = Boolean(f); if (f) Mouse.addListener(this); else Mouse.removeListener(this); this._activated = f; } ); $ref._activated = false; ASSetPropFlags($ref, null, 1); ASSetPropFlags(_global, 'DragDevice', 1); delete $ref; //usage //Sorry, at present there is no more detailed help for this purpose. Try to use this example: //#include "script/dragcontol.as" function createBox (n, d, x, y){ var box = _root.createEmptyMovieClip(n, d); with (box){ _x = x; _y = y; beginFill (0xF1F1F1, 100); lineStyle (2, 0x00000, 100); moveTo (0, 0); lineTo (100, 0); lineTo (100, 100); lineTo (0, 100); lineTo (0, 0); endFill(); } } createBox('dock1', 1, 50, 50); createBox('dock2', 2, 250, 50); dock2.createTextField ('tf', 1, 0, 0, 100, 100); dock2.tf.selectable = false; dock2.tf.text = '0'; DragDevice.setDragDock(dock1); DragDevice.setDragDock(dock2); DragDevice.activated = true; dock1.onStartDrag = function (dragobj) { dragobj.clip = _root.createEmptyMovieClip('dragclip', 100); with (dragobj.clip){ _x = this._x; _y = this._y; beginFill (0xFF00FF, 50); lineStyle (1, 0x00000, 100); moveTo (0, 0); lineTo (100, 0); lineTo (100, 100); lineTo (0, 100); lineTo (0, 0); endFill(); } } dock1.onEndDrag = function (dragobj) { if (! dragobj.accept) { dragobj.clip.removeMovieClip(); } } dock2.onDragEnter = function (dragobj) { if (dragobj.source = dock1) { dragobj.accept = true; } dragobj.accept ? dragobj.clip._alpha = 50 : dragobj.clip._alpha = 100; } dock2.onDragLeave = function (dragobj) { dragobj.clip._alpha = 100;} dock2.onDragDrop = function (dragobj) { if (dragobj.accept) { dragobj.clip.removeMovieClip(); this.tf.text = Number(this.tf.text) + 1; } }