2012-06-02 11 views
5

SVGファイルをactionscriptに直接インポートするためのライブラリやツールを知っている人はいますか?私は、SVGファイルをフラッシュに読み込んで、ムービークリップまたは好ましくは3Dオブジェクトに変換できる必要があります。ここでの最終目標は、拡張現実感を持つベクトルファイルを実装することです。Actionscript 3 - SVGファイルをインポート

+1

これは純粋なas3プロジェクトまたはフレックスです。後者の場合は、ここで説明する画像コントロールを使用して簡単に行うことができます。http://raghuonflex.wordpress.com/2009/06/10/loading-svg -content-in-flex-apps /ほぼすべてのオブジェクトで3つの2.5D回転プロパティを取得するhttp://www.flepstudio.org/forum/flash-cs4-tutorials/3550-rotationx-rotationy.html – shaunhusain

+0

@ shaunhusain今はactionscript 3プロジェクトですが、必要に応じてflexを使うことができます。私はフレックスについてはあまり知らない。 (私は今も別のIDEを買う余裕がない。私はAdobe Flash CS6を持っているので、それを使うことができるなら、フレックスのチュートリアルを見ることができます。 – teynon

+0

私は新しいプロジェクトを作成するときにフレックスプロジェクトにするオプションが必要だと思います。あなたのためのswcsが含まれます。私はFlexでsvgとの結果を混在させましたが、fxgはFlashでの "primative"描画メソッドに直接変換されるため、より効果的です。私はCS6を見つけることができないようですが、ここでは5.5形式がサポートされていますhttp://helpx.adobe.com/flash/kb/supported-file-formats-flash-professional.html – shaunhusain

答えて

6

このための素晴らしいライブラリは、ここからダウンロードできます。http://code.google.com/p/as3svgrendererlib/ 実装が簡単で信頼性が高いです。コードを実装するには2つの方法があることに注意してください。それはあなたがより詳細に制御できますので、私は次のことを好む:

 private function loadSVG(url:String):void { 
     ProcessExecutor.instance.initialize(stage); 
     ProcessExecutor.instance.percentFrameProcessingTime = 0.9; 

     loader = new URLLoader(); 
     loader.dataFormat = URLLoaderDataFormat.TEXT; 
     loader.addEventListener(Event.COMPLETE, svgLoaded, false, 0, true); 

     try { 
      loader.load(new URLRequest(url)); 
     } catch (error:Error) { 
      trace(error); 
     } 
    } 
    private function svgLoaded(e:Event):void { 
     var svgString:String = loader.data as String; 
     var svgDocument:SVGDocument = new SVGDocument(); 
     svgDocument.parse(svgString); 

     this.addChild(svgDocument); 
    } 

他の方法が短くなって、あなたはわずかなSVGまたはわずか数をロードする必要がある場合に移動するための方法かもしれません。

public function loadSVG(url:String) { 
     ProcessExecutor.instance.initialize(stage); 
     ProcessExecutor.instance.percentFrameProcessingTime = 0.9; 

     var svgDocument:SVGDocument = new SVGDocument(); 
     svgDocument.load(url); 
     addChild(svgDocument); 
    } 

二つの重要な注意事項: 1.私はSVGsの幅や高さをキャプチャすることができているように見えることができませんでしたし、親スプライトは、SVGをロードした後に0の幅と高さを持っていました。私はすべてのSVGをAS3にロードする前に同じサイズにすることでこれを解決しました。その後、私はScaleXとscaleYを使ってロードされたSVGのサイズを変更するための寸法を知っていました。 2.このコードを使用するには、ステージが存在する必要があります。次のコードを追加すると、問題が発生しないようになります。yourDisplayClass.addEventListener(Event.ADDED_TO_STAGE, loadYourSVGs);

これを3Dオブジェクトに変換する方法は、3Dライブラリによって異なります。 Away3DでSprite3Dでビットマップ素材を使用することができました。 Sprite3Dクラスが使用するオブジェクトになります。あなたの3Dライブラリがあなたの3Dオブジェクトに追加できるように、あなたの3DライブラリがMovieClipsの使用をサポートすることを願っています。さもなければ、あなたは私が次の例で行ったように、ムービークリップからbitmapMaterialを抽出するために使用する必要があります:上記の関数で

public function movieClipToBitmapMaterial(mc:MovieClip):BitmapMaterial { 
     var bmData:BitmapData = new BitmapData(mc.width, mc.height, true, 0xFFFFFF); 
     bmData.draw(displayObject); 
     return new BitmapMaterial(bmData); 
    } 

あなたの入力は、あなたのSVGをロードしたウィッヒにムービークリップになります。

私はこれについてはわかりませんが、この機能を使用することで、品質を落とさずに好きなだけスケールを変更することができます。

私の入力が助けてくれることを願っています! 幸運

PS:あなたのプロジェクトへのリンクからSWCを追加し、提供された例をチェックすることを忘れないでください。あなたのオリジナルの質問には、シャンフーシャンの素晴らしいコメントもご留意ください。 3Dライブラリを使用する必要はありません。

+1

そのcode.google urlはもう有効ではありません。 https://github.com/AndyA/as3svgrendererlib作品 – Brad

-3

サラム、

それは非常に簡単です:

  1. オープンillustartrorで "name.svg" ファイル。
  2. "name.ai"と保存してください
  3. これをすべてステージにインポートします。
+1

これは "彼らは飛んで"です。つまり、コードを介して - エディタを使用しないでください。 – teynon