2014-01-31 2 views
0

직사각형을 그려 무대에 추가하는 별도의 클래스를 만들려고하는데 문제는 클래스 자체에서이 작업을 수행하려고 할 때입니다. 단계.무비 클래스를 자식 클래스에서 스테이지에 추가합니다.

다음과 같은 내 설정 :

Main.fla 문서 클래스 Main.as이 있습니다 동영상 클립 예, 당신은에 액세스 할 수 없습니다

package { 

import flash.display.MovieClip; 
import flash.display.Sprite; 

public class Window extends Sprite { 

    public function Window(x:Number= 0, y:Number= 0, width:Number = 100, height:Number=100,title:String="Window"):void { 
     var newWindow:MovieClip = new MovieClip(); 
     addChild(newWindow); 
     newWindow.graphics.beginFill(0xFF9966, 1); 
     newWindow.graphics.drawRect(x, y, width, height); 
     trace("Instance created");  
     } 
    } 
} 
+0

현재 게시 된 코드에 문제가 보이지 않습니다. 'this' 대신에'newWindow'를 추가하여 실패 했습니까? :) – Vesper

+0

내가 무대에 추가하려고 할 때 나는'형식 오류 오류 에게 다음있어 : 오류 # 1009 : – RootOfMinusOne

+0

오른쪽, reference.' null 객체의 속성이나 메서드에 액세스 할 수 없습니다 것은 처음 클래스의 인스턴스를 만들 수는'단계 '속성이 null입니다. 문서 클래스 만 스테이지에 액세스 할 수 있습니다. 스테이지에 추가하는 대신'this.addChild (xxx)'를 사용하는 것이 좋습니다. 왜냐하면 SWF가 다른 SWF에 임베드 될 수있는 환경이 있기 때문에 적절한 스테이지를 얻지 못할 것이기 때문입니다. 또한 'this'에 추가하면 창을 관리하는 데 도움이됩니다. – Vesper

답변

0

을 isadded

package 
{ 
import flash.display.Sprite; 
import Window; 
public class Main extends Sprite 
{ 

    public function Main():void 
    { 
     var newWindow:Window = new Window(); 

    } 

} 

} 

클래스를 stage 새로 생성 된 개체에서 기존 스테이지를 인식하지 못하기 때문입니다. 거기에 아이를 추가 할 수있는 유일한 방법은 this입니다. 그러나 컨테이너에 객체를 올바르게 중첩하면 컨테이너의 속성 인 xy의 단일 할당으로 복잡한 창을 이동하는 것과 같이 더 강력한 작업을 즉각 수행 할 수 있습니다. 그래서, 당신이해야 할 일은 메인 클래스에 addChild(newWindow)입니다.

package 
{ 
import flash.display.Sprite; 
import Window; 
public class Main extends Sprite 
{ 

    public function Main() 
    { 
     var newWindow:Window = new Window(); 
     addChild(newWindow); // THIS 
     // also here you can do "newWindow.x=100;" for example 
    } 

} 

} 
+0

문서 클래스에서 추가 할 때 작동하지만 약간 혼동 스럽지만 처음에'Window' 클래스에서 MovieClip을 추가했을 때 새로 만든 MovieClip이 스테이지 표시 목록에 추가되지 않았습니까? 렌더링되지 않았기 때문에? 왜? 나는 그것이 효과가 없었던'this'을 사용하려고했습니다. 죄송합니다. 어리석은 것처럼 보일 수도 있지만 as3을 배우기 시작했습니다. 나와 함께 곰이 있습니다. – RootOfMinusOne

+0

예, 스테이지 표시 목록에 'this'를 먼저 추가해야했기 때문입니다. 디스플레이 목록의 계층 구조는 스테이지에서부터 시작하여 중첩하는 것처럼 깊게 중첩됩니다. 귀하의 경우에는'stage -> newWindow (Window) -> newWindow (MovieClip)'처럼 보입니다. 이 newWindow는 두 개의 다른 객체입니다. 'Window' 클래스 생성자 안에'addChild (newWindow) '를 통해 두 번째 화살표를 만드는 작업을 완료했지만 첫 번째 화살표가 만들어지지 않을 때까지'newWindow'의 사각형이 새롭게 인식되지 않기 때문에 표시되지 않습니다 생성 된 MC. – Vesper

+0

나는 고마워한다. – RootOfMinusOne

관련 문제