2012-12-27 5 views
1

저는 Adobe Flash에서 JSFL을 사용하기 시작했습니다. 새로 만든 레이어에 텍스트 필드를 추가하고 인스턴스 이름을 "속성"으로 변경하려고합니다. 속성 레이어 지수는 0 등록 정보 텍스트 필드JSFL 방금 추가 한 텍스트 필드의 인스턴스 이름은 어떻게 설정합니까?

만들기입니다 그리고 나는 다음과 같은 오류가 속성 레이어 만들기 속성 레이어 에 대 한 검색 :

fl.outputPanel.clear(); 

var document = fl.getDocumentDOM(); 

var timeline = document.getTimeline(); 

var layers = timeline.layers; 

var propertiesLayer = null; 

var propertiesTextBox = null; 

var layerIndex = 0; 

fl.trace("Searching For Properties Layer"); 

for (var index in layers) 
{ 
    if(layers[index].name == "properties") 
    { 
     propertiesLayer = layers[index]; 
     layerIndex = index; 
    } 
} 

if(!propertiesLayer) 
{ 
    fl.trace("Creating Properties Layer"); 
    timeline.addNewLayer("properties"); 
    layerIndex = timeline.findLayerIndex("properties"); 

    fl.trace("Properties Layer Index is " + layerIndex); 
    propertiesLayer = layers[layerIndex]; 

    timeline.setSelectedLayers(layerIndex * 1); 

    fl.trace("Creating Properties Text Field"); 
    document.addNewText({left:0, top:-100, right:100, bottom:0}); 

    propertiesLayer.frames[0].elements[0].name = "properties"; 

    fl.trace("Setting Properties Text Field's Instance Name"); 
    //propertiesTextBox.name = "properties"; 

    fl.trace("Setting Properties Text Field"); 
    document.setTextString("test"); 
} 

내 출력 창이 표시 : 여기

내 코드입니다 새 플래시 문서를 테스트 할 때 TypeError : propertiesLayer.frames [0] .elements [0]은 (는) 속성이 없음

나는 잃어 버렸고 어떤 도움이라도 대단히 감사 할 것입니다.

답변

1

코드가 수정되어 작동합니다. 다음은 코드를 수정 한 부분입니다. 그래도 좀 더 개선이 필요합니다.

if(!propertiesLayer) 
{ 
     timeline.addNewLayer("properties"); 
     layerIndex = timeline.findLayerIndex("properties"); 

     propertiesLayer = layers[layerIndex]; 

     timeline.setSelectedLayers(0); 

     document.addNewText({left:0, top:-100, right:100, bottom:0}); 

     document.setTextString("test"); 

     var element = document.selection[0]; 

     document.selection[0].textType = "dynamic"; 
     element.name = "properties"; 

} 
0

addNewText()를 호출 할 때 작성된 텍스트 필드의 유형이 마지막으로 작성된 유형입니다. 따라서 정적 필드를 만든 경우 코드를 실행하면 정적 텍스트 필드에 인스턴스 이름 ("이름"속성을 사용하여 설정 됨)을 가질 수 없기 때문에 본 것처럼 오류가 발생합니다. 문제의 빠른 해결 방법은 다음과 같습니다.

propertiesLayer.frames[0].elements[0].textType = "dynamic"; 
propertiesLayer.frames[0].elements[0].name = "properties"; 

희망이 있습니다.

+0

더 자세히 살펴보면 레이어 선택 방법이 있다는 것을 깨달았습니다. 내가 더 좋은 대답을하면 다시 게시 할 것입니다. – Jordan