<?xml version="1.0" encoding="utf-8"?> <Application xmlns="http://www.adobe.com/2006/mxml" backgroundColor="white" fontSize="12" creationComplete="initApp()" layout="absolute" xmlns:objecthandles="com.roguedevelopment.objecthandles.*" cornerRadius="2" backgroundGradientAlphas="[0.78, 0.78]"> <Style> Canvas{ font-family:Arial; } </Style> <Script> <!--[CDATA[ import mx.effects.EffectTargetFilter; import mx.effects.EffectManager; import mx.effects.Effect; import mx.events.EffectEvent; import mx.effects.Move; import mx.messaging.channels.StreamingAMFChannel; import com.adobe.serialization.json.*; import mx.core.UITextField; import mx.controls.Label; import mx.messaging.AbstractConsumer; import mx.automation.delegates.controls.TextInputAutomationImpl; import mx.events.ListEvent; import flash.events.TextEvent; import mx.containers.Panel; import mx.events.ColorPickerEvent; import mx.controls.Alert; import flash.events.MouseEvent; import mx.events.NumericStepperEvent; import mx.events.MoveEvent; import mx.controls.TextArea; import mx.controls.Label; import flash.external.*; import mx.events.ResizeEvent; import mx.controls.Alert; import mx.events.CloseEvent; internal function initApp():void { //供外部調用的事件 //添加標籤 ExternalInterface.addCallback("addControl",addControl); //刪除標籤 ExternalInterface.addCallback("deleteControl",deleteControl); //改變顏色(1-7) ExternalInterface.addCallback("setColor",setColor); //編輯文本 ExternalInterface.addCallback("setText",setText); //設置字體樣式 ExternalInterface.addCallback("setFontFamily",setFontFamily); ExternalInterface.addCallback("setFontBold",setFontBold); ExternalInterface.addCallback("setFontItalic",setFontItalic); ExternalInterface.addCallback("setFontUnderline",setFontUnderline); ExternalInterface.addCallback("setFontSize",setFontSize); //設置文件對齊方式 ExternalInterface.addCallback("setAlignLeft",setAlignLeft); ExternalInterface.addCallback("setAlignRight",setAlignRight); ExternalInterface.addCallback("setAlignCenter",setAlignCenter); //設置背景圖片 ExternalInterface.addCallback("setBackgroundImage",setBackgroundImage); //獲取Label ExternalInterface.addCallback("getInfo", getInfo); //設置label信息 ExternalInterface.addCallback("setLabel", getAllLabel); //返回是否有當前對象 ExternalInterface.addCallback("getActiveLabel", getActiveLabel); Image = Application.application.parameters.ImageUrl; setBackgroundImage(Image); var labelinfo:String = application.parameters.LabelInfo; if(labelinfo!= null) getAllLabel(labelinfo); canvas.width = application.parameters.SceneWidth; canvas.height = application.parameters.SceneHeight; } //聲明一個label變量 [Bindable] public var activeObj:Label; //返回是否有當前對象 public function getActiveLabel():Boolean { if(activeObj==null) return false; return true; } //改變內容 public function setText(str:String):void { if(activeObj== null){ return ; } else{ var nNum:int = 0; var nMax:int = 0; var pMax:int = 0; for(var i:int=0;i<str.length;i++){ if(str.indexOf(" ",i) != -1){ i=str.indexOf(" ",i)+4; nMax = i-pMax >= nMax ? i-pMax : nMax;//記錄最長行數 nNum = nNum+1;//記錄幾行 pMax=i; } } activeObj.parent.height=20+nNum*20;//計算行數 activeObj.height=activeObj.parent.height; var w:int = nMax==0 ? 30 : nMax*5;//計算行寬 activeObj.parent.width =w; activeObj.width=activeObj.parent.width; activeObj.htmlText = str; } } //獲取以存儲Label private function getAllLabel(str:String):void { if(str==null) return; var arrayLabel:Array = JSON.decode(str); //調用回綁方法 goBackAllLabel(arrayLabel); } //回綁label標籤 public function goBackAllLabel(array:Array):void { //遍歷中所有的Label for each(var label:Object in array){ var obj:ObjectHandles = new ObjectHandles(); var labelModel:Label = new Label(); obj.x = label.x; obj.y = label.y; labelModel.width = label.width; labelModel.height = label.height; labelModel.setStyle("fontSize",label.fontSize); labelModel.setStyle("fontFamily",label.fontFamily); labelModel.setStyle("textAlign",label.textAlign); labelModel.setStyle("textDecoration",label.textDecoration); labelModel.setStyle("color",label.color); labelModel.htmlText = label.text; //顯示原來的label if(label.text!=null){ obj.addChild(labelModel); obj.addEventListener(ResizeEvent.RESIZE,setChildWidth); obj.addEventListener(MoveEvent.MOVE,maskMouseHanlder); canvas.addChild(obj); } } } //設置字體類型 public function setFontFamily(fontName:String):void{ if(activeObj==null) return; activeObj.setStyle("fontFamily", fontName); } //設置粗體 public function setFontBold():void { if(activeObj==null) return; switch (activeObj.getStyle("fontFamily")) { /* case "bold": activeObj.setStyle("fontWeight","normal"); break; case "normal": activeObj.setStyle("fontWeight","bold"); break; */ case "BookAntiqua": activeObj.setStyle("fontFamily","BookAntiquaB"); break; case "BookAntiquaB": activeObj.setStyle("fontFamily","BookAntiqua"); break; case "TimesNewRoman": activeObj.setStyle("fontFamily","TimesNewRomanB"); activeObj.setStyle("fontWeight","bold"); break; case "TimesNewRomanB": activeObj.setStyle("fontFamily","TimesNewRoman"); activeObj.setStyle("fontWeight","normal"); break; case "Arial": activeObj.setStyle("fontFamily","ArialB"); activeObj.setStyle("fontWeight","bold"); break; case "ArialB": activeObj.setStyle("fontFamily","Arial"); activeObj.setStyle("fontWeight","normal"); break; case "ComicSansMS": activeObj.setStyle("fontFamily","ComicSansMSB"); break; case "ComicSansMSB": activeObj.setStyle("fontFamily","ComicSansMS"); break; case "FreestyleScriptB": activeObj.setStyle("fontFamily","FreestyleScript"); break; case "FreestyleScript": activeObj.setStyle("fontFamily","FreestyleScriptB"); break; case "CastellarB": activeObj.setStyle("fontFamily","Castellar"); break; case "Castellar": activeObj.setStyle("fontFamily","CastellarB"); break; case "CooperBlack": activeObj.setStyle("fontFamily","CooperBlackB"); break; case "CooperBlackB": activeObj.setStyle("fontFamily","CooperBlack"); break; } } //設置斜體 public function setFontItalic():void { if(activeObj==null) return; if(activeObj.getStyle("fontStyle")=="italic") { activeObj.setStyle("fontStyle", "normal"); } else { activeObj.setStyle("fontStyle", "italic"); } } //是否有下劃線 public function setFontUnderline():void { if(activeObj==null) return; if(activeObj.getStyle("textDecoration")=="none") { activeObj.setStyle("textDecoration","underline"); } else{ activeObj.setStyle("textDecoration","none"); } } //是否居左 public function setAlignLeft():void { if(activeObj==null) return; activeObj.setStyle("textAlign","left"); } //是否居右 public function setAlignRight():void { if(activeObj==null) return; activeObj.setStyle("textAlign","right"); } //是否居中 public function setAlignCenter():void { if(activeObj==null) return; activeObj.setStyle("textAlign","center"); } //設置字體 //1,Calibri新的,2,Arial系統有,3,Book Antiqua新的,4,Cooper Black新的, //5,Comic Sans MS系統有,6,Castellar新的,7,Freestyle Script新的,自定義字體啊,8,Times New Roman系統有 [Embed(source = "font/Discipuli Britannica.ttf", fontName = "CooperBlack", mimeType = "application/x-font")] private var CooperBlack:Class; [Embed(source = "font/Discipuli Britannica Bold.ttf", fontName = "CooperBlackB", mimeType = "application/x-font")] private var CooperBlackB:Class; [Embed(source = "font/Discipuli Britannica.ttf", fontName = "Calibri", mimeType = "application/x-font")] private var Calibri:Class; [Embed(source = "font/Discipuli Britannica Bold.ttf", fontName = "CalibriB", mimeType = "application/x-font")] private var CalibriB:Class; [Embed(source = "font/Discipuli Britannica.ttf", fontName = "Castellar", mimeType = "application/x-font")] private var Castellar:Class; [Embed(source = "font/Discipuli Britannica Bold.ttf", fontName = "CastellarB", mimeType = "application/x-font")] private var CastellarB:Class; [Embed(source = "font/Discipuli Britannica.ttf", fontName = "FreestyleScript", mimeType = "application/x-font")] private var FreestyleScript:Class; [Embed(source = "font/Discipuli Britannica Bold.ttf", fontName = "FreestyleScriptB", mimeType = "application/x-font")] private var FreestyleScriptB:Class; [Embed(source = "font/BKANT.TTF", fontName = "BookAntiqua", mimeType = "application/x-font")] private var BookAntiqua:Class; [Embed(source = "font/ANTQUAB.TTF", fontName = "BookAntiquaB", mimeType = "application/x-font")] private var BookAntiquaB:Class; [Embed(source = "font/comic.ttf", fontName = "Comic Sans MS", mimeType = "application/x-font")] private var ComicSansMS:Class; [Embed(source="font/comicbd.ttf", fontName = "Comic Sans MS B", mimeType = "application/x-font")] private var ComicSansMSB:Class; [Embed(source = "font/arial.ttf", fontName = "Arial", mimeType = "application/x-font")] private var Arial:Class; [Embed(source = "font/arialbd.ttf", fontName = "ArialB", mimeType = "application/x-font")] private var ArialB:Class; [Embed(source = "font/TIMES.TTF", fontName = "Times New Roman", mimeType = "application/x-font")] private var TimesNewRoman:Class; [Embed(source = "font/timesbd.ttf", fontName = "Times New Roman B", mimeType = "application/x-font")] private var TimesNewRomanB:Class; //設置背景圖 [Embed(source = "image/30.jpg")] [Bindable] private var Image:String; //設置顏色 public function setColor(col:String):void { if(activeObj==null) return; activeObj.setStyle("color",col); } //字體大小處理 private function setFontSize(fontSize:Number):void { if(activeObj==null) return; activeObj.setStyle("fontSize",fontSize); } //添加一個標籤 public function addControl(styleInfo : Object):void{ var obj:ObjectHandles = new ObjectHandles(); obj.id = "Obj"+Math.ceil(Math.random()*100); var lab:Label = new Label(); lab.x = 0; lab.y = 0; lab.id = "lab"+Math.ceil(Math.random()*100); lab.htmlText = "label"; if(styleInfo!=null) { lab.setStyle("fontSize", styleInfo.FontSize); lab.setStyle("fontFamily", styleInfo.FontFamily); } obj.addChild(lab); obj.addEventListener(ResizeEvent.RESIZE,setChildWidth); obj.addEventListener(MoveEvent.MOVE,maskMouseHanlder); canvas.addChild(obj); obj.select(); activeObj = lab; } //執行刪除操作 public function deleteControl():void { if(activeObj != null){ canvas.removeChild(activeObj.parent); activeObj = null; } } //褫眕扢离迍嶺湮苤 private function setChildWidth(event:ResizeEvent):void{ //設置寬度 var pw:int = canvas.width; var ph:int = canvas.height; var obj:ObjectHandles = event.target as ObjectHandles; if(obj.x + obj.width <= pw){ activeObj.width = obj.width; } else{ obj.width = activeObj.width; } if(obj.y + obj.height<= ph){ activeObj.height = obj.height; }else{ obj.height=activeObj.height; } } //獲取當前活動的對象 private function DownClick(event : MouseEvent):void { var x : Number = mouseX; var y : Number = mouseY; var arrPoint : Array = getObjectsUnderPoint(new Point(x,y)); if(arrPoint.length<5) { (activeObj.parent as ObjectHandles).deselect(); activeObj = null; ExternalInterface.call("SWFDesignText.instances.SWFDesignText.setRelease"); } for each (var temp : Object in arrPoint) { if(temp.parent as Label) { //提取當前控件 activeObj = new Label(); activeObj = temp.parent as Label; //為界面賦值 ExternalInterface.call("SWFDesignText.instances.SWFDesignText.callBackInfo",activeObj.htmlText, activeObj.getStyle("fontFamily"), activeObj.getStyle("fontSize")); (activeObj.parent as ObjectHandles).select(); } } } //執行調用外部方法 public function setBackgroundImage(url:String):void { canvas.setStyle("backgroundImage",url); } //本方法供外部javaScript調用內部信息 public function getInfo():String { //讀取容器中的所有label對象 var contorlArray:Array = canvas.getChildren(); var labControl:Label;//標籤暫時儲存變量 var arrControls:Array = new Array(); if(contorlArray.length>0) { for each (var temp : Object in contorlArray) { if(temp as ObjectHandles) { var Obj:ObjectHandles = temp as ObjectHandles; var arryChild:Array = Obj.getChildren(); for each(var tempChild : Object in arryChild){ if(tempChild as Label) { labControl = new Label(); labControl = tempChild as Label; //自定義一個類型 var labobj:objectmodel = new objectmodel(); //提取當前控件 labobj.id = labControl.id; labobj.x = labControl.parent.x; labobj.y = labControl.parent.y; labobj.text = labControl.htmlText.replace(/<//p>/gi," ").replace(/<(.*?)>/gi,""); labobj.fontFamily = labControl.getStyle("fontFamily"); labobj.fontSize = labControl.getStyle("fontSize"); labobj.textAlign = labControl.getStyle("textAlign"); labobj.textDecoration = labControl.getStyle("textDecoration"); labobj.color = labControl.getStyle("color"); labobj.isBold = labControl.getStyle("fontWeight")=="Bold" ? "true":"false"; labobj.isItalic = labControl.getStyle("fontStyle")=="italic" ? "ture":"false"; labobj.width = labControl.width; labobj.height = labControl.height; arrControls.push(JSON.encode(labobj)); } } } } return "[" + arrControls.join(",") + "]"; } else { return ""; } } public function maskMouseHanlder(event:MoveEvent):void { //锁定范围 if(activeObj.parent.x<0) { activeObj.parent.x = 0; }else if(activeObj.parent.x+activeObj.parent.width >= canvas.width) { activeObj.parent.x = canvas.width-activeObj.parent.width; } if(activeObj.parent.y<0) { activeObj.parent.y=0; }else if(activeObj.parent.y+activeObj.parent.height>= canvas.height) { activeObj.parent.y = canvas.height-activeObj.parent.height; } } ]]--> </Script> <objecthandles:ObjectHandles id="obh" resize="setChildWidth(event);" move="maskMouseHanlder(event)"> </objecthandles:ObjectHandles> <Canvas id="canvas" backgroundImage="{Image}" width="100%" height="100%" horizontalScrollPolicy="auto" verticalScrollPolicy="auto" mouseDown="DownClick(event)" y="0" x="0"> </Canvas> </Application>