2011-12-28 3 views
0

다음은 메뉴를 채우는 코드입니다. 한 가지 중요한 부분을 제외하고는 오류가 전혀 발생하지 않고 모든 것이 훌륭하게 작동하는 것 같습니다. 내 megaPages 배열이 같다 값 ["HOME","BABIES","BRIDALS","MISC","WEDDINGS","ABOUT"]하지만 (megaPages 의해 생성) 화면에 표시되는 실제 텍스트가 : AS3에서이 임의의 텍스트 잘림을 방지하려면 어떻게합니까

strange menu problems

당신이 볼 수 있듯이

는, 텍스트의 일부 임의로 절단되고있다. 나는 그들이 메뉴 - 빌드의 다양한 단계에서 다양한 기능을 통과 할 때 텍스트 문자열을 추적했고, 항상 옳았지만 어떻게 든 각 DisplayObject가 화면에 표시 될 때 글자는 생략되었습니다 ('HOME' abd 'ABOUT'은 괜찮습니다). 나는이 문제로 어디서부터 시작할 지조차 모른다.

function buildMenu() { 
     var itemMCs = new Array(); 

     for (var i = 0; i < megaPages.length; i++) { 
      megaPages[i] = megaPages[i].toUpperCase(); 
      trace(megaPages[i]); // at each iteration, traces as follows "HOME","BABIES","BRIDALS","MISC","WEDDINGS","ABOUT" 
      var textMC = createText(megaPages[i]); 

      var itemMC = new MovieClip(); 
      if (i!=0) { 
       var newLink = new PlateLink(); 
       newLink.y = 0; 
       itemMC.addChild(newLink); 
      } 


      var newPlate = new Plate(); 
      if (i==0) { 
       newPlate.y = 0; 
      } else { 
       newPlate.y = newLink.height - 2; 
      } 
      newPlate.x = 0; 
      newPlate.width = textMC.width + (plateMargin*2); 
      itemMC.addChild(newPlate); 

      if (i!=0) { 
       newLink.x = (newPlate.width/2) - (newLink.width/2); 
      } 

      textMC.x = plateMargin; 
      textMC.y = newPlate.y + .5; 
      itemMC.addChild(textMC); 

      itemMCs.push(itemMC); 

      itemMC.x = (homeplateref.x + (homeplateref.width/2)) - (itemMC.width/2); 
      if (i==0) { 
       itemMC.y = homeplateref.y; 
      } else { 
       itemMC.y = itemMCs[i-1].y + (itemMCs[i-1].height - 6); 
      } 
      menuRef.addChild(itemMC); 

     } 

    } 

    function createText(menuTitle) { 

     trace(menuTitle); 

     var textContainer : MovieClip = new MovieClip(); 

     var myFont = new Font1(); 

     var backText = instantText(menuTitle, 0x000000); 

     backText.x = 1; 
     backText.y = 1; 

     var frontText = instantText(menuTitle, 0xFFFFFF); 

     frontText.x = 0; 
     frontText.y = 0; 

     textContainer.addChild(backText); 
     textContainer.addChild(frontText); 
     return textContainer; 
    } 

    function instantText(textContent, color) { 

     trace(textContent); // again, traces the right text each time it is fired 

     var myFont = new Font1(); 
     var myFormat:TextFormat = new TextFormat(); 
     myFormat.size = 18; 
     myFormat.align = TextFormatAlign.CENTER; 
     myFormat.font = myFont.fontName; 

     var myText:TextField = new TextField(); 
     myText.defaultTextFormat = myFormat; 
     myText.embedFonts = true; 
     myText.antiAliasType = AntiAliasType.ADVANCED; 
     myText.text = textContent; 
     myText.textColor = color; 
     myText.autoSize = TextFieldAutoSize.LEFT;   
     trace(myText.text); 

     return myText; 
    } 
+1

글꼴이 포함되어 있어야합니다. – Ronnie

+0

무엇이'PlateLink'와'Plate'입니까? – www0z0k

+0

Plate 및 PlateLink는 회색 사각형의 인스턴스이며 텍스트의 각 비트에 대한 연결 체인입니다. –

답변

2

사용중인 글꼴에 필요한 모든 문자를 포함해야합니다. 플래시에서 만든 텍스트 필드에 대한

:
는 텍스트 필드를 선택하고 속성 패널에서 '퍼가기'버튼을 누르십시오. 동적으로 생성 된 텍스트 필드에 대한

:
는 (귀하의 경우 Font1)를 수출 당신이 필요로하는 모든 문자를 포함 할 수 있는지 확인하기 위해 글꼴을 설정
.

대문자를 모두 포함하거나 특정 메뉴 항목에 필요한 문자 만 입력 할 수 있습니다.

+0

나는 당신이 말하는 것을 이해하고 있는지 잘 모르겠습니다. 이 텍스트 필드는 AS3을 통해 생성되며 내 글꼴은 Font1() 클래스로 내보내집니다. Flash Authoring 프로그램에 어떤 텍스트 필드가 있습니까? 그렇다면이 작업을 수행 할 수 있습니까? 그리고 내게 정확히 무엇이 포함됩니까? –

+0

죄송합니다. Flash를 사용하여 텍스트 필드를 만들었다 고 생각했습니다. 내 대답을 업데이트 할게. – Cadin

+0

네, 그게 라이브러리에있는 Font1의 속성에서 '모든 문자 범위 포함'을 선택했습니다. 와우, 나는 이것에 6 시간을 더 보내고 우둔한, 감사합니다 !!!! –

관련 문제