Back to the Main Page
All of these examples assume that the library has been imported as noted in the Documentation.
This is an example of implementing drag-and-drop and collision detection functionality on a web page using the DP_PanelManager component provided by the DepressedPress.
Drag the smaller, blue panel over the larger, green panel: when a collision between the panels is detected the smaller panel will change color. Try dragging the smaller, blue panel over the text to see the opacity effect.
The distance between the two panels (as returned from the "getDistanceFrom()" method) will be displayed in the larger panel. Note how it changes as you move the panel around.
The code for the example:
<div id="ExamplePanel" style="text-align:center; height: 100px;"></div> <script type="text/javascript"> PanelManager = new DP_PanelManager(); // Get the Target Pos var TargetPos = PanelManager.addPanel("ExamplePanel").getPosition(); // Create Panel out of the Body Element myBody = PanelManager.addPanel("BODY"); // Capture mouse movements myBody.addEvent("mousemove", dragger); // The dragger function - moves whatever element is in the "dragger.Element" container to match the mouse position function dragger(Event) { if ( dragger.Element ) { CurMousePos = PanelManager.getMousePosition(Event); dragger.Element.setPosition([CurMousePos[0] - dragger.ClickOffset[0], CurMousePos[1] - dragger.ClickOffset[1]]); // Test Collision Detection if ( dragger.Element.hasCollisionWith("myStaticPanel") ) { dragger.Element.style.backgroundColor = "red" } else { dragger.Element.style.backgroundColor = "blue" }; myStaticPanel.load("<div style='text-align: center'>" + dragger.Element.getDistanceFrom("myStaticPanel") + "</div>"); }; }; // Create containers for the Dragged object dragger.Element = null; dragger.ClickOffset = [0,0]; // Create a Static Panel mySP = PanelManager.newPanel("myStaticPanel"); // Style the Panel mySP.style.backgroundColor = "green"; mySP.style.color = "white"; mySP.style.fontWeight = "bold"; // Size and position mySP.setPosition([TargetPos[0] + 10, TargetPos[1] + 175]); mySP.setSize([51, 101]); // Display the panel mySP.setDisplay("show"); // Create a draggable Panel myDP = PanelManager.newPanel("myDragPanel"); // Style the Panel myDP.style.backgroundColor = "blue"; myDP.style.color = "white"; myDP.style.fontWeight = "bold"; // Size and position myDP.setPosition([TargetPos[0] + 10, TargetPos[1] + 300]); myDP.setSize([51, 51]); // Load Content myDP.load("<div style='text-align: center'>Drag Me!</div>"); // Display the panel myDP.setDisplay("show"); // Register Events myDP.addEvent("mousedown", startDrag); myDP.addEvent("mouseup", endDrag); // Start Drag Event function startDrag(Event) { // Set the Current Panel Opacity this.setOpacity(50, 0, 100); // Set the dragger dragger.Element = this; // Get the Current Mouse Position var CurMousePos = PanelManager.getMousePosition(Event); // Get the Current Panel Position var CurPanelPos = this.getPosition(); // Calculate the Panel Click Position dragger.ClickOffset = [(CurMousePos[0] - CurPanelPos[0]), (CurMousePos[1] - CurPanelPos[1])]; }; // End Drag Event function endDrag(Event) { // Set the Current Panel Opacity this.setOpacity(100, 0, 100); // Reset the dragger properties (nothing is being dragged dragger.Element = null; dragger.ClickOffset = [0,0]; }; </script>