function configureTool(){ var curr_toolObj = fl.tools.activeTool; curr_toolObj.setIcon("callout.png"); curr_toolObj.setMenuString("Callout Tool"); curr_toolObj.setToolName("Callout Tool"); curr_toolObj.setToolTip("Callout Tool"); } function activate(){ curr_toolObj = fl.tools.activeTool; curr_toolObj.setPI("shape"); mouseDown = mouseDownFunc; mouseUp = mouseUpFunc; mouseMove = mouseMoveFunc; } function mouseDownFunc(){ startPoint = fl.tools.penDownLoc; transformPoint(startPoint, fl.getDocumentDOM().viewMatrix); startPoint = fl.tools.snapPoint(startPoint); fl.drawingLayer.beginDraw(); } function mouseMoveFunc(){ if(fl.tools.mouseIsDown){ fl.drawingLayer.beginFrame(); penPoint = fl.tools.penLoc; transformPoint(penPoint, fl.getDocumentDOM().viewMatrix); penPoint = fl.tools.snapPoint(penPoint); penPoint = fl.tools.constrainPoint(startPoint, penPoint); if(penPoint.x > startPoint.x){ offset = -20; } else { offset = 20; } call_path = fl.drawingLayer.newPath(); call_path.addPoint(startPoint.x, startPoint.y); call_path.addPoint(penPoint.x + offset, penPoint.y); call_path.addPoint(penPoint.x, penPoint.y); call_path.addPoint(penPoint.x, penPoint.y - 20); call_path.addPoint(penPoint.x, penPoint.y + 20); fl.drawingLayer.drawPath(call_path); fl.drawingLayer.endFrame(); } } function mouseUpFunc(){ fl.drawingLayer.endDraw(); call_path.makeShape(); curr_toolObj.setPI("text"); mouseUp = nullFunc; mouseMove = nullFunc; mouseDown = addTextBox; alert("Set font properties and click on the stage."); } function nullFunc(){ } function addTextBox(){ curr_doc = fl.getDocumentDOM(); testResult = curr_doc.xmlPanel(fl.configURI+"/Tools/callout.xml"); if(testResult.dismiss == "accept"){ curr_lib = curr_doc.library; var textName = "Callout Text"; var tryCount = 0; while(curr_lib.itemExists(textName)){ tryCount++; textName = "Callout Text" + tryCount; } curr_lib.addNewItem("movie clip", textName); curr_lib.editItem(textName); curr_doc.addNewText({top:0, left:0, right:10, bottom:10}); var selArray = new Array(); selArray[0] = curr_doc.getTimeline().layers[0].frames[0].elements[0]; curr_doc.selection = selArray; curr_text = curr_doc.selection[0]; curr_text.autoExpand = true; curr_text.setTextString(testResult.text); curr_doc.exitEditMode(); curr_lib.addItemToDocument({x:0, y:0}, textName); curr_doc.moveSelectionBy(penPoint); if(penPoint.x > startPoint.x){ curr_doc.moveSelectionBy({x:curr_doc.selection[0].width/2+10, y:0}); } else { curr_doc.moveSelectionBy({x:-curr_doc.selection[0].width/2-10, y:0}); } curr_doc.selectNone(); } else { alert("Callout Text cancelled."); } } function setCursor(){ fl.tools.setCursor(0); } function transformPoint(aPoint, matrix){ var x = aPoint.x * matrix.a + aPoint.y * matrix.c + matrix.tx; var y = aPoint.x * matrix.b + aPoint.y * matrix.d + matrix.ty; aPoint.x = x; aPoint.y = y; } function constrain45(p1, p2) { if (fl.tools.shiftIsDown) { var dx = Math.abs(p2.x - p1.x); var dy = Math.abs(p2.y - p1.y); var offset = Math.max(dx, dy); if(p2.y < p1.y) { p2.y = p1.y - offset; } else { p2.y = p1.y + offset; } if(p2.x > p1.x) { p2.x = p1.x + offset; } else { p2.x = p1.x - offset; } } }