2010-03-19 2 views
6

솔루션 :는 액션 스크립트하는 AddChild 먼저 표시 객체를 필요로하지

같은 문제가있을 경우, addElement() 대신하는 AddChild()의


난 그것을 무슨 짓 mxml에서 actionsctipt로 이동하려고합니다. 나는 <s:Rect>을 만들고 속성을 설정했지만 추가하는 데 어려움이 있습니다.

var aRect:Rect = new Rect(); 
//set properties like aRect.x, aRect.y, aRect.width, aRect.height 

//tried adding it various ways 
addChild(aRect); 
Application.addChild(aRect); 
Application.application.addChild(aRect); 
stage.addChild(aRect); 

하지만 오류 1067 점점 계속 : 관련되지 않은 유형 flash.display의에 사각형 : 형 spark.primitives의 값의 암시 적 강제를 원래 MXML에서의 DisplayObject

, 그것은이었다 바로 <s:Application> 제품 내부 거래는 무엇

<s:Application> 

    <s:Rect id="aRect" x="10" y="10" width="15%" height="15%"> 
     //then fill code here, removed for readability 
    </s:Rect> 

</s:Application> 

안에 중첩하지, 내가 ActionScript를 MXML보다 더 좋을 거라 생각 했어요.

+0

, 그러나 이것에 대해 궁금합니다. –

+0

문서 클래스 또는 다른 클래스의 코드 예제가 있습니까? – JanD

+0

@JanD,이 코드는 기본 mxml 응용 프로그램에 있습니다 (단 하나의 mxml, 아무 구성 요소 또는 아무것도), 그리고 물론 actionscript 코드는 스크립트 태그의 init() 함수에 있으며 creationComplete에서 트리거됩니다. 거의 모든 것들이 정확히 같습니다. 이제는 이러한 시각적 요소를 만들려고합니다. wi 액션 스크립트. – touB

답변

1

MXML 기반 응용 프로그램에서 Flex 4가 디스플레이 계층 구조의 작동 방식을 크게 변경했기 때문입니다. addChild()가 원하는만큼 간단하게 작동하지 않기 때문에 다소 혼란 스럽습니다. 데이터 제공자에게 요소를 추가 한 다음 해당 요소를 표시하는 논리를 추가해야합니다 (추가 할 요소, 위치, 모양 등). , 등) 다른 곳에서 처리됩니다. 그것은 매우 유용한 변화입니다. 왜냐하면 그것은 당신을 당신의 관심사를 아주 구체적인 방법으로 분리 시키도록 강요하기 때문입니다. DataProvider에 요소를 모두 추가하면 런타임시에도 레이아웃 객체를 자유롭게 바꿔 응용 프로그램의 모양을 변경할 수 있습니다.

편집 : 기술적으로는 변경된 displayList 자체가 아닙니다. Flex에서 사용되는 기본 단위가 이제는 "그룹"입니다. 심지어 Application : 그룹을 확장합니다. 그룹 (또는 최상위 레벨 응용 프로그램)에 컨텐츠를 추가 한 다음 그룹에 레이아웃을 지정하여 추가 한 항목을 표시하는 방법을 알려줍니다.

+0

Myk에 관한 블로그 게시물을 작성하고 여기에 답변을 추가하는 데 관심이 있습니까? "일단 요소를 모두 dataProvider에 추가하면 런타임시에도 레이아웃 객체를 마음대로 바꿔 응용 프로그램의 모양을 바꿀 수 있습니다." 특히 흥미 롭고 단어보다는 코드로 더 잘 이해할 수 있습니다. 감사. – touB

+0

하, 아마도 누군가가 그걸 써야한다고 생각합니다. O'Reilly 언론사의 Flex 4 Cookbook이 그것을 설명하는 데 정말로 도움이된다는 것을 알고 있습니다. 곧 나올거야. 그 동안 나는 좋은 글쓰기를 둘러 볼 것입니다. 거기에 뭔가가있을 것이라고 확신합니다. 찾으면 여기에 게시 할 것입니다. – Myk

+0

다음은 설명하는 비디오 자습서입니다. - http://flex4.org/2009/06/23/flex-4-layouts/ 기본적으로 대부분의 Flex 4보기 (s : Application 포함)에는 레이아웃 속성이 있습니다. 그게 어떻게 객체가 표시되는지 결정하고, 당신은 네 가지 기본 것들 ​​이외에 자신 만의 맞춤형 레이아웃을 만들 수 있습니다. 비디오는 그것을 아주 잘 설명합니다! – Myk

0

예, DisplayObject가 필요합니다. spark.primitives.Rect에 익숙하지 않습니다.하지만, 아마도 Sprite를 새로 만들고 Graphics 객체에 메서드를 호출하여 사각형을 그릴 수 있습니다.

0

실제 문서에 따르면 Application 클래스의 addChild 메서드는 displayObject가 필요합니다.

2

addChild(aRect);에서 addElement(aRect);으로 변경하려고 시도했으며 그 작업은 아름답게 처리되었습니다.

0

우리는 종종 addElement를 사용하여 플래시 에셋 (swf swc) (표시 객체)을 추가하는 데 어려움을 겪습니다.

지금 :(더 농구이 권리를 할 수있는 방법에 노력하고

이 또한 내 SWC 패키지 탐색기에서 볼 수없는 점프있어 (왜?)

전에 플렉스 4 사용하지 마십시오
관련 문제