<?xml version="1.0"?> <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:EmbeddedBase01; } Alert{ background-color:#eeafff; alternating-item-colors:red; stroke-color:#FFFFFF; } </Style> <Script> <![CDATA[ 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("setImageSize",setImageSize); //添加標籤 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); getAllLabel(); } //改變內容 public function setText(str:String):void { lab_obj.text=str; } //獲取以存儲Label private function getAllLabel():void { var resultStr:String=ExternalInterface.call("GetAllLabel"); var array:Array=JSON.decode(resultStr); //調用回綁方法 goBackAllLabel(array); } //回綁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.fontStyle); labelModel.setStyle("textAlign",label.textAlign); labelModel.setStyle("textDecoration",label.textDecoration); labelModel.setStyle("color",label.color); labelModel.text=label.text; //顯示原來的label obj.addChild(labelModel); obj.addEventListener(ResizeEvent.RESIZE,setChildWidth); canvas.addChild(obj); } } //設置字體類型 public function setFontFamily(fontName:String):void{ lab_obj.setStyle("fontFamily", fontName); } //設置粗體 public function setFontBold():void { switch (lab_obj.getStyle("fontFamily")) { case "EmbeddedBase04B": lab_obj.setStyle("fontFamily","EmbeddedBase04"); break; case "EmbeddedBase04": lab_obj.setStyle("fontFamily","EmbeddedBase04B"); break; } } //設置斜體 public function setFontItalic():void { if(lab_obj.getStyle("fontStyle")=="italic") { lab_obj.setStyle("fontStyle", "normal"); } else { lab_obj.setStyle("fontStyle", "italic"); } } //是否有下劃線 public function setFontUnderline():void { if(lab_obj.getStyle("textDecoration")=="none") { lab_obj.setStyle("textDecoration","underline"); } else{ lab_obj.setStyle("textDecoration","none"); } } //是否居左 public function setAlignLeft():void { lab_obj.setStyle("textAlign","left"); } //是否居右 public function setAlignRight():void { lab_obj.setStyle("textAlign","right"); } //是否居中 public function setAlignCenter():void { lab_obj.setStyle("textAlign","center"); } //設置字體 [Embed(source="font/trebuc.TTF", fontName="EmbeddedBase01", mimeType="application/x-font")] private var EmbeddedBase01:Class; [Embed(source="font/Discipuli Britannica Bold.ttf", fontName="EmbeddedBase04B", mimeType="application/x-font")] private var EmbeddedBase04B:Class; [Embed(source="font/youarewhatyoueat.ttf", fontName="EmbeddedBase02", mimeType="application/x-font")] private var EmbeddedBase02:Class; [Embed(source="font/verdana.TTF", fontName="EmbeddedBase03", mimeType="application/x-font")] private var EmbeddedBase03:Class; [Embed(source="font/Discipuli Britannica.ttf", fontName="EmbeddedBase04", mimeType="application/x-font")] private var EmbeddedBase04:Class; //設置背景圖 [Embed(source="image/30.jpg")] [Bindable] private var Image:String; //設置顏色 public function setColor(col:String):void { lab_obj.setStyle("color",col); } //字體大小處理 private function setFontSize(fontSize:Number):void { lab_obj.setStyle("fontSize",fontSize); } //聲明一個label變量 public var lab_obj:Label; //添加一個標籤 public function addControl():void{ var obj:ObjectHandles=new ObjectHandles(); obj.id="Obj"+Math.ceil(Math.random()*100); var lab:Label=new Label(); //砃敃怢奻氝樓偌聽 obj.addChild(lab); obj.addEventListener(ResizeEvent.RESIZE,setChildWidth); canvas.addChild(obj); //覃淕偌聽腔弇离 lab.x=0; lab.y=0; lab.id="lab"+Math.ceil(Math.random()*100); lab.text="Label"; lab_obj=null; } //執行刪除操作 public function deleteControl():void { if(lab_obj!=null){ showAlert(); }else{ Alert.show("請先擇對象!"); } } //角本提示 private var alert:Alert; private function showAlert():void { var text:String = "你確定刪除!"; var title:String = "標示"; alert = Alert.show(text, title, Alert.YES | Alert.NO); alert.addEventListener(CloseEvent.CLOSE, alert_close); } private function alert_close(evt:CloseEvent):void { switch (evt.detail) { case Alert.YES: canvas.removeChild(lab_obj.parent); lab_obj=null; break; } } //褫眕扢离迍嶺湮苤 private function setChildWidth(event:ResizeEvent):void{ //設置寬度 lab_obj.width=event.target.width; } //獲取當前活動的對象 private function over(event : MouseEvent):void { var x : Number = mouseX; var y : Number = mouseY; var arr : Array = getObjectsUnderPoint(new Point(x,y)); for each (var temp : Object in arr) { if(temp.parent as Label) { //提取當前控件 lab_obj=new Label(); lab_obj=temp.parent as Label; //為界面賦值 ExternalInterface.call("setTextContext",lab_obj.text); } } } //執行調用外部方法 public function setBackgroundImage(url:String):void { canvas.setStyle("backgroundImage",url); } //設置圖片大小 public function setImageSize(strWidth:Number,strHeigth:Number):void { //設置圖片的寬和高 Application.application.width=strWidth; Application.application.height=strHeigth; canvas.width=strWidth; canvas.height=strHeigth; } //本方法供外部javaScript調用內部信息 public function getInfo():String { //讀取容器中的所有label對象 var contorlArray:Array=canvas.getChildren(); var labContorl:Label;//標籤暫時儲存變量 var str:String=""; if(contorlArray!=null) { 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) { labContorl=new Label(); labContorl=tempChild as Label; //自定義一個類型 var labobj:objectmodel=new objectmodel(); //提取當前控件 labobj.id=labContorl.id; labobj.x=labContorl.parent.x; labobj.y=labContorl.parent.y; labobj.text=labContorl.text; labobj.fontStyle=labContorl.getStyle("fontFamily"); labobj.fontSize=labContorl.getStyle("fontSize"); labobj.textAlign=labContorl.getStyle("textAlign"); labobj.textDecoration=labContorl.getStyle("textDecoration"); labobj.color=labContorl.getStyle("color"); labobj.isBold=labContorl.getStyle("fontWeight")=="Bold" ? "true":"false"; labobj.isItalic=labContorl.getStyle("fontStyle")=="italic"? "ture":"false"; labobj.width=labContorl.width; labobj.height=labContorl.height; //進行序列化 if(str==""){ str="["+JSON.encode(labobj); }else{ str+=","+JSON.encode(labobj); } } } } } return str+"]"; } else { return ""; } } ]]> </Script> <Canvas id="canvas" backgroundImage="{Image}" width="600" height="600" horizontalScrollPolicy="auto" verticalScrollPolicy="auto" mouseDown="over(event)" maxHeight="300" maxWidth="300" y="0" x="0"> <objecthandles:ObjectHandles id="obh" resize="setChildWidth(event);" autoLayout="true"> </objecthandles:ObjectHandles> </Canvas> </Application>