2010-12-16 4 views
1

텍스트 필드를 복제하려고합니다. 먼저 mc.getChildAt (0)로 텍스트를 가져온 다음 모든 내용을 새 텍스트 필드에 복사합니다. 내가 가지고있는 문제는 getChildAt가있는 movieclip에서 텍스트 필드를 제거한다는 것입니다. 이동하지 않고 텍스트 필드의 속성을 가져 오는 방법은 무엇입니까? 아니면 다른 것 일 수도 있고 내가하고있는 일도 괜찮습니다. 모든 통찰력은 큰 도움이 될 것입니다 ...as3 스테이지에서 텍스트 필드를 제거하지 않고 복제합니다.

var dupeTField:MovieClip = duplicateTextField($value.sourceImg.getChildAt(0)); 

private function duplicateTextField($textField):MovieClip 
     { 
      var currTextField:TextField = $textField; 
      var dupeTextHolder:MovieClip = new MovieClip(); 
      var dupeTextField:TextField = new TextField(); 
      dupeTextField.text = currTextField.text; 
      dupeTextField.textColor = currTextField.textColor; 
      dupeTextField.width = $textField.width; 
      dupeTextField.height = $textField.height; 
      dupeTextHolder.addChild(dupeTextField); 


      return dupeTextHolder; 

     } 

답변

1

나는 당신이 다른 곳에서 문제를 발견 할 것이라고 생각합니다. getChildAt은 부모로부터 대상을 제거하지 않으며 내가 게시 한 기능이 나를 위해 광고 한대로 작동하여 원본에 영향을주지 않고 복제 클립을 만듭니다. 이 같은

+0

권리는, 문제는 다른 곳 이었지만, 도움을 주셔서 감사합니다. – pfunc

0
private var dupeTField:MovieClip; 

    private function init():void 
    {   
     //getChildAt will return a DisplayObject so you 
     //should cast the return DisplayObject as a TextField 
     var tf:TextField = $value.sourceImg.getChildAt(0) as TextField; 

     dupeTField = duplicateTextField(tf); 

     //don't forget to add your duplicate to the Display List 
     //& make sure to change the x, y properties so that 
     //it doesn't sit on top of the original 
     addChild(dupeTField); 

    } 

    private function duplicateTextField(textField:TextField):MovieClip 
    { 
     var dupeTextHolder:MovieClip = new MovieClip(); 
     var dupeTextField:TextField = new TextField(); 

     //if you pass a TextField as a parameter, you don't need to 
     //replicate the instance inside the function, simply access the 
     //parameter directly. 
     //You may consider copying the TextFormat as well 
     dupeTextField.defaultTextFormat = textfield.defaultTextFormat; 

     dupeTextField.text = textField.text; 
     dupeTextField.textColor = textField.textColor; 
     dupeTextField.width = textField.width; 
     dupeTextField.height = textField.height; 

     dupeTextHolder.addChild(dupeTextField); 


     return dupeTextHolder; 

    } 
2

사용 무언가 :

package com.ad.common { 
    import flash.text.TextField; 
    import flash.utils.describeType; 

    public function cloneTextField(textField:TextField, replace:Boolean = false):TextField { 
     var clone:TextField = new TextField(); 
     var description:XML = describeType(textField); 
     for each (var item:XML in description.accessor) { 
      if ([email protected] != 'readonly') { 
       try { 
        clone[[email protected]] = textField[[email protected]]; 
       } catch(error:Error) { 
        // N/A yet. 
       } 
      } 
     } 
     clone.defaultTextFormat = textField.getTextFormat(); 
     if (textField.parent && replace) { 
      textField.parent.addChild(clone); 
      textField.parent.removeChild(textField); 
     } 
     return clone; 
    } 
} 
관련 문제