こんなのをつくってみました。
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
}という風に変換されます。