http://d.hatena.ne.jp/nitoyon/20071005/potras_pop
今回初めて知ったのですが、
ActionScriptのクラスライブラリを開発している
「Spark project」というコミュニティがあるそうです。
上記記事では、
ベクタ変換ライブラリ「PotrAs」を利用して
String型の文字列をチラシ文字のような画像を
作成しています。
これを参考にさせていただいて、
私もFlex2で、動的に打ち込んだ文字列を
チラシ文字として表示するアプリを作ってみました。
…まぁ突貫工事だったので、色々イマイチですが、
その点はどうぞご勘弁を。ソースは以下。
― Pop.as ―
※てっく煮ブログさんのソースを
ほとんどそのまま使わせてもらってます。
少々異なるのは、本家ではSpriteクラスを継承していますが、
今回はMXMLへのaddChild()がうまく行かなかったので
UIComponentクラスを親クラスにしました。
― PopFont.mxml ―
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="320" height="130">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.utils.StringUtil;
/**
* 「作成ボタン」押下時の動作、フォントを描画します
*/
private function submitPop():void
{
// 以前までにフォントが描かれている場合
if(viewField.getChildren().length > 1)
{
// フォントを除去
viewField.removeChildAt(1);
}
// 入力チェック
if(input.text == null || StringUtil.trim(input.text).length == 0)
{
Alert.show("文字を入力してください。");
return;
}
// フォントを描画領域に追加
viewField.addChild(new Pop(input.text));
// 初期化
this.initialize();
}
]]>
</mx:Script>
<mx:VBox id="viewField">
<mx:HBox width="100%" height="30">
<mx:Label text="入力:" color="white" fontWeight="bold"/>
<mx:TextInput id="input" text="" />
<mx:Button id="submit" label="作成" click="submitPop();"/>
</mx:HBox>
<!-- フォントを描画するとここに入る -->
</mx:VBox>
</mx:Application>
※何もせずに2回目以降も文字入力すると
作成したフォントがどんどん上重ねされてしまうので
必要に応じてremoveChild()をするようにしています。
…実は「PotrAs」のソースを
きちんと読み込めていないので、理解不足の状態なんですが、
それでもなんとかここまではできました。
APIって素晴らしい!!
ヨウイチ
今回初めて知ったのですが、
ActionScriptのクラスライブラリを開発している
「Spark project」というコミュニティがあるそうです。
上記記事では、
ベクタ変換ライブラリ「PotrAs」を利用して
String型の文字列をチラシ文字のような画像を
作成しています。
これを参考にさせていただいて、
私もFlex2で、動的に打ち込んだ文字列を
チラシ文字として表示するアプリを作ってみました。
…まぁ突貫工事だったので、色々イマイチですが、
その点はどうぞご勘弁を。ソースは以下。
― Pop.as ―
package {
import com.nitoyon.potras.ClosedPathList;
import com.nitoyon.potras.PotrAs;
import flash.filters.DropShadowFilter;
import mx.core.UIComponent;
public class Pop extends UIComponent {
public function Pop(str:String):void {
var list:ClosedPathList = PotrAs.traceLetter(str, 60);
graphics.lineStyle(14, 0xff0000);
list.draw(graphics);
graphics.lineStyle(8, 0xffffff);
list.draw(graphics);
graphics.lineStyle(4, 0xff0000);
graphics.beginFill(0xff0000);
list.draw(graphics);
graphics.endFill();
filters = [new DropShadowFilter(4, 45, 0x000080, 1, 0, 0)];
}
}
}
import com.nitoyon.potras.ClosedPathList;
import com.nitoyon.potras.PotrAs;
import flash.filters.DropShadowFilter;
import mx.core.UIComponent;
public class Pop extends UIComponent {
public function Pop(str:String):void {
var list:ClosedPathList = PotrAs.traceLetter(str, 60);
graphics.lineStyle(14, 0xff0000);
list.draw(graphics);
graphics.lineStyle(8, 0xffffff);
list.draw(graphics);
graphics.lineStyle(4, 0xff0000);
graphics.beginFill(0xff0000);
list.draw(graphics);
graphics.endFill();
filters = [new DropShadowFilter(4, 45, 0x000080, 1, 0, 0)];
}
}
}
※てっく煮ブログさんのソースを
ほとんどそのまま使わせてもらってます。
少々異なるのは、本家ではSpriteクラスを継承していますが、
今回はMXMLへのaddChild()がうまく行かなかったので
UIComponentクラスを親クラスにしました。
― PopFont.mxml ―
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" width="320" height="130">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.utils.StringUtil;
/**
* 「作成ボタン」押下時の動作、フォントを描画します
*/
private function submitPop():void
{
// 以前までにフォントが描かれている場合
if(viewField.getChildren().length > 1)
{
// フォントを除去
viewField.removeChildAt(1);
}
// 入力チェック
if(input.text == null || StringUtil.trim(input.text).length == 0)
{
Alert.show("文字を入力してください。");
return;
}
// フォントを描画領域に追加
viewField.addChild(new Pop(input.text));
// 初期化
this.initialize();
}
]]>
</mx:Script>
<mx:VBox id="viewField">
<mx:HBox width="100%" height="30">
<mx:Label text="入力:" color="white" fontWeight="bold"/>
<mx:TextInput id="input" text="" />
<mx:Button id="submit" label="作成" click="submitPop();"/>
</mx:HBox>
<!-- フォントを描画するとここに入る -->
</mx:VBox>
</mx:Application>
※何もせずに2回目以降も文字入力すると
作成したフォントがどんどん上重ねされてしまうので
必要に応じてremoveChild()をするようにしています。
…実は「PotrAs」のソースを
きちんと読み込めていないので、理解不足の状態なんですが、
それでもなんとかここまではできました。
APIって素晴らしい!!
ヨウイチ
| ホーム |
