2011-03-11 2 views
0

저는 플래시 개발자가 아니지만 복사/텍스트가 올바르게 할당되지 않은 문제를 디버깅하고 있습니다. .as 파일에서 내 주요 콘텐츠 영역 텍스트가 업데이트되지 않는 이유는 무엇입니까? 참조가 잘못 되었습니까?

, 제목과 소제목가 할당 작업은 다음과 같습니다

195       body.heading.htmlText = heading; 
196       body.sectionheading.htmlText = nav_name; 
197       body.subheading.htmlText = subheading; 
198       body.subheading.htmlText = 'testtt'; 

그러나, 본체 복사하지 않습니다 :

180       body.textholder.myText.htmlText = 'mederTest'; 

내가 밖으로 모두 찾을 수있는 몇 가지 방법이있다 텍스트 영역 (할당 가능한 htmlText이있는 요소)을 프로그래밍 방식으로? Flash 자체에서는 제목/부제목 개체를 선택할 수 없습니다. 캔버스에있는 것처럼 보이지 않습니다. 그들은 숨겨진 것처럼 보입니다.




편집 : 디버깅의 제 24 SWF에있어. 마침내 실제 텍스트를 업데이트해야합니다.

428     var bodyClip:MovieClip = eval("bodyparts.bodycontent_"+tmpclipname.id+"_0"); 
429     ExternalInterface.call("console.log" , bodyClip) 
430     for (var p in bodyClip) { 
431      ExternalInterface.call("console.log" , p) 
432      ExternalInterface.call("console.log" , bodyClip[p]) 
433      ExternalInterface.call("console.log" , bodyClip[p]) 
434      for (var thing in bodyClip[p]) { 
435       if (thing === 'htmlText') { 
436        ExternalInterface.call("console.log" , 'OMG'); 
437        ExternalInterface.call("console.log" , bodyClip[p][thing]) 
438       } 
439       
440       if (thing === 'myText') { 
441        ExternalInterface.call("console.log" , 'SUPEROMG'); 
442        ExternalInterface.call("console.log" , bodyClip[p][thing]['htmlText']) 
443       } 
444       ExternalInterface.call("console.log" , thing) 
445      } 
446     } 

그것은 드릴 다운과 bodyClip은 '으로 myText'속성과 인스턴스를 가질 때, 나는 업데이트 할 것을 이잖아.

왜이 행이 업데이트되지 않습니까?

body.textholder.myText.htmlText = 'mederTest'; 

프로그래밍 방식으로 말해서, 내가 잘못된 개체/인스턴스를 참조 할 가능성이 높기 때문일 수 있습니다. .as 파일에 body에 대한 참조가 없습니다.

첫 번째 .as 파일 또는 해당 전역 개체에 정의 된 것으로 가정 할 수 있습니다. 누구든지 내게 빌려 줄 수 있니?

답변

1

당신은 TextField 유형의 객체를 찾고, 표시 목록을 걸을 수 :

function findTextFields(container:DisplayObjectContainer):Array 
{ 
    var result:Array = []; 

    // Examine each child of the container 
    for(var i:int = 0; i < container.numChildren; i++) 
    { 
     var obj:DisplayObject = container.getChildAt(i); 

     // If the child is a TextField, add it to the result array 
     if(obj is TextField) 
      result.push(obj); 

     // If the child is a DisplayObjectContainer, recurse on it 
     var c:DisplayObjectContainer = obj as DisplayObjectContainer; 
     if(c !== null) 
      result.concat(findTextFields(c)); 
    } 
    return result; 
} 
+0

그건 그렇고, 이것은 액션 스크립트 2입니다. 두 번째'.as '파일에서 업데이트해야한다는 점을 제외하고는 이전'.as'에서 업데이트해야 할 내용을 발견했기 때문에 제 질문을 업데이트했습니다. 나를 돕는 마음? –

+0

아, 네 말이 맞아, 그건 AS2 야. 죄송합니다. 실제로 AS2에 대해 전혀 알지 못합니다. 귀하의 문제가 귀사의 문제와 매우 유사합니다 (편집에 게시 한 코드가 AS3에서 실제로 의미가 없음). 다행히도 도움을 줄 수있는 AS2 전문가가 있습니다. – Aaron

0

을뿐만 아니라 TextField의, 우리가 플래시에 일반 텍스트 필드를 내려 놓고 경우에 수출됩니다 객체 인도의 StaticText있다 그것은 역동적이지 않습니다.

찾고있는 텍스트 필드가이 유형 일 수 있습니다.이 경우 텍스트를 설정할 수 없습니다.

하지만이 텍스트 필드를 다시 편집하여 동적으로 만들 수 없다면 새로운 텍스트 필드를 동적으로 만드는 것이 한 가지 해결책이 될 것입니다. 이전의 너비, 높이, 글꼴, 색 등을 복사하십시오. background 속성을 true로 설정하거나 이전 TextField의 visible 속성을 false로 설정하십시오. 이제 새 TextField를 바로 위에있는 기존 TextField의 부모 자식으로 추가하십시오. 원하는대로 텍스트를 편집하십시오. D

0

if 문에서 발견 된 텍스트를 수정하려고합니까? 아니면 다른 곳?

if (thing === 'myText') { 
    bodyClip[p][thing]['htmlText'] = "mederTest" 
} 

.. 변경하려는 경우 TextField가 존재하지 않기 때문에 가능합니다. 재생 헤드가 TextField가 포함 된 프레임에 없으면 TextField가 없습니다.

또 다른 제안은 Textfield의 _alpha를 변경하여 올바른 Textfield에서 작업하고 있는지 확인하는 것입니다.

관련 문제