2008-09-13 3 views
3

Flex에서 오래된 DOS 또는 메인 프레임 터미널의 일부 에뮬레이션을 수행해야합니다. 예를 들어 아래 이미지와 같은 것입니다.플렉스의 터미널 에뮬레이션

alt text http://i36.tinypic.com/2encfes.png

서로 다른 색깔의 텍스트는 충분히 쉽지만, 같은 노란색 배경으로 다른 배경 색상을 할 수있는 능력은 표준 플래시 텍스트의 기능을 넘어이다.

특정 장소에 텍스트를 입력하고 텍스트를 "터미널"위로 스크롤 할 수 있어야 할 수도 있습니다. 어떻게 내가 이걸 공격 할 수 있겠 어? 아니면 더 나은 여전히, 어떤 종류의 일을위한 기존의 코드/구성 요소?

답변

1

이 글꼴은 너비와 높이가 고정되어 있으므로 배경 비트 맵을 동적으로 만드는 것이 어렵지 않으며 아마도 가장 쉽고 빠른 해결책 일 것입니다. 실제로 크기를 올바르게 지정하면 문자 당 하나의 늘어진 픽셀 만 나타납니다.

문자의 배경에 따라 픽셀 색상을 지정하십시오. 사용 TextField.getCharBoundaries

2

-Adam

는 배경을 원하는 분야에서 첫 번째와 마지막 문자의 사각형을 얻을 수 있습니다. 이 사각형에서 전체 영역에 걸쳐 사각형을 구성 할 수 있습니다. 텍스트 필드 뒤에 또는 텍스트 필드의 부모에 배치 된 Shape에 배경을 그릴 때 사용합니다. 당신은 예를 들어 요청

업데이트, 여기에 문자 범위에서 사각형을 받으시는 방법 :

var firstCharBounds : Rectangle = textField.getCharBoundaries(firstCharIndex); 
var lastCharBounds : Rectangle = textField.getCharBoundaries(lastCharIndex); 

var rangeBounds : Rectangle = new Rectangle(); 

rangeBounds.topLeft = firstCharBounds.topLeft; 
rangeBounds.bottomRight = lastCharBounds.bottomRight; 

당신이 대신이 작업을 수행 할 수있는 전체 라인에 대한 사각형을 찾으려면 :

var charBounds : Rectangle = textField.getCharBoundaries(textField.getLineOffset(lineNumber)); 

var lineBounds : Rectangle = new Rectangle(0, charBounds.y, textField.width, firstCharBounds.height); 

당신은 당신의 배경을 페인트 할 텍스트 범위의 경계가 , 텍스트 필드를 가정 (텍스트 필드의 부모의 updateDisplayList 방법이 작업을 수행 할 수는 [0에 위치 0] 및 흰색 텍스트를 가지고 있으며, textRangesWithYellowBackground 것을 노란색 배경이 있어야 텍스트 범위를 대표하는 사각형의 배열)입니다 :

graphics.clear(); 

// this draws the black background 
graphics.beginFill(0x000000); 
graphics.drawRect(0, 0, textField.width, textField.height); 
graphics.endFill(); 

// this draws yellow text backgrounds 
for each (var r : Rectangle in textRangesWithYellowBackground) 
    graphics.beginFill(0xFFFF00); 
    graphics.drawRect(r.x, r.y, r.width, r.height); 
    graphics.endFill(); 
} 
+0

확실히 아, 더 자세한 정보를 제공 나를 표시는. ;-D Upvoted! –

+0

이 작업을 수행하는 완전하게 작동하는 mxml 예제 파일을 추가한다고 가정하지 않습니까? 나는 머리를 완전히 감싸는 데 어려움을 겪고있다 ... – Evan

+0

나는 도움이되지는 않지만 의미는 없다. 내가 제시 한 코드가 문제를 해결하는 데 필요한 코드라고 생각합니다. 나머지는 그냥 배관입니다. – Theo