2012-04-09 2 views
0

와 나는 어도비의 문서 Using FXGEmbedding application assets을 읽고,하지만 MXML을 통해 FXG를 포함 할 수만 있습니다 -사용 FXG 그래픽 MXML와 함께 작동,하지만 액션 스크립트

enter image description here

MyStars합니다. MXML :

<?xml version="1.0" encoding="utf-8"?> 
<s:ViewNavigatorApplication 
    xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" 
    firstView="views.Home"> 
</s:ViewNavigatorApplication> 

Home.mxml은 (괜찮 작동, MXML을 통해 FXG 삽입 할 때) :

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:comps="assets.*" 
     title="Home"> 

    <comps:Star /> 
</s:View> 

Star.fxg (/ Star.fxg SRC/자산에 위치) :

<?xml version='1.0' encoding='UTF-8'?> 
<fxg:Graphic xmlns:fxg="http://ns.adobe.com/fxg/2008" version="2">  
    <fxg:Path x="9.399" y="10.049" data="M 82.016 78.257 L 51.895 69.533 L 27.617 89.351 L 26.621 58.058 L 0.231 41.132 L 29.749 30.52 L 37.714 0.241 L 56.944 24.978 L 88.261 23.181 L 70.631 49.083 Z"> 
     <fxg:fill> 
      <fxg:SolidColor color="#FFFFFF"/> 
     </fxg:fill> 
     <fxg:stroke> 
      <fxg:SolidColorStroke 
       caps="none" 
       color="#4769C4" 
       joints="miter" 
       miterLimit="4" 
       weight="20"/> 
     </fxg:stroke> 
    </fxg:Path> 
</fxg:Graphic> 

나는 그러나 같은 플렉스 모바일 프로젝트에 여전히 (ActionScript를 통해 FXG 그래픽을 instansiate 할 때

enter image description here

Call to a possibly undefined method Star 
:), I는 컴파일 오류가 Home.mxml :

<?xml version="1.0" encoding="utf-8"?> 
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
     xmlns:s="library://ns.adobe.com/flex/spark" 
     xmlns:comps="assets.*" 
     title="Home"> 

    <fx:Script> 
     <![CDATA[ 
      import spark.core.SpriteVisualElement; 

      private static const STAR:SpriteVisualElement = new Star(); 
     ]]> 
    </fx:Script> 

<s:BitmapImage source="{STAR}" /> 
</s:View> 

나는 또한 수입 된 컴포지션을 시도했습니다; 및/또는 새로운 comps.Star();

내가 SRC/에 FXG 파일을 이동 및 XMLNS을 사용 = "*" 모든 작품 콤프.

import assets.Star 
private static const STAR:SpriteVisualElement = new Star(); 

내가 그 컴파일러 오류를 제거합니다 의심 : 나는 가정

답변

1

코드를 기반으로 액션에서 가져 오기 스타는 다음과 같이 될 것입니다. 그러나 SpriteVisualElement를 BitmapImage의 소스로 사용할 수 있는지 확실하지 않습니다. SpriteVisualElement를 부모 컨테이너의 자식으로 추가하고이를 수행하기 위해 Flex 구성 요소 수명주기를 사용해야 할 수 있습니다.

이 문제를 해결하기 위해 실험을 해본 결과 contributed this code to Apache Flex입니다. The specific class is here. 어떤 이유로 FXG 요소가 SpriteVisualElements가 될 수 있다는 사실을 놓쳤습니다. 내 FXGImage 클래스를 사용한다고해도 ActionScript에서 구성 요소를 만드는 경우 ActionScript에서 구성 요소의 크기를 조정하고 배치 할 필요가 없습니다.

+0

"import assets.Star;" 잘 작동합니다. 고마워요. Image와 BitmapImage는 * source = *로도 사용할 수 있습니다. 불행히도 그들은 * width *와 * height *를 설정할 때 작동하지 않습니다. FXG 파일을 스케일링하는 것은 어떤 이유로 잘 작동하지 않습니다. –

+1

@AlexanderFarber 이미지의 크기가 조정되지 않는 문제입니까? 또는 종횡비가 유지되지 않는 문제입니까? 다음은 내 FXGImage 구성 요소 샘플입니다. http://www.flextras.com/labs/FlextrasFridayLunch/2012/FXGImage/FXGImageSample.html. 높이 및 너비 (높이/너비)를 변경할 수 있습니다. – JeffryHouser

+0

좋아, FXGImage 구성 요소가 훨씬 좋아 보입니다. Image와 BitmapImage는 크기가 변하지 만보기에는 좋지 않습니다. 예를 들어 위의 앱에서이 코드를 사용하는 경우 : \t

1

FXG 그래픽의 경우 아트 워크 크기에주의하십시오. FXG를 사용하여 개체를 만들면 아이콘 주변의 공백이 계산됩니다. 아트웍 크기를 아이콘 크기로 설정해야합니다 (아이콘 주변에 여분의 공백 없음). 이렇게하면 bitmapImage에 embed 할 때 FXG 자산이 훨씬 좋아 보입니다.