2010-08-14 2 views
0

좋아요. actionscript 3와 flex 3.5로 박스를 그리려고합니다. 먼저 몇 가지 :actionscript/flex를 배우려고하는데, mxml없이 박스를 그려야합니다.

1) 난 그냥 메모장, 전혀 IDE를 사용하여 예이 분명히 AS3 가능합니다 (I 모두에서 어떤 MXML 파일을 사용하고 있지 않다) 2 플렉스 있지 않다) 3) 나는 상속을 사용하지 않습니다. 즉, 클래스를 확장하지 않고 있습니다.이 특정 비트의 코드 만 구성을 통해 작동하도록하려고합니다.

어쨌든 이것은 코드 자체입니다 (파일 이름은 MAIN.as 임). :

package 
{ 
    import flash.display.*;  
    import mx.core.Application;  
    import flash.events.*;  
    import mx.collections.*; 
    import flash.geom.*;   
    import mx.controls.*; 
    import flash.text.*;   
    import mx.events.*; 
    import mx.styles.*; 

    public class MAIN 
    { 
     public var APPLICATION:Application = Application(Application.application); 
     public function MAIN() 
     { 
      APPLICATION.layout = 'absolute'; 
      var BOX:Sprite = new Sprite(); 
      BOX.graphics.beginFill(0xFF0000,1); 
      BOX.graphics.drawRect(0,0,400,400); 
      BOX.graphics.endFill(); 
      APPLICATION.addChild(BOX); 
     } 
    } 
} 

잘 컴파일되지만 아무 것도 표시하지 않습니다. 나는 빨간 상자를보아야하지만, 지금 내가보고있는 것은 모두 빈 화면이다. 이 클래스는 MAIN 클래스를 사용하여 Sprite를 확장 한 다음 상자 변수를 모두 제거하지만 다시 확장 명령을 사용하지 않으려 고합니다. 죄송합니다. 수입이 게시물에서 다소 smooshed있어, 그들은 정말 그 문제에 상관 없지만 그래도별로 중요하지 않습니다.

+1

MovieClip 또는 Sprite로 Main 클래스를 확장하지 않으면이 작업을 수행 할 수 없습니다. 이런 식으로 Application 클래스를 호출하더라도 (표시 할 수있는 것은 아닌지) 표시 목록에 추가해야합니다. – PatrickS

+0

MXML을 사용하지 않지만 Flex 클래스 (mx 네임 스페이스)를 사용하고 있다고 언급했습니다. Flex를 사용하지 않으려면 mx 네임 스페이스를 사용할 수 없습니다. 응용 프로그램 클래스는 flex의 일부입니다. – Newtang

답변

0

addChild를 사용할 때 Flex 구성 요소 (예 : Application, List, Canvas 등)는 다른 Flex 구성 요소를 하위로만 추가 할 수 있습니다. Shape, Sprite, Movieclip과 같은 원시 AS3 프리미티브를 추가하려면 또는 사용자의 경우에 APPLICATION.rawChildren.addChild(BOX);

0

기본 클래스 인 경우 Sprite를 확장해야한다고 생각합니다.

두 번째로 Flex에 대한 전문가는 아니지만 프레임 워크를 제대로 초기화하지 않으면 Flex의 클래스를 실제로 사용할 수 없다고 생각합니다. 난 항상 mxml을 사용하여 이것을 보았다. 아마도 Actionscript 만 사용하여이 작업을 수행 할 수있는 방법이 있지만 실제로 그 점이 보이지 않습니다. 응용 프로그램 및 기타 플렉스 항목을 사용하려면 엔트리 포인트를 mxml 파일로 지정하십시오. 그렇지 않으면 순수한 Actionscript 만 사용하십시오.

추신 : 그냥 Sprite를 확장하는 코드 작업을 이미 이해했다고 읽었습니다. 그러나 상속 또는 구성에 대한 사용자의 선호도가 무엇이든간에 상자를 표시하려면 어느 시점에 표시 목록에 연결해야합니다. 그래서 당신은 스프라이트를 가지고 그것에 이끌 렸습니다. 그러나 그것을보기 위해서는 디스플레이 목록에 추가해야합니다. 표시 목록에 표시 객체를 추가하려면 일부 표시 객체 컨테이너에 대한 참조가 필요합니다. Sprite를 확장하면 클래스는 1) 컨테이너와 2) 디스플레이 목록에 첨부됩니다. 당신의 메인 클래스는 적어도 Sprite 여야합니다. 너는 여기에 선택의 여지가 많지 않다고 생각한다.

0

문서 클래스는 스테이지에 대한 ActionScript의 진입 점입니다. Document 클래스 객체의 인스턴스는 표시 목록의 모든 객체의 "루트"속성으로 존재하며 표현할 수 있습니다. DisplayObject 클래스의 root 속성은 다음과 같이 정의 된 DisplayObject를 반환해야합니다.

로드 된 SWF 파일의 표시 객체의 경우 root 속성은 표시 목록의 트리 구조 부분에서 최상단 표시 객체입니다 해당 SWF 파일로 표현됩니다.

따라서 문서 클래스는 무언가를 무대에 표시 할 수 있도록 DisplayObject 여야합니다.

Flex 구성 요소에 대해서는 mx.core에 대한 참조가 필요하지 않습니다.기본 AS 파일이 DisplayObject에서 확장되는 경우 응용 프로그램 또는 다른 Halo 구성 요소 (프레임에서 참조해야하는 타임 라인을 포함하는 Flash CS * Professional의 객체를 포함하지 않는 한 주로 MovieClip은 사용되지 않습니다. BOX를 만들 수 있습니다. Sprite를 문서 클래스의 표시 목록에 추가 할 수 있습니다.

this.addChild (BOX);

모든 것이 작동합니다.

관련 문제