こんなのをつくってみました。

GUIで文字は入力しづらいので(マスクやらなにやらあるから。。)一括入力します。

分解するとこうなってます。

図形(ポリライン)部分

文字部分

マスク部分

全体のObjectTree

家紋の画像は、都度つくるのはめんどいので、
【グレイスケールPNGで作成して、階調をアルファチャンネルに変換して、RGBで色をのせる】
ということをやってます。
pdfと組版と画像処理とc++とphpとjavascriptとhtml5とcss3とjQueryとjQueriUIとjQueryMobileとRadStudioとAndroidSDK/NDKとWordPressとWelcartを統合するエンジニア的視点。。廃止→as3とflashとflex 追加→柔道
datAr = new Array( {n:1, type:0, x:1.5, y:2.5}, {n:2, type:1, x:1.5, y:2.5}, {n:3, type:2, x:1.5, y:2.5} ); DG.dataProvider = datAr;ここに、datArはArrayであって、datAr[0].xは1.5という数値(Number)である。
datAr[0].x += 20;とすると、いつのまにやら、datAr[0].xがStringになっており、
datAr[0].x = Number(datAr[0].x) + 20;とすれば、無事に、21.5になるのだが。
public class spBase extends UIComponent{ 。。。 public var obj:Object; // データの参照が入るよ。 。。。 //実際には、このインスタンスに、以下のように設定 xxx.obj = maindata.a[0].b.c;要するに、
"maindata":{ "a":[ { "b":{ "c":{ "dat1":1, "dat2":2, "dat3":3 }, "c2":{ "cat1":1, "cat2":2, "cat3":3 } } } ] }って感じで。
item:Object = new Object; item.obj = mainData.a[0].b.c;で、デバッガで見た状況。
public class spBase extends UIComponent{ public var mother:Object; //-------------------- function spBase(){ } //-------------------- public function init(f:Object):void{ mother = f; this.addEventListener(Event.REMOVED_FROM_STAGE, removed); //------------------- // MouseDown //------------------- var own:Object = this; this.addEventListener(MouseEvent.MOUSE_DOWN, function (e:MouseEvent):void{ mother.app.getKAM().setMAll(own.fd,own.fu,own.fm,own.fo); } ); } //-------------------- protected function fd(e:MouseEvent):void{ trace("Down\n"); } protected function fu(e:MouseEvent):void{ trace("Up\n"); mother.app.getKAM().setMClear(); } protected function fm(e:MouseEvent):void{ trace("Move "); } protected function fo(e:MouseEvent):void{ trace("Over "); } //-------------------- // like a destructer //-------------------- private function removed(e:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, removed); } }
public class spItem extends soul.spBase{ override protected function fd(e:MouseEvent):void{ trace("spItem::Down\n"); } override protected function fu(e:MouseEvent):void{ trace("spItem::Up\n"); mother.app.getKAM().setMAll(null,null,null,null); } override protected function fm(e:MouseEvent):void{ trace("spItem::Move "); } override protected function fo(e:MouseEvent):void{ trace("spItem::Over "); } }
testobj = new soul.spItem(); testobj.init(mother);//mother:MXMLのthis
var loader = new Loader; loader.contentLoaderInfo.addEventListener(Event.COMPLETE,function(e){ var bmp = new Bitmap; bmp.bitmapData = loader.content.bitmapData.clone(); stage.addChild( bmp ); }); var urlfile = "http://localhost/ren2.jpg"; var UR=new URLRequest(urlfile); UR.method = URLRequestMethod.POST; loader.load(UR);まぁ、いままでとなんら変わることもなく実行できましたね。
var sp = new Sprite; sp.addChild(bmp); stage.addChild( sp );的な。
var temp : mx.controls.Image = new mx.controls.Image; temp.x = 30; temp.y = 85; temp.width = 205; temp.height = 216; temp.source = "http://localhost/ren2.jpg"; addElement(temp);ですかねー。
~~略~~ public function MD(e){ LL.text = "--M1---" + kam.getCS(); } public function MU(e){ LL.text = "--M2---" + kam.getCS(); } public function MM(e){ LL.text = "--M3---" + (ct++) + "/ " + kam.getCS(); } public function MO(e){ LL.text = "--M4---" + kam.getCS(); } ~~略~~ protected function application1_creationCompleteHandler(event:FlexEvent):void { kam = new keyAndMouse(this); kam.setMD(MD); kam.setMU(MU); kam.setMM(MM); kam.setMO(MO); ~~略~~って感じです。
package{ //---------------------------------- import flash.display.MovieClip; import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.events.MouseEvent; import flash.ui.*; //---------------------------------- public class keyAndMouse extends Sprite{ var father = null; var bControl = false; var bShift = false; var funcMD = null; // mouseDown event handler var funcMU = null; // mouseUp event handler var funcMM = null; // mouseMove event handler var funcMO = null; // mouseOver event handler var bKeep = false; //-------------------- var bMouseDown = false; //-------------------- public function setMD(f){ funcMD = f; } public function setMU(f){ funcMU = f; } public function setMM(f){ funcMM = f; } public function setMO(f){ funcMO = f; } //-------------------- public function getCS(){ if(bControl && bShift) return 3; else if(bShift) return 2; else if(bControl) return 1; return 0; } //-------------------- public function md(e){ if(funcMD) funcMD(e); } public function mu(e){ if(funcMU) funcMU(e); } public function mm(e){ if(funcMM) funcMM(e); } public function mo(e){ if(funcMO) funcMO(e); } //-------------------- function keyAndMouse(f,bb:Boolean=true){ bKeep = bb; father = f; this.addEventListener(Event.REMOVED_FROM_STAGE, removed); //------------------- // keyDown //------------------- father.addEventListener(KeyboardEvent.KEY_DOWN, function (e){ if(e.keyCode == Keyboard.CONTROL) bControl = true; if(e.keyCode == Keyboard.SHIFT) bShift = true; } ); //------------------- // keyUp //------------------- father.addEventListener(KeyboardEvent.KEY_UP, function (e){ if(e.keyCode == Keyboard.CONTROL) bControl = false; if(e.keyCode == Keyboard.SHIFT) bShift = false; } ); //------------------- // mouseDown //------------------- father.addEventListener(MouseEvent.MOUSE_DOWN, function (e){ if(bMouseDown){ if(funcMU) funcMU(e); bMouseDown=false; // 微妙な仕様 return; // } bMouseDown = true; if(funcMD) funcMD(e); } ); //------------------- // mouseUp //------------------- father.addEventListener(MouseEvent.MOUSE_UP, function (e){ bMouseDown = false; if(funcMU){ funcMU(e); if(!bKeep){ funcMD = null; funcMU = null; funcMM = null; } } } ); //------------------- // mouseMove //------------------- father.addEventListener(MouseEvent.MOUSE_MOVE, function (e){ if(funcMM) funcMM(e); } ); //------------------- // mouseOver //------------------- father.addEventListener(MouseEvent.MOUSE_OVER, function (e){ if(funcMO) funcMO(e); } ); //------------------- } //-------------------- // like a destructer //-------------------- private function removed(e:Event):void{ removeEventListener(Event.REMOVED_FROM_STAGE, removed); } //-------------------- } //---------------------------------- }
<fx:Script> <![CDATA[ protected function BTNID_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub } ]]> </fx:Script>変換されると、こんな感じ
public class Main extends spark.components.Application { ……略…… protected function BTNID_clickHandler(event:MouseEvent):void { // TODO Auto-generated method stub } ……略……ということで、Main.mxmlというのが、Mainクラスになって、<fx:Script>の中が、そのままMainクラスになるという単純な構造のようだ。
<fx:Script> <![CDATA[ var aaa:Number = 0; public function test():void { var d:Date = new Date(); var s:String = d.toTimeString(); trace(s); trace(aaa++); } protected function BTNID_clickHandler(event:MouseEvent):void { test();// TODO Auto-generated method stub } ]]> </fx:Script>なんて、適当なことをかいても、無事に、
public class Main extends spark.components.Application { ……略…… var aaa:Number = 0; public function test():void { var d:Date = new Date(); var s:String = d.toTimeString(); trace(s); trace(aaa++); } protected function BTNID_clickHandler(event:MouseEvent):void { test();// TODO Auto-generated method stub }という風に変換されます。