2012-06-02 27 views
5

Herhangi bir kütüphane veya SVG dosyasını içe aktarma eylemleri için herhangi bir araç bilen var mı? Bir SVG dosyasını flaş içine alıp bir movieclip'e veya tercihen düz bir 3B nesnesine dönüştürmem gerekiyor. Son hedef, Artırılmış gerçeklik ile bir vektör dosyası uygulamaktır.Actionscript 3 - İçe aktarma SVG dosyası

+1

bu bir saf as3 projesidir veya ikincisi, bunu açıklayabildiğim bir görüntü denetimini kullanarak bunu oldukça basit bir şekilde yapabilirseniz http://raghuonflex.wordpress.com/2009/06/10/loading-svg -en-in-flex-apps/hemen hemen her nesne üzerinde üç 2.5D döndürme özelliği elde edersiniz http://www.flepstudio.org/forum/flash-cs4-tutorials/3550-rotationx-rotationy.html – shaunhusain

+0

@ shaunhusain Şu anda bir actioncript 3 projesi, ancak gerekirse esnek kullanabilirim. Gerçi flex hakkında pek bir şey bilmiyorum. (Şu anda başka bir IDE'ye de param yetmez.Adobe Flash CS6'm var, yani eğer kullanmak mümkün ise, esneklik için bazı öğreticilere bakabilirim.) – teynon

+0

Yeni bir proje oluşturmaya gittiğinizde ona esnek bir proje yapma seçeneğine sahip olmanız gerektiğine inanıyorum. sizin için swcs içerecektir. Flex'te svg ile karışık sonuçlar elde ettim, fxg, flaşta "primitif" çizim yöntemine doğrudan dönüştüğü için daha iyi çalışıyor gibi görünüyor. CS6'yı bulamıyorum ama şu anda http://helpx.adobe.com/flash/kb/supported-file-formats-flash-professional.html – shaunhusain

cevap

6

Bunun için harika bir kütüphane indirilebilir: http://code.google.com/p/as3svgrendererlib/ Uygulaması ve güvenilirliği kolaydır. Kodu uygulamak için iki yol olduğunu unutmayın.

 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); 
    } 

başka yolu daha kısa olduğunu ve sadece küçük SVG ya da sadece birkaç yük varken gitmek için bir yol olabilir: size daha fazla denetim sağlar çünkü aşağıdakileri tercih ederim.

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

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

iki önemli not: 1. genişliği veya yüksekliği SVG açıklığı ve Sprite SVG'yi yükledikten sonra 0 genişlik ve yükseklik vardı ebeveyni yakalamak mümkün görünmüyor. Tüm SVG'leri AS3'e yüklemeden önce aynı boyutta yaparak çözdüm. Bundan sonra, yüklenen SVG'leri yeniden boyutlandırmak için ScaleX'i kullandığım boyutları ve scaleY'yi biliyordum. 2. Bu kodu kullanabilmeniz için öncelikle sahne mevcut olmalıdır. Aşağıdaki kod, sorunla karşılaşmayacağınızdan emin olun: yourDisplayClass.addEventListener(Event.ADDED_TO_STAGE, loadYourSVGs);

Şimdi bunu düz bir 3B nesnesine nasıl dönüştürdüğünüze bağlı olarak, 3B Kitaplığınıza bağlıdır. Sprite3D'nizde bitmapmaterial kullanabileceğiniz Away3D ile çalıştım. Sprite3D sınıfı kullanılacak nesne olacaktır. Umarım 3D Kitaplığınız MovieClips kullanımını destekler, böylece bunları 3D Nesnenize ekleyebilirsiniz. Else i aşağıdaki örnekte yaptığımız gibi klipten bitmapMaterial ayıklamak için kullanmak zorunda olacak: Yukarıdaki fonksiyonunda

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

girişiniz size SVG'yi yüklediğiniz wich üzerine film klibi olacaktır.

Bundan emin değilim ama bu işlevi kullanarak kaliteyi kaybetmeden istediğiniz kadar ölçekleme yeteneğini kaybedeceğinizi düşünüyorum.

Umarım bazı bilgilerim yardımcı oldu! İyi şanslar

Not: SWC'yi bağlantıdan projenize eklemeyi ve sağlanan örnekleri kontrol etmeyi unutmayın. Orijinal sorunuzda shaunhusain'in mükemmel yorumunu lütfen unutmayın. 3D Kitaplığı kullanmanız gerekmeyebilir.

+1

destekli 5.5 formatı var. Bu code.google url artık geçerli değil. https://github.com/AndyA/as3svgrendererlib çalışır – Brad

-3

Salam,

Çok kolaydır: illustartror içinde

  1. Aç "ismi.svg" dosyası.
  2. "name.ai" olarak kaydetme
  3. Flaşla sahneye içe aktarın, hepsi bu.
+1

Bu "onlar uçuyor" dir. Başka bir deyişle, kod aracılığıyla - editörü kullanmamak. – teynon