「Flex sdk」カテゴリーアーカイブ

FXG を舐めてみる

ザラっと概要を見ると、画像の描画方法が swftools のそれに似ていると直感した。

もう少し調べると、adobe illustrator は CS4 から対応させている adobe の新しい画像フォーマットらしいが、生憎そんな高価なものには縁がない。 大体が、イラストらしきものさえ描かないのだから。 photoshop CS5 は別途プラグインで対応とのこと。

FXGeditor

しかし、世の中よくできているもので、ウェブ上のツールが既にあるではないか。

FXG Editor – Online – Free open source FXG vector editor for Actionscript – Edit

使い方のページも用意されているので、大助かり。

7 つほどのオブジェクトを Shift キーを押しながらクリックして、 Delete キーで削除すれば、全オブジェクトが消えて一からの作品を作ることができる。

FXGedit.mxml

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx">
  <Graphic version="2.0" viewHeight="841.89" viewWidth="595.275" xmlns:d="http://ns.adobe.com/fxg/2008/dt">
    <Ellipse width="344.072" height="100" x="139.35" y="291.2">
      <fill>
        <SolidColor color="#565656" alpha="1"/>
      </fill>
      <filters>
        <BlurFilter blurX="69" blurY="69" quality="3"/>
      </filters>
    </Ellipse>
    <Path data="M514.385,243.586 C514.385,374.802 395.47,297.235 255.083,297.235C114.696,297.235 6,374.802 6,243.586C6,112.371 119.806,6 260.192,6C400.579,6 514.385,112.371 514.385,243.586L514.385,243.586Z" winding="nonZero" x="42.85" y="18.85">
      <fill>
        <RadialGradient x="147.785" y="115.851" scaleX="659.66" rotation="70.1537" scaleY="-682.466">
          <GradientEntry color="#FFFFFF" ratio="0"/>
          <GradientEntry color="#8FC1F6" ratio="0.5228758169934641"/>
          <GradientEntry color="#6662FE" ratio="1"/>
        </RadialGradient>
      </fill>
      <stroke>
        <SolidColorStroke color="#5E5E5E" alpha="1" weight="20.5" miterLimit="4" caps="none"/>
      </stroke>
    </Path>
    <Path data="M440.166,166.64 C440.166,258.672 337.208,204.268 215.659,204.268C94.1108,204.268 0,258.672 0,166.64C0,74.6069 98.5347,0 220.083,0C341.632,0 440.166,74.6069 440.166,166.64L440.166,166.64Z" winding="nonZero" x="86.35" y="45.05">
      <fill>
        <LinearGradient x="328.1" y="222.15" scaleX="240.1859956367149" rotation="-123.83893035950028">
          <GradientEntry color="#FFFFFF" ratio="0" alpha="0.42"/>
          <GradientEntry color="#FFFFFF" ratio="0.9934640522875816" alpha="0.12"/>
        </LinearGradient>
      </fill>
    </Path>
    <Path data="M126.071,137.566 C137.393,97.1401 206.863,85.8604 223.266,138.038" winding="nonZero" x="48.25" y="27.55">
      <stroke>
        <SolidColorStroke color="#6C6C6C" alpha="1" weight="20" miterLimit="4"/>
      </stroke>
    </Path>
    <Path data="M295.958,135.113 C307.28,94.687 374.845,89.1255 393.152,135.584" winding="nonZero" x="44.35" y="25.35">
      <stroke>
        <SolidColorStroke color="#6C6C6C" alpha="1" weight="20" miterLimit="4"/>
      </stroke>
    </Path>
    <Path data="M272.076,14.4873 C272.076,50.4658 211.169,79.6323 136.038,79.6323C60.9063,79.6323 0,50.4658 0,14.4873C0,-21.4912 62.1836,20.874 137.315,20.874C212.447,20.874 272.076,-21.4912 272.076,14.4873Z" winding="nonZero" x="176.8" y="208.45">
      <fill>
        <LinearGradient x="191.95" y="102.6" scaleX="127.35660563944062" rotation="-120.66285229596582">
          <GradientEntry color="#FF0000" ratio="0"/>
          <GradientEntry color="#8F0000" ratio="1"/>
        </LinearGradient>
      </fill>
    </Path>
    <RichText fontFamily="_sans" fontSize="30" x="126.4" y="389.6">
      <content>
        <div fontSize="32">
          <p>
            <span/>
            <span alignmentBaseline="useDominantBaseline" backgroundAlpha="1" backgroundColor="transparent" baselineShift="0" breakOpportunity="auto" cffHinting="horizontalStem" color="#8790ad" digitCase="default" digitWidth="default" dominantBaseline="auto" fontFamily="Lucida Console" fontLookup="device" fontSize="79" fontStyle="normal" fontWeight="normal" kerning="auto" ligatureLevel="common" lineHeight="120%" lineThrough="false" locale="en" renderingMode="cff" textAlpha="1" textDecoration="none" textRotation="auto" trackingLeft="0" trackingRight="0" typographicCase="default">edit me.</span>
            <span/>
          </p>
        </div>
      </content>
    </RichText>
  </Graphic>
</Application>

これも FXG アイコンから mxml 出力されたものをコピーして保存後、コンパイルしてみました。

$ mxmlc mxml/FXGedit.mxml
設定ファイル "/home/name/flex/frameworks/flex-config.xml" をロードしています
/home/name/flex/mxml/FXGedit.swf (41122 バイト)

成功のようだ。

もう一つ、svg で使った文字を FXG で試してみた。

<?xml version="1.0" encoding="utf-8"?>
<Application xmlns="library://ns.adobe.com/flex/spark" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx">
  <Graphic version="2.0" viewHeight="100" viewWidth="300" xmlns:d="http://ns.adobe.com/fxg/2008/dt">
    <RichText fontFamily="SF Planetary Orbiter" fontSize="36" x="6.8" y="11.95" scaleX="1.532294750213623" scaleY="1.5714285373687744">
      <content>
        <div>
          <p>
            <span>BORRA</span>
          </p>
        </div>
      </content>
    </RichText>
  </Graphic>
</Application>

35kb ほどのフォントも埋め込んであるので、39kb というファイルサイズは妥当なところだろうか。

これで日本語などの 2 バイトフォントが使えれば、言うことナシなんですがねえ。

ブラウザに表示させた時、「Error #2046: 読み込まれたファイルには、有効なシグネチャがありません。」とエラーが表示され、google 先生に訊いてもこれといった解決法が見つからない。 これにはマイッタ

一旦 ubuntu を終了し、HDD を入れ替えて windows でゴニョゴニョした後、再び ubuntu に戻ると回復していた。ヤレヤレ。


(追記)日本語はテキストエディタからコピー&ペーストで利用できる。

flex sdk 4 も再インストール

ubuntu lucid にしてからも flex sdk 4 はインストールしていたが、或る時 ver.3.5 の explorer.html は使えないものかという邪心を起こして失敗した。

今度はそんなドジするまいとインストール。 インストールと言っても任意のフォルダに展開するだけ。

adobe サイトには flashplayer-installer の libflashplayer.so を削除とあるので、runtimes フォルダのものをペースト。
そうしなければ、ウェブ上の youtube などが再生できなかった記憶がある。

あとは .profile という /home/name にある隠しファイルにパスを通す。

# flex4 sdk settings 2010/05/26
FLEX_HOME='~/flex'
PATH=$PATH:$FLEX_HOME/bin:$FLEX_HOME/runtimes/player/10/lnx

そこで僅かに残っていた usb メモリからいくつかの mxml をコンパイルしてみた。

flex sdk 3.5 を使っていた人はご存知であるはずのファイルサイズを見たかったというのもある。 3.5 では as ファイルをコンパイルしたものはともあれ、mxml 仕様のタグで書かれたものは押しなべて 170kb ~ 220kb という「重い」ものであったから、気軽にと言うシロモノでなかった。

svg.mxml

<?xml version="1.0" encoding="utf-8"?>

<!-- Flexコンポーネントサンプル: mx.controls.Image(イメージ) -->

<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" styleName="plain" pageTitle="Flexコンポーネントサンプル: mx.controls.Image(イメージ)">

    <mx:Panel id="myPanel" title="イメージサンプル" 

        height="180" width="400" horizontalAlign="center" paddingTop="10" paddingLeft="10">

    <mx:Script>
    <![CDATA[
            [Embed(source="assets/borra.svg")]
            [Bindable]
            public var SvgBorra:Class;            
        ]]>
    </mx:Script>
        <mx:Label color="blue" text="埋め込みイメージは@Embed()ディレクティブを使用します。"/>
	<mx:Image id="borra" source="{SvgBorra}" width="240" height="80" />
    </mx:Panel>

</mx:Application>

タダの svg 画像をパネルに埋め込んだだけのものであるが、ver.3.5 でコンパイルした時にはナント 196,448 bytes もあった。 しかし、ver.4 でコンパイルすると、

$ ~/flex$ mxmlc mxml/svg.mxml
設定ファイル "/home/name/flex/frameworks/flex-config.xml" をロードしています
/home/name/flex/mxml/svg.mxml: 警告: SVG の使用は Flex4 以降推奨されていません。Flash XML Graphics (FXG) を使用してください。

/home/name/flex/mxml/svg.swf (43408 バイト)

どうやら仕様に大幅な変更があったと思われる。 ということは FXG を勉強せねば ・・・。 それにしてもファイルサイズが数分の一、これなら、納得。

ただ ver.3.5 で出力した swf をローカル表示しても、 firefox は「完了」なのだが、ver.4 で出力したものは「fpdownload.adobe.com を読み込みました」とステイタスバーに表示される。 fp とは flashplayer か。

それにしても「FXG とは何ぞや」から始めることになるのか。

security error #2028

久しぶりに Flex sdk 4 に explorer.html がなかったので、flex sdk 3.5 のものをコピーして ./build.sh を実行してみた。

15 分近くかかって、イザ explorer.html を firefox に放り込むと、

flexerr2028

Flex sdk ubuntu firefox
前回 3.5 9.10 3.5.7
今回 4.1 10.04 3.6.3

AS3 の書式でクリアできることもあるらしいが、それを極めるスキルはナシ。

windows 上なら cfg ファイルの操作と言うのもあるようだが、あいにく ubuntu だし。

コンパイル時に -use-network=false を加えるといいらしい。