2011-04-20 4 views
1

호기심에서 벗어나 플렉스 앱의 모든 부분을 최적화하기 위해 노력하고 있습니다. 현재, 모든 버튼/스킨을 최적화하려고합니다. 내가 사용하는 몇 개의 단추와 이들을 생성하는 데 사용하는 몇 가지 샘플 코드를 연결했습니다.플렉스 3의 스킨 버튼 방법?

더 효율적이고 사용 가능하며 전반적으로 개선하는 방법에 대해 조언 해주십시오. 감사!

First Button, Icon and gray backgroundSecond And Third Buttons, different backgrounds but no iconsFourth Button, similar to first, different colorsButton with icons but no background

당신이 볼 수 있듯이, 우리의 버튼은 매우 다를 수 있지만, 비슷한 모양과 느낌을 할 수 있습니다. 현재, 나는 이런 식으로 뭔가 설정하여 '상태 스킨'을 만드는 오전 : 다음

skin: ClassReference('com.mysite.assets.skins.NavigationButtonSkin'); 

을 NavigationButtonSkin은 다음과 같이 보입니다 : 나는 직진 부품의 일부를 주석

public class NavigationButtonSkin extends UIComponent { 

    // imports, constructor, etc 

    protected override function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void { 

    // initialize fillColors, fillAlphas, roundedCorners, etc 

    switch(name){ 
     case 'upSkin': 
     fillColors = [getStyle('backgroundColor'),getStyle('backgroundColor2')];  
     break; 
     // do the same for overSkin, downSkin, disabledSkin, etc 
    } 

    // use this.graphics to draw background 
    // use this.graphics to draw border on top of background 

    } 

} 

을하지만, 이 작업이 불량/비효율적 인 방법인지 그리고 개선 방법인지 알려주십시오.

감사합니다.

답변

4

성능 측면에서 보면 UIComponent 대신 ProgrammaticSkin에서 피부를 상속하는 것이 좋습니다. ProgrammticSkin 자체는 Shape에서 상속되며 verticalGradientMatrix, drawRoundRect 등의 스키닝을위한 유틸리티 메소드를 제공합니다.

그게 내가 말할 수있는 모든 것입니다.

좋은 점은 비트 맵/스킨 기반 스킨 대신 프로그래밍 방식 스킨을 사용한다는 것입니다.

+0

ProgrammaticSkin을 사용하는 자습서/책/예가 있습니까? 나는 그것을 google 할 것이고, 과거에 그것을 망쳤다. 그러나 당신이 어떤 예를 든다면, 그것은 좋을 것이다! – andrewpthorp

+0

은 UIComponent 대신 ProgrammaticSkin에서 확장되어 작동합니다. –

0

좋아, 나는 당신이 이걸 가지고 어디로 가는지 알지 못한다. 네가 제대로하고 있는지 알고 싶을 뿐이야? 나는 당신의 skin: ClassReference('com.mysite.assets.skins.NavigationButtonSkin');이 좋은 CSS의 CSS에 추가되었다고 추측하고 있지만, 나는 보이지 않는다. 당신은 그것을 Actionscript에서 모두하고있다. 비효율적이며 본질적으로 mxml 레이아웃의 모든 기능을 잃어 버리고 Catalyst에 대한 지원 (앞으로 필요하다면)이 될 것입니다.

Flash Builder에서 스킨을 만들면 기본 버튼 스킨이있는 MXML이 만들어지고 원하는대로 편집 할 수 있습니다. 또한 ActionScript를 통해 mxml을 사용하여 상태 기반 디자인을하는 것이 더 쉽습니다. 거기에서 수정해야하며 각 버튼 유형에 대해 별도의 스킨이 있어야합니다.

편집 : 오, 젠장,이게 플렉스 3이 아니야 ... 프로그램에 참여하기.) 플로리안의 말을 들어라.

+0

그래, 우리는 최적화를 시작할 시점에 이르렀습니다. 어디에서나 도움을 얻을 수 있습니다/속도는 내가 고려하고있는 것입니다. 우리는 이것을 통해, Flex 3 (지금 당장)에 갇혀 있습니다 : P 앞으로 나아갈 때, 상태있는 mxml 스킨은 내가 읽은 것입니다! – andrewpthorp

+0

개발 시간면에서 ActionScript 스킨은 MXML 스킨에 비해 비효율적 일 수 있습니다. 스킨 코드를 읽을 때 MXML이 그리는 것을 "보기"더 쉬울 수 있기 때문입니다. 그러나 성능 측면에서 볼 때 ActionScript 스킨에는 장점이 있습니다. Flex 4의 Adobe 모바일 구성 요소5 MXML 대신 ActionScript 스킨을 사용하십시오. 특히 프레임리스트에서 큰 차이를 만들었 기 때문에 특히 목록 같은 경우에 사용하십시오. – joshtynjala

+0

Adobe의 Alex Harui는 최근에이 주제에 대한 블로그 게시물을 올렸으며 Flex 3에서 Flex 4로 마이그레이션 한 후에도 성능이 좋지 않은 응용 프로그램에 ActionScript 스킨을 사용할 것을 제안했습니다. http://blogs.adobe.com/aharui /2011/04/migratory-foul-performance-problems-migrating-from-flex-3-x-to-flex-4-x.html 당연히, 그것은 효율성이 무엇을 의미하는지에 달려 있습니다. MXML 스킨이 작업을 완료하고 성능이 뛰어나다면, 꼭 사용하십시오. Flex에서 AIR 모바일을 사용하거나 복잡한 복잡한 응용 프로그램을 사용하는 경우 ActionScript 스킨을 선택적으로 사용하는 것이 현명한 방법 일 수 있습니다. – joshtynjala

관련 문제