2011-11-22 2 views
0

타임 라인에 텍스트 필드가 포함 된 FLA가 많은 프로젝트가 있습니다. 우리는 이제 XML에서 가져온 오른쪽에서 왼쪽으로 된 텍스트로 아랍어로이 프로젝트를 현지화해야합니다. 제 생각에 이것은 TLF 텍스트 필드에서만 가능하다는 것입니다.클래식 텍스트 필드를 TFL 텍스트 필드로 동적으로 변환 하시겠습니까?

이러한 모든 texfield를 TLF로 수동 변환하는 것은 엄청난 작업이 될 것입니다. 프로그래밍 방식으로 일반 텍스트 필드를 TLF 텍스트 필드로 설정하는 방법이 있습니까?

+0

이 런타임에 발생하는 것이 필수 그것을인가? 또는 컴파일하기 전에 이러한 변경을 자동화하는 제작 시간 (Flash IDE) 스크립트를 사용할 수 있습니까? – bigp

+0

필수 사항은 아닙니다. 나는 당신이 어떻게 저작 시간 스크립트를 만들지 몰라요? 우리는 Flash CS5.5를 사용하고 있습니다. – Rich

+0

제작 시간 스크립트는 JSFL입니다 (이 경우에는 (Flash IDE JavaScript 언어) ...이 부분을 살펴 보도록하겠습니다. – bigp

답변

1

아니요, 없습니다. 물론, 각 프레임을 검사하고, 런타임에 기존 TextField를 제거하고 바꿀 수있는 클래스를 만들 수 있습니다 (표시 목록을 반복하고 성능을 향상시키지 않더라도 if (timeline.getChildAt(i) is TextField)으로 선택하면됩니다). 하지만 나는 너에게 조언하지 않을거야. 기존 프로젝트를 거치지 않고도 다음 프로젝트에서 TLF 텍스트로 전환하십시오.

아랍어 글꼴을 사용하는 것은 실제 번거 로움이 있습니다. 문자 순서를 바꿔야 할뿐만 아니라 합자도 있습니다 (두 개 이상의 인접 문자 조합을 다양하게 조합하면 더 복잡한 기호를 만들 수 있습니다) ; TLF 텍스트를 사용하는 경우조차도 완벽하게 올바르게 할 수있는 방법이 거의 없습니다. 입력 TextField를 사용하지 않는 경우 Flaraby은 기존 고전 텍스트를 기반으로 적절한 버전을 만드는 데 도움이 될 수 있습니다. 그래도 준비하십시오 - 당신은 약간의 장단점을 가지고 살아야 할 수도 있습니다.

+0

특히 다국어 앱/소프트웨어의 경우 준비가 중요합니다."쉬운 작업"인 프로젝트의 요소를 클라이언트로 변환하는 것은 프로젝트의 중간에서 (또는 최악의 경우, 완료까지) 항상 요구되는 악몽이지만, 실제로는 거대 프로젝트와 큰 관련이 있습니다 전환을 수행하기 위해 여러 개의 플래시 기호 및 타임 라인을 통해 스캔해야하는 경우 차단 위험이 있습니다. 자동화 된 스크립트조차도 완벽하지는 않습니다. – bigp

2

정교한 작업을위한 JSFL 스크립트를 작성하는 것이 편한 경우 Flash DOM 트리를 탐색하고 FriendsofEd의 "Extending Flash MX 2004"사본을 가져 오거나 적어도 JSFL 참고서 미리보기 PDF : http://www.friendsofed.com/books/1590593049/3049_Ref.pdf. 구식이지만 개념, 속성 및 메서드가 크게 변경되지는 않았습니다. 일부 새로운 기능을 제외하고는 분명히 TLF 텍스트 필드 중 하나입니다.

특정 필요에 따라 다음을 스캔해야합니다.

  • 메인 타임 라인;
  • 타임 라인이있는 기본 타임 라인의 인스턴스 (MovieClip, Buttons, Graphics).
  • 라이브러리 심볼의 타임 라인.
  • 도서관 기호 자녀의 타임 라인 (즉, 이미 이전 단계 방식으로이 일을하고 있기 때문에 중복 될 수도 있지만,

먼저가있어, 요소를 현재 문서의 타임 라인을 스캔하려면 좋은 생각과 같이, 현재 타임 라인의 참조를 저장하기 :

var doc = fl.getDocumentDOM(); 
var tl = doc.getTimeline(); 

참고 : 이것은 "현재 위치에서 편집"의 기호가 될 것인지 (현재 표시된 타임 라인의 기준을 사로 잡고주의하십시오 모드, 다른 장면 등이 스크립트를 실행하여 "메인 타임 라인"언제를 선택하도록하려면, 나는 다음 그것을 잡아 것으로 예상 :

var tl = doc.timelines[0]; //Grabs the Main Timeline 

참고 : 내가 틀렸다면 위의 내용을 수정하십시오!

프로젝트에 다른 키 프레임에 TextField가 있는지 또는 단일 프레임 타임 라인에 있는지 여부를 확실히 모르는 경우 타임 라인의 각 프레임을 스캔하여 TextField 인스턴스가 있는지 확인하는 것이 좋습니다.

이렇게하려면 인스턴스 또는 JSFL 용어 "요소"에서 Timeline 객체에서 직접 검색 할 수 없다는 점에 유의해야합니다. 거기에 가기 위해서는 좀 더 깊이 파야합니다!

기본적으로이 경로를 통과해야합니다

  • 현재 Timeline을;
  • Timeline레이어;
  • Layer 오브젝트의 프레임;
  • Frame 개체의 요소이면,
  • TextField 인스턴스인지 여부를 확인하십시오.

일단 해당 TextField를 찾으면 TLF 텍스트 필드로 "변환"해야합니다. 변환, 의미 ... 새 TLF 텍스트 필드 만들기, 기존 TextField 객체의 재사용 가능한 모든 속성 전달, 기존 TextField가있는 동일한 인덱스 (z 깊이)에 TLF 텍스트 필드 배치 및 삭제. 필요에 따라 아랍어 글꼴 지원에 필요한 모든 Embedding 및/또는 TLF 속성을 설정할 수 있습니다.

이 변환 프로세스를 수행하는 방법에 대한 자세한 내용을 살펴 보지 않고도 하나의 타임 라인 만 스캔하는 것은 어려운 임무임을 알 수 있습니다. 불가능하지는 않지만 간단히 몇 단계.

다른 필수 스캔 (다른 일정, 라이브러리 심볼 등)에서 재사용 할 수 있도록 필요한 단계를 캡슐화하기 위해 신중하게 JSFL 함수를 만들면이 작업의 복잡성이 크게 줄어 듭니다. 당신을 도와줍니다

희망 (이 같이 즉시 해독제 아니더라도는 "여기 대답이야,이 걸릴 ..."!)

+0

JSFL으로 만든 새 텍스트 필드가 TLF 또는 Classic인지 여부를 설정할 수없는 것처럼 보입니다. http://help.adobe.com/ko_KR/flash/cs/extend/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7f59.html 및 여기 http : //를 참조하십시오. /help.adobe.com/en_US/flash/cs/extend/WS5b3ccc516d4fbf351e63e3d118a9024f3f-7fa4.html :-( – jolyonruss

관련 문제