플래시 (AS3)의 무대에서 모두 준비된 텍스트 필드를 확장하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1617469

  •  06-07-2019
  •  | 
  •  

문제

나는 플래시 (AS3)의 무대에서 모두 준비된 텍스트 필드를 확장 할 수있는 방법을 찾고 있습니다.

public class ChildTextField extends TextField 
{
    //code for childTextField comes here    
}

무대에 인스턴스 이름 'thetextfield'가있는 텍스트 필드를 배치했습니다. 이제 Flash이 텍스트 필드가 Childtextfield 유형이라고 말하고 싶습니다. 그래서 내 문서 클래스에서 나는 그 텍스트 필드를 자식 텍스트 필드라고 선언합니다.

public class DocumentClass extends Sprite()
{
    public var thetextfield : ChildTextField;
}

이것은 유형 강요 실패 오류를 던진다. 라이브러리 기호로 할 수있는 것처럼 플래시 IDE의 텍스트 필드에 사용되는 클래스를 변경할 수 있습니까?

도움이 되었습니까?

해결책

두려워하지 마십시오. 확장 된 텍스트 필드 클래스를 추가하려면 ActionScript를 사용해야합니다.

편집 : 해킹 방법이 있습니다. 원천: http://board.flashkit.com/board/archive/index.php/t-738887.html

사실, 나는이 정확한 문제에 대해 전에 다가옵니다. 제 경우에는 다른 다른 비 코더 아티스트가 사용할 다른 행동이있는 텍스트 필드를 만들려고했습니다. 모든 AS3이지만 치명적인 결함이 있었으며 현재 솔루션 인 AS3 및 JSFL의 조합 인 원래 솔루션을 알려 드리겠습니다.

All AS3 솔루션은 두 가지를 제외하고는 훌륭합니다. 첫째, 빌드 타임이 아닌 런타임에 발생합니다. 즉, 영화가 올바르게 초기화되지 않은 작지만 실제 시간이 있다는 것을 의미합니다. 둘째, 영화에 여러 프레임이 있으면 잘 재생되지 않습니다. 기본 아이디어는 변경하려는 텍스트 필드를 감지하고 교체 할 물건을 구축 한 다음 무대에서 교체하는 것입니다. 텍스트 필드를 확장하거나 텍스트 필드가 포함 된 클래스를 만들고 인터페이스를 처리하여이를 수행 할 수 있습니다. 당신이 처음으로하고 있다고 가정 해 봅시다. 당신이 관심있는 모든 필드를 복사하는 SmartTextField에 생성자를 추가하십시오.

public function SmartTextField(TextField tf)
{
this.text = tf.text; //continue with copy of anything relevant. 
}

메인 영화에는 교체하려는 텍스트 필드를 감지하고 대체하는 코드가 있습니다.

 var toreplace:Array = findTextFields(); 
 var tf:TextField;
 var stf:SmartTextField; 
 var where:int;
 for (int i = 0; i < toreplace.length;i++)
 { tf = TextField(toreplace[i]);
   stf = new SmartTextField(tf); 
   where = getChildIndex(tf); 
    addChildAt(stf,where); 
    removeChild(tf); 
 }

위의 점을 제외하고는 잘 작동합니다.

JSFL 솔루션은 자세히 살펴보기에는 너무 복잡하지만 기본 사항은 다음과 같습니다. 원하는 새로운 동작으로 텍스트 필드를 감싸는 AS3 클래스가 있습니다. 선택한 항목을 반복하는 JSFL 스크립트를 작성하고 텍스트 필드 인 경우 새 래퍼 클래스의베이스 클래스가있는 기호로 변환합니다. 여기에는 저자 시대에 발생하는 장점이 있으며 위치, 인스 캐나 이름 및 기타 물건과 같은 것들이 자동으로 보존됩니다. JSFL이 일할 수있는 작은 성가신 단점이 많다는 단점이 있습니다.

편집 : 물론, 이것이 단일 영화에만 해당되는 경우 JSFL 변환기 스크립트를 포기하고 손으로 할 수 있습니다. 기호 -> 래퍼베이스 클래스로 변환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top