Flash Builder -> Tree -> ノードの開閉

Posted by muchag | ActionScript 3.0,Flash Builder 4 | 2010-07-31 (土) 21:59:23

Tree コンポーネントの各ノードの開閉を制御したい。

expandItem() メソッドを用いることで実現できる。

開く場合は、第2引数を true に、閉じる場合は、第2引数を false に。

 

Actionscript 3.0 on Flex 4

  1. public function expandItem(
  2.     item:Object,
  3.     open:Boolean,
  4.     animate:Boolean = false,
  5.     dispatchEvent:Boolean = false,
  6.     cause:Event = null
  7. ):void

Adobe® Flex® 4.1 リファレンスガイド:Tree expandItem() メソッド
 

item

今のところ、XMLListCollection の方法しかわからない。

しかも、場所を自由に選ぶ方法がわからない。

詳細は、以下の 特定のノードの開閉 を参照。
 

特定のノードの開閉

今のところ、起動時に固定フォルダを開く方法しか試していない。
 

XML オブジェクトを辿る手法
Actionscript 3.0 on Flex 4

  1. var myXML:XML = new XML(event.result);
  2. myTree.dataProvider = new XMLListCollection( new XMLList(myXML) );
  3.  
  4. myTree.validateNow();
  5. treeFavorit.expandItem(myXML.children()[0], true, true);

これはルートを表示しない方式の Tree で、1番目のフォルダをデフォルトで開いた状態にしている。

4行目に関しては

dataProvider を設定し、その直後に expandItem() を呼び出した場合は、不適切な動作が起こる可能性があります。
コンポーネントが検証されるまで待つか、validateNow() を呼び出します。

リファレンスのこの指示に従ったまでである。
 

XML オブジェクトをインデックスで拾う手法

Tree コンポーネントには、indexToItemRenderer() メソッドというものがあり
インデックスから当該アイテムレンダラを取得できる。

ただこのインデックスは曲者で、現在の状態で上から何番目 というものらしく
ノードの開閉状態によって コロコロ変化する ようだ。

さりながら、メインフォルダであればルートを表示していれば 1 。
ルートを表示してなければ 0 になる。

これを利用して以下のようにすることで、メインフォルダに関してだけは成功した。

Actionscript 3.0 on Flex 4

  1. var myXML:XML = new XML(event.result);
  2. myTree.dataProvider = new XMLListCollection( new XMLList(myXML) );
  3.  
  4. myTree.validateNow();
  5. var renderer:IListItemRenderer = myTree.indexToItemRenderer(0);
  6. if (renderer)
  7. {
  8.     var myXML:XML = renderer.data as XML;
  9.     myTree.expandItem(myXML, true);
  10. }
ActionScript 3.0,Flash Builder 4 | 2010-07-31 (土) 21:59:23 |

Flash Builder -> XML 系の比較

Posted by muchag | ActionScript 3.0,Flash Builder 4 | 2010-07-31 (土) 18:34:04

Flash Builder 4 -> コレクションオブジェクト
ここでも触れたが、FB4 には XML 系オブジェクトとして3種類存在する。
XML オブジェクト、XMLList オブジェクト、XMLListCollection オブジェクト

それぞれの意義自体もまだよく分かってないが
それに纏わるプロパティ、メソッドとなると尚更だ。

そこで、気が付く毎に何となく列挙していくことにした。

length 系
XML
length プロパティ

length プロパティは存在する。

Actionscript 3.0 on Flex 4

  1. XML.length

これは、当然の如く必ず 1 が戻り値。
なぜって? XML オブジェクトとは、ルートが1つのものだから。
 

length() メソッド

子供の数を知りたければ

Actionscript 3.0 on Flex 4

  1. XML.children().length()

このように children()length() メソッド を用いる。

特定の子供の数を知りたければ

Actionscript 3.0 on Flex 4

  1. XML.child("hoge").length()

このように child() メソッドlength() メソッド を用いる。

また、child() メソッドにはワイルドカードが使えるようで

Actionscript 3.0 on Flex 4

  1. XML.child("*").length()

これで全ての子の数が拾えるようだ。
 

XMLList
length プロパティ

XMLList オブジェクトには、length プロパティは 存在しない ようだ。
 

length() メソッド
Actionscript 3.0 on Flex 4

  1. XMLList.length()

これは、XMLList のプロパティの数が戻り値。
 

XMLListCollection
length プロパティ

[読み取り専用] このビュー内のアイテムの数です。

意味不明・・・。
 

length() メソッド

XMLListCollection オブジェクトには、length() メソッドは 存在しない ようだ。
 
 
実際に動かしてみないとよくわからないね。
暇を見てチャレンジしてみることにしよう。
 
Adobe® Flex® 4.1 リファレンスガイド
XMLXMLListXMLListCollection

Flash 用 ActionScript 3.0 のプログラミング:XML の操作

ActionScript 3.0,Flash Builder 4 | 2010-07-31 (土) 18:34:04 |

Flash Builder -> Tree -> Drag & Drop 情報取得

Posted by muchag | ActionScript 3.0,Flash Builder 4 | 2010-07-31 (土) 2:19:59

D&D によって変更されたフォルダ構成を DB へ反映させるためには
ドラッグしたアイテムとドロップ先アイテムの情報を取得しなければならない。

幸い、よい参考サイトが見つかった。
FXUG:ドラッグ&ドロップ(treeからpanel)
Re: Treeのアイテム移動の制御

元データの取得

まずはドラッグしているアイテム(ノード)の情報について。

これはとても単純。
しかし、上記参考サイトにも載っているが、以下のようにするとエラーが出る。

Actionscript 3.0 on Flex 4

  1. var dragInitiatorData:Object = event.dragSource.dataForFormat('treeItems');
  2. Alert.show(dragInitiatorData.@label);
ReferenceError: Error #1081: Array にプロパティ @label が見つからず、デフォルト値もありません。

これは、変数 data が単純な Object 型 だと思っていたら Array 型 だったという罠。

そういうわけなので、下記のようにするのが正解。

Actionscript 3.0 on Flex 4

  1. var dragInitiatorData:Object = event.dragSource.dataForFormat('treeItems');
  2. Alert.show(dragInitiatorData[0].@label);

また、これも上記サイトに書いてあるが、複数行選択を許可した場合はまだ工夫が必要なようだ。
 

先データの取得

これも 前回 同様、上記参考サイトのコードをそのままいただいた。

Actionscript 3.0 on Flex 4

  1. var tree:Tree = event.currentTarget as Tree;
  2. var n:int = tree.calculateDropIndex(event);
  3. var dropTargetRenderer:IListItemRenderer = tree.indexToItemRenderer(n);
  4. if (dropTargetRenderer)
  5. {
  6.     // ドロップ先のXML情報
  7.     var targetXML:XML = dropTargetRenderer.data as XML;
  8.     // ドロップ先の親のXML情報
  9.     var parentXML:XML = targetXML.parent();
  10.     // ドロップ先の親の子供情報
  11.     var childrenXMLList:XMLList = parentXML.children();
  12. }


 

calculateDropIndex の曖昧さ

ところが、この方法だと、私がやりたいことの場合は曖昧であることがわかった。


このような Tree コンポーネントがあるとする。

Folder 3 を Folder 12 と Folder 2 の間に入れる場合は、以下の2パターン存在する。
傍線の長さに注目。

そして、それぞれの結果はこうなる。

この場合、上記の手法、即ち calculateDropIndex を利用する手法だと、
共に 3 を得ることになる。

calculateDropIndex とは、現時点で開いている、
つまり 見えている状態で上から何番目 という判断をするらしく
全体の中での 正確な情報ではない 上に、パターン1とパターン2の 区別がつかない

mx_internal::_dropData

そこで他を当たっていたら以下を見つけた。
FXUG:DataGridからTreeへのドラッグアンドドロップ時のドロップ先情報について

ここに載っている mx_internal::_dropData というのを用いると

Actionscript 3.0 on Flex 4

  1. var dropTargetData:Object = tree.mx_internal::_dropData;
  2. // ドロップ先の親のXML情報
  3. var parentXML:XML = dropTargetData.parent as XML;

パターン1では root を親とし
パターン2では Folder 2 を親としてくれた。

ホッとしながらも、mx_internal についてグーグル先生に聞いてみると
DROP.FACTORY:[@Flex]プロパティやメソッドの可視性

「mx_internal」は過去の遺物らしいです。
使用には十分注意しましょう、とゆーことか。

ということらしい。

確かに Adobe® Flex® 4.1 リファレンスガイド の索引には見当たらない・・・。

ん~、それでは正しい情報はどこからもらえるんだろう・・・。

また、こちらのサイトの他、あちこちのサイトに書いてある

Actionscript 3.0 on Flex 4

  1. import mx.core.mx_internal;
  2. use namespace mx_internal;

こちらの2行は、私の環境では書かなくても利用可能であった。

ActionScript 3.0,Flash Builder 4 | 2010-07-31 (土) 2:19:59 |

XML 文字列をオブジェクト化

Posted by muchag | PHP | 2010-07-29 (木) 18:46:50

外部からの XML データの要求に対して
XML ファイルを保存せずに文字列にしてデータを渡すようにしていたときのこと。

ふと、XML 文字列の中身を表示させる必要が出てきて
print 文を書いたところ、真っ白・・・。
XML 文字列は、そのままでは print できないんだね。 😯

グーグル先生に質問してみると、XML 文字列をオブジェクト化する simplexml_load_string 関数があった。
PHP のお勉強:XML文字列読み込み@PHP
SilverFox2nd~狐の小屋~:XML文字列の読込

simplexml_load_string
object simplexml_load_string ( string $data [, string $class_name = “SimpleXMLElement” [, int $options = 0 [, string $ns [, bool $is_prefix = false ]]]] )

PHP マニュアル:simplexml_load_string

  1. $strXML = <<<XML
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <root>
  4.     <sport>
  5.         <name>サッカー</name>
  6.         <num>11</num>
  7.         <pro>
  8.             <team>ガンバ大阪</team>
  9.             <team>フロンターレ川崎</team>
  10.         </pro>
  11.     </sport>
  12.     <sport>
  13.         <name>野球</name>
  14.         <num>9</num>
  15.         <pro>
  16.             <team>西部ライオンズ</team>
  17.             <team>阪神タイガース</team>
  18.         </pro>
  19.     </sport>
  20. </root>
  21. XML;
  22.  
  23. $XML = simplexml_load_string($strXML);
  24.  
  25. print '<pre>';
  26. var_dump($XML);
  27. print '</pre>';
  28.  
  29.  
  30. // 以下、出力結果
  31. object(SimpleXMLElement)#5 (1) {
  32.  ["sport"]=>
  33.   array(2) {
  34.     [0]=>
  35.     object(SimpleXMLElement)#3 (3) {
  36.      ["name"]=>
  37.       string(12) "サッカー"
  38.       ["num"]=>
  39.       string(2) "11"
  40.       ["pro"]=>
  41.       object(SimpleXMLElement)#6 (1) {
  42.        ["team"]=>
  43.         array(2) {
  44.           [0]=>
  45.           string(15) "ガンバ大阪"
  46.           [1]=>
  47.           string(24) "フロンターレ川崎"
  48.         }
  49.       }
  50.     }
  51.     [1]=>
  52.     object(SimpleXMLElement)#4 (3) {
  53.      ["name"]=>
  54.       string(6) "野球"
  55.       ["num"]=>
  56.       string(1) "9"
  57.       ["pro"]=>
  58.       object(SimpleXMLElement)#6 (1) {
  59.        ["team"]=>
  60.         array(2) {
  61.           [0]=>
  62.           string(21) "西部ライオンズ"
  63.           [1]=>
  64.           string(21) "阪神タイガース"
  65.         }
  66.       }
  67.     }
  68.   }
  69. }
  1. print $XML->sport[0]->name;
  2.  
  3. // サッカー

このようにオブジェクトとして扱える。
 

E4X

FB4 に触っていて、初めて E4X なるものを知ったが、まだ正確に理解したわけではないので
以下が正しく E4X に則っているのか、そもそも以下を E4X と言っていいのかすらわからない。
Flash Builder 4 -> E4X

まぁ いずれにせよ、属性(プロパティ、attributes)を用いる記述法の場合。

  1. $strXMLE4X = <<<XML
  2. <?xml version="1.0" encoding="utf-8" ?>
  3. <root>
  4.     <sport name="サッカー" num="11">
  5.         <team name="ガンバ大阪" />
  6.         <team name="フロンターレ川崎" />
  7.     </sport>
  8.     <sport name="野球" num="9">
  9.         <team name="西部ライオンズ" />
  10.         <team name="阪神タイガース" />
  11.     </sport>
  12. </root>
  13. XML;
  14.  
  15. $XML = simplexml_load_string($strXMLE4X);
  16.  
  17. print '<pre>';
  18. var_dump($XML);
  19. print '</pre>';
  20.  
  21.  
  22.  
  23. // 以下、出力結果
  24. object(SimpleXMLElement)#5 (1) {
  25.  ["sport"]=>
  26.   array(2) {
  27.     [0]=>
  28.     object(SimpleXMLElement)#3 (2) {
  29.      ["@attributes"]=>
  30.       array(2) {
  31.         ["name"]=>
  32.         string(12) "サッカー"
  33.         ["num"]=>
  34.         string(2) "11"
  35.       }
  36.       ["team"]=>
  37.       array(2) {
  38.         [0]=>
  39.         object(SimpleXMLElement)#6 (1) {
  40.          ["@attributes"]=>
  41.           array(1) {
  42.             ["name"]=>
  43.             string(15) "ガンバ大阪"
  44.           }
  45.         }
  46.         [1]=>
  47.         object(SimpleXMLElement)#7 (1) {
  48.          ["@attributes"]=>
  49.           array(1) {
  50.             ["name"]=>
  51.             string(24) "フロンターレ川崎"
  52.           }
  53.         }
  54.       }
  55.     }
  56.     [1]=>
  57.     object(SimpleXMLElement)#4 (2) {
  58.      ["@attributes"]=>
  59.       array(2) {
  60.         ["name"]=>
  61.         string(6) "野球"
  62.         ["num"]=>
  63.         string(1) "9"
  64.       }
  65.       ["team"]=>
  66.       array(2) {
  67.         [0]=>
  68.         object(SimpleXMLElement)#7 (1) {
  69.          ["@attributes"]=>
  70.           array(1) {
  71.             ["name"]=>
  72.             string(21) "西部ライオンズ"
  73.           }
  74.         }
  75.         [1]=>
  76.         object(SimpleXMLElement)#6 (1) {
  77.          ["@attributes"]=>
  78.           array(1) {
  79.             ["name"]=>
  80.             string(21) "阪神タイガース"
  81.           }
  82.         }
  83.       }
  84.     }
  85.   }
  86. }

ほー! ちゃんと属性として理解してくれるね。

  1. print $XML->sport[0]->@attributes->name;

これはエラーになって、何も表示されない。

まぁ、E4X 自体 AS3 用なんだから、PHP に処理させようっていうのが
根本的に間違いだよね。。。 😆

PHP | 2010-07-29 (木) 18:46:50 |

Flash Builder -> Tree -> Drag & Drop 個々に設定

Posted by muchag | ActionScript 3.0,Flash Builder 4 | 2010-07-29 (木) 1:25:50

Tree コンポーネントを触っていて
Windows エクスプローラ ライクに D&D をしたくなる。

Tree コンポーネントの場合、D&D だけなら簡単だ。

D&D の実装

[mxml][/mxml]
上記の如く、dragEnableddropEnabled プロパティを true に設定すればいい。

dragMoveEnabled プロパティに関しては、Tree コンポーネントの場合はデフォルトで true なので、
設定の必要はない。
 

個々に設定

ところが、1つの Tree コンポーネントの中で、
ドラッグ禁止やらドロップ禁止を個々に設けたい場合がある。

その際は、Tree コンポーネントのイベントを利用する。

Flash Builder -> Tree with Spring Loaded Folders
で、よいサンプルを見つけたものの、Flex 2 用で上手く動かなかったので
これを見つつ、以下を大いに参考にして、カーソル変更も付加した結果がこれだ。
FXUG:Re: Treeのアイテム移動の制御
[mxml][/mxml]

上記のように、目的別にイベントを設定し、
そのイベント内容を関数にすることで、目的の処理をする。

Actionscript 3.0 on Flex 4

  1. import mx.controls.listClasses.IListItemRenderer;
  2. import mx.events.DragEvent;
  3.  
  4. import net.lifebird.ui.cursor.*;
  5. import net.lifebird.ui.cursor.plugins.*;
  6.  
  7. // D&D 処理が完全に終了した時点
  8. private function myTree_dragCompleteHandler(event:DragEvent):void
  9. {
  10.     Cursors.cursor(CursorType.DEFAULT);
  11. }
  12.  
  13. // ドロップした時点
  14. private function myTree_dragDropHandler(event:DragEvent):void
  15. {
  16.     Cursors.cursor(CursorType.DEFAULT);
  17.  
  18.     if (!isDropEnabled(event))
  19.         event.preventDefault();
  20. }
  21.  
  22. // Tree コンポーネントより外へマウスが出た時点
  23. private function myTree_dragExitHandler(event:DragEvent):void
  24. {
  25.     Cursors.cursor(CursorType.REJECT);
  26. }
  27.  
  28. // Tree コンポーネント内でドラッグされている間
  29. private function myTree_dragOverHandler(event:DragEvent):void
  30. {
  31.     if (!isDropEnabled(event)) {
  32.         var tree:Tree = event.currentTarget as Tree;
  33.         tree.hideDropFeedback(event);
  34.         event.preventDefault();
  35.         Cursors.cursor(CursorType.REJECT);
  36.     }
  37.     else {
  38.         Cursors.cursor(CursorType.DEFAULT);
  39.     }
  40. }
  41.  
  42. // ドラッグ開始時点
  43. private function myTree_dragStartHandler(event:DragEvent):void
  44. {
  45.     if (!isDragEnabled(event))
  46.         event.preventDefault();
  47.    
  48.     Cursors.cursor(CursorType.DEFAULT);
  49. }
  50.  
  51. // マウスカーソルが乗ったアイテムのドラッグ可否関数
  52. private function isDragEnabled(event:DragEvent):Boolean
  53. {
  54.     var tree:Tree = event.currentTarget as Tree;
  55.     var n:int = tree.calculateDropIndex(event);
  56.     var renderer:IListItemRenderer = tree.indexToItemRenderer(n);
  57.     if (renderer)
  58.     {
  59.         var xml:XML = renderer.data as XML;
  60.         if (xml.@acceptDrag == "false")
  61.             return false;
  62.     }
  63.     return true;
  64. }
  65.  
  66. // マウスカーソルが乗ったアイテムのドロップ可否関数
  67. private function isDropEnabled(event:DragEvent):Boolean
  68. {
  69.     var tree:Tree = event.currentTarget as Tree;
  70.     var n:int = tree.calculateDropIndex(event);
  71.     var renderer:IListItemRenderer = tree.indexToItemRenderer(n);
  72.     if (renderer)
  73.     {
  74.         var xml:XML = renderer.data as XML;
  75.         if (xml.@acceptDrop == "false")
  76.             return false;
  77.     }
  78.     return true;
  79. }

This movie requires Flash Player 9.0.0

カーソルの変更については以下を参照。
Flash Builder 4 -> net.lifebird.ui.cursor

ActionScript 3.0,Flash Builder 4 | 2010-07-29 (木) 1:25:50 |

Flash Builder -> Tree with Spring Loaded Folders

Posted by muchag | Flash Builder 4 | 2010-07-26 (月) 17:43:07

Tree コンポーネントを触っていて
Windows エクスプローラ ライクに D&D をしたくなる。

そこでグーグル先生の力を借りて手法を探していたら
素敵なカスタムコンポーネントを見つけたのでいただいてきた。 🙂
Flexible Experiments:Flex 2.0.1 Tree with Spring Loaded Folders (Update 2)

Flex 2.0.1 用、February 26th, 2007 の記事ということで、FB4 でちゃんと動作するか不安だが
先ずは試してみることにした。

DL & インストール

上記サイトから DL 。

フォルダ構成。

com
┣DelayedTimer.as
┣ListItemGroupedDragProxy.as
┗SpringLoadedTree.as
Sample.mxml
sampleData.xml

この内の as ファイル3点を

プロジェクトフォルダ/src/com/springLoadedFolders

を新たに作成してその中へ入れる。

上記 as ファイル3点のパッケージ名をフォルダ構成に合わせて変更。

メインファイルの Application タグに以下を記述。
[mxml]xmlns:Extended=”com.sprintLoadedFolders.*”[/mxml]

警告が出るので対処。

3608: “getStyleDeclaration” は 4.0 以降推奨されていません。”IStyleManager2.getStyleDeclaration on a style manager instance” を使用してください。 Flex の問題
Actionscript 3.0 on Flex 4

  1. import mx.styles.StyleManager;
Actionscript 3.0 on Flex 4

  1. var styleSheet:CSSStyleDeclaration = StyleManager.getStyleDeclaration("DragManager");

Actionscript 3.0 on Flex 4

  1. import mx.styles.StyleManager;
  2. import mx.styles.IStyleManager2; // 追加
Actionscript 3.0 on Flex 4

  1. var manager:IStyleManager2 = StyleManager.getStyleManager(null);
  2. var styleSheet:CSSStyleDeclaration = manager.getStyleDeclaration("DragManager");

<参考サイト>
ActionScript入門Wiki@rsakane:スタイルをCSSではなく、AS3側から記述する(StyleManager)
 
また、いくつかのサイトに載っていた事例で、以下のようにしても対応できるらしい。

Actionscript 3.0 on Flex 4

  1. var styleSheet:CSSStyleDeclaration = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration("DragManager");

 

エラー
TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。

前述の如く改変した上で動かしてみたが、上記のようなエラーが出た。

問題箇所は正に警告のあった行だった。

Actionscript 3.0 on Flex 4

  1. // オリジナル
  2. var styleSheet:CSSStyleDeclaration = StyleManager.getStyleDeclaration("DragManager");
  3.  
  4. // 改変1
  5. var styleSheet:CSSStyleDeclaration = manager.getStyleDeclaration("DragManager");
  6.  
  7. // 改変2
  8. var styleSheet:CSSStyleDeclaration = FlexGlobals.topLevelApplication.styleManager.getStyleDeclaration("DragManager");

以上のどれで試しても同じエラーが出る。

あれこれ弄ってみた結果、Tree コンポーネント外へマウスを移動する分には問題ないのだが
Tree コンポーネント上でマウスを移動すると、上記コードの変数 styleSheet が null になってしまうのだ。
 

結論

どうやら、私の力量ではコンバートは難しい。

2日程、悩み、弄り、眠り・・・を繰り返したが、解決法が浮かばない。
残念。。。 😯

Flash Builder 4 | 2010-07-26 (月) 17:43:07 |

array_merge

Posted by muchag | PHP | 2010-07-25 (日) 23:07:25

array_merge は、配列をマージ’(合併)する関数。

array_merge
  1. array array_merge  (  array $array1  [,  array $array2  [,  array $...  ]] )

2つ以上の配列を結合するもの。

同じキーを持つ連想配列要素は上書き になる。

  1. $array1 = array("color" => "red", 2, 4);
  2. $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);
  3. $result = array_merge($array1, $array2);
  4. print_r($result);
  5.  
  6. // Array
  7. // (
  8. //     [color] => green
  9. //     [0] => 2
  10. //     [1] => 4
  11. //     [2] => a
  12. //     [3] => b
  13. //     [shape] => trapezoid
  14. //     [4] => 4
  15. // )

 

PHP4 からの変更点

PHP5 より、引数は必ずArray 型(配列)でなければならなくなった。

このため Array 型でない場合は、引数を Array 型へとキャストしておく必要がある。

  1. $beginning = 'foo';
  2. $end = array(1 => 'bar');
  3. $result = array_merge((array)$beginning, (array)$end);
PHP | 2010-07-25 (日) 23:07:25 |

Flash Builder -> toolTip

Posted by muchag | Flash Builder 4 | 2010-07-25 (日) 22:49:21

toolTip プロパティとは、コンポーネントにマウスオーバーしたときに表示されるヒントのこと。

HTML でいうところの title プロパティ。

toolTip

[mxml][/mxml]

Actionscript 3.0 on Flex 4

  1. Button.toolTip = "hoge";

 
以下のイベントを抱えている。

toolTipCreate

ツールヒントを作成するときにコンポーネントによって送出されます。

toolTipEnd

コンポーネントのツールヒントが非表示にされており、まもなく破棄されるときに、コンポーネントによって送出されます。

toolTipHide

コンポーネントのツールヒントが非表示にされる前に、コンポーネントによって送出されます。

toolTipShow

コンポーネントのツールヒントが表示される前に、コンポーネントによって送出されます。

toolTipShown

コンポーネントのツールヒントが表示された後に、コンポーネントによって送出されます。

toolTipStart

toolTip プロパティが設定されているコンポーネント上にユーザーがマウスを移動すると同時に、そのコンポーネントによって送出されます。
 
Adobe® Flex® 4.1 リファレンスガイド:UIComponent

Flash Builder 4 | 2010-07-25 (日) 22:49:21 |

文字列の検索・置換

Posted by muchag | PHP | 2010-07-25 (日) 14:29:58

PHP
検索

// String 関数
int strpos ( string $haystack , mixed $needle [, int $offset = 0 ] )

文字列 haystack の中で、 needle が最初に現れた位置を数字で返します。
PHP 5 以前の strrpos() とは異なり、この関数は needle パラメータとして文字列全体をとり、 その文字列全体が検索対象となります。
位置を表す整数値を返します。 needle が見つからない場合、 strpos() は boolean FALSE を返します。

PHP マニュアル:strpos
 
// マルチバイト文字列 関数
int mb_strpos ( string $haystack , string $needle [, int $offset [, string $encoding ]] )

ある文字列の中で別の文字列が最初に現れる位置を見つけます。

PHP マニュアル:mb_strpos

 

置換

// String 関数
mixed substr_replace ( mixed $string , string $replacement , int $start [, int $length ] )

文字列 stringの start および (オプションの) length パラメータで区切られた部分を replacement で指定した文字列に置換します。
結果の文字列を返します。もし、string が配列の場合、配列が返されます。

PHP マニュアル:substr_replace

 

正規表現

正規表現

  1. $subject = "abcdef";
  2. $pattern = '/^def/';
  3. preg_match($pattern, substr($subject,3), $matches, PREG_OFFSET_CAPTURE);
  4. print_r($matches);
  5.  
  6. // Array
  7. // (
  8. //     [0] => Array
  9. //         (
  10. //             [0] => def
  11. //             [1] => 0
  12. //         )
  13. // )

PHP 5.3.0 以降、 regex 拡張モジュールは非推奨となったので除外。

/* 検索 */
// PCRE 関数 — 正規表現 (Perl 互換)
int preg_match ( string $pattern , string $subject [, array &$matches [, int $flags [, int $offset ]]] )

pattern で指定した正規表現により subject を検索します。
pattern がマッチした回数を返します。

PHP マニュアル:preg_match
 
// マルチバイト文字列 関数
bool mb_ereg_match ( string $pattern , string $string [, string $option = “msr” ] )

マルチバイト文字列に対する正規表現マッチングを行います。
string が正規表現 pattern に一致する場合にTRUE 、 そうでない場合に FALSE を返します。

PHP マニュアル:mb_ereg_match
 
 
/* 置換 */
// PCRE 関数 — 正規表現 (Perl 互換)
mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

subject に関して pattern を用いて検索を行い、 replacement に置換します。
subject 引数が配列の場合は配列を、 その他の場合は文字列を返します。

PHP マニュアル:preg_replace
 
// マルチバイト文字列 関数
string mb_ereg_replace ( string $pattern , string $replacement , string $string [, string $option = “msr” ] )

string から pattern にマッチする文字列を探し、 見つかった文字列を replacement で置換します。
成功した場合に結果の文字列、エラー時に FALSE を返します。

PHP マニュアル:mb_ereg_replace

 

チェック

PHP は、文字列検索・置換関数がたくさんあるので、一番代表例となるものを挙げた。
詳細はマニュアルをチェック。

PHP マニュアル
String 関数
PCRE 関数
マルチバイト文字列 関数

PHP | 2010-07-25 (日) 14:29:58 |

Illustrator Index

Posted by muchag | Illustrator | 2010-07-25 (日) 5:57:17


フライヤーを製作しなくてはならなくなったことがあり
それが Illustrator との出会いだった。

デザイン能力に全くといっていいほど欠けている私だが
触ってみるとこれが楽しい楽しい。 😎

それ以来、何かにつけて Illustrator のお世話になってきた。
しかしながら、プロの方々のような作品は、いつまで経っても作れない・・・。

牛歩の如く頑張るしかない!

丸っきりの書きかけ項目は Not found になる。

目次
  1. Illustrator から Fireworks へのコピー
  2. Illustrator で、透過処理
  3. Web 用の保存で余白を出さない手法
  4. 立体感
  5. ブラシ
    1. アートブラシ

 

Tips
  1. スクリプト
がい~ん!(はまったこと)
  1. 解決済み(たぶん)
    1. 色が違う
  2. 未解決

 

参考
Illustrator | 2010-07-25 (日) 5:57:17 |
次ページへ »