トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     SWFからベクタデータを書き出す
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
miyaj
Åê¹ÆNo.48901
投稿日時: 2012-3-15 12:26
新米
居住地:
投稿: 13
使用環境:
Win7
FlashCS5
SWFからベクタデータを書き出す
いつもお世話になっております。

今回、表題の件をどのように実現したら良いか全く見当が付かず、
実現方法を質問させて頂ければと思います。

Webアプリ又はAIRで、カンバス上にユーザーが自由に
図形を配置、又はテキスト入力して画像を作成し、それを
ベクタデータ(SWF?SVG?)としてローカルに保存する
というアプリケーションを作成したいと考えています。
その時、描画された図形やテキストをベクタデータに変換
する必要があるかと思いますが、どのように実現したら
良いでしょうか。

変換方法や変換用のライブラリ、参考サイト等がれば
ご教授頂けないでしょうか。
よろしくお願いいたします。
永井勝則
Åê¹ÆNo.48902
投稿日時: 2012-3-15 16:54
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: SWFからベクタデータを書き出す
アドビページのSVGの基礎には次のSVGの例が書かれています。


<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20000303 Stylable//EN"
"http://www.w3.org/TR/2000/03/WD-SVG-20000303/DTD/svg-20000303-stylable.dtd">
<svg xml:space="preserve" width="5.5in" height="2in">
<path d="M 50 10 L 350 10 L 200 120 z"/>
</svg>


"M"は、"moveto," "L"は"lineto"、"z"は"closepath"を表すそうです。
つまりまず(50, 10)に移動し、そこから(350, 10)まで線を引いて、さらに(200, 120)まで線を引いて閉じる、というコードです。

これをパスの描画ページを参考に、ActionScriptに対応させて考えると、


var commands:Vector.<int >  = new Vector.<int > (3,true);
commands[0] = GraphicsPathCommand.MOVE_TO;
commands[1] = GraphicsPathCommand.LINE_TO;
commands[2] = GraphicsPathCommand.LINE_TO;

var coord:Vector.<Number> = new Vector.<Number>(6,true); 

coord[0] = 50; 	//
coord[1] = 10; 	//( 50, 10 ) 

coord[2] = 350; // 
coord[3] = 10; 	//( 350, 10 )

coord[4] = 200; //
coord[5] = 120; //( 200, 120 )

graphics.beginFill(0x000000);
graphics.drawPath(commands, coord); 


というようなコードになります。

ここで使用しているMOVE_TOやLINE_TO、( x, y )座標の値をSVGのXMLファイルに組み込み、それをSVGの仕様にのっとって保存すると、SVGファイルができあがる、という理屈になります。

GraphicsクラスのdrawGraphicsData()も利用できると思います。


----------------
永井勝則:
himco.jp :

miyaj
Åê¹ÆNo.48903
投稿日時: 2012-3-15 17:56
新米
居住地:
投稿: 13
使用環境:
Win7
FlashCS5
Re: SWFからベクタデータを書き出す
ご回答頂きましてありがとうございます。

自分でSVGを書き出すということですね。
入力したテキストのアウトラインを取るようなことは
出来ますでしょうか?
永井勝則
Åê¹ÆNo.48904
投稿日時: 2012-3-16 12:55
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: SWFからベクタデータを書き出す
アウトラインは要するに計算式なので、GraphicsのlineTo()の細かな繰り返しでトレースすることは、論理的には可能だと思います。

つまりフォントを表示した矩形部分のピクセルを全部しらべ、それがフォントの色と同じときにはフォントに含まれる部分なので、その外側にあたる点を求め、それを線でつなぐとアウトラインができあがります。ただしどの点とどの点を結ぶかを決めるのはやっかいだろうと思います。

もっと効率的で簡単な方法があるかもしれません。


----------------
永井勝則:
himco.jp :

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops