如何通过关键帧继续格式化盒子

问题描述:

我使用动作脚本3在Flash中进行测验。下面的代码使文本变得更小,如果它超过2行,以便它可以放在问题框中。这工作!但是,当您更改关键帧时,该框的格式会发生变化。例如,当问题出现时,字体会发生变化,但当您回答问题和关键帧更改时,字体会发生变化,使其溢出边缘。如何通过关键帧继续格式化盒子

如何使关键帧的格式化继续进行。

这是游戏的动作。

var smallLimit:int = 1; 
var format:TextFormat = new TextFormat(); 


myTextField11.text = shuffledAnswers1[0]; //puts into the text boxes the random answers 
myTextField21.text = shuffledAnswers1[1]; 
myTextField31.text = shuffledAnswers1[2]; 
myTextField41.text = shuffledAnswers1[3]; 

var testSize11:int = 25; 
var testSize21:int = 25; 
var testSize31:int = 25; 
var testSize41:int = 25; 

while(testSize11 > smallLimit){ 

    updateFormat11(testSize11); 
    trace(myTextField11.numLines ); 

    if(myTextField11.numLines > 1){ 
     testSize11--; 
    }else{ 
     testSize11 = smallLimit; 
    } 
} 
while(testSize21 > smallLimit){ 

    updateFormat21(testSize21); 
    trace(myTextField21.numLines ); 

    if(myTextField21.numLines > 1){ 
     testSize21--; 
    }else{ 
     testSize21 = smallLimit; 
    } 
} 
while(testSize31 > smallLimit){ 

    updateFormat31(testSize31); 
    trace(myTextField31.numLines ); 

    if(myTextField31.numLines > 1){ 
     testSize31--; 
    }else{ 
     testSize31 = smallLimit; 
    } 
} 
while(testSize41 > smallLimit){ 

    updateFormat41(testSize41); 
    trace(myTextField41.numLines ); 

    if(myTextField41.numLines > 1){ 
     testSize41--; 
    }else{ 
     testSize41 = smallLimit; 
    } 
} 

function updateFormat11(size11:int):void{ 
    format.size = size11; 
    myTextField11.setTextFormat(format); 
    } 
function updateFormat21(size21:int):void{ 
    format.size = size21; 
    myTextField21.setTextFormat(format); 
} 
function updateFormat31(size31:int):void{ 
    format.size = size31; 
    myTextField31.setTextFormat(format); 
    } 
function updateFormat41(size41:int):void{ 
    format.size = size41; 
    myTextField41.setTextFormat(format); 

} 

这是关键帧2,它在文本框中设置问题。

myTextField11.text = shuffledAnswers1[0]; 
myTextField21.text = shuffledAnswers1[1]; 
myTextField31.text = shuffledAnswers1[2]; 
myTextField41.text = shuffledAnswers1[3]; 
stop(); 
+0

我会为你写一个例子。 –

也许试试这个。这假设你有4个文本框和4个答案的数组。

//Frame 1 
var smallLimit:int = 1; 
//put all your answer fields in array 
var tFields:Array = [myTextField11,myTextField21,myTextField31,myTextField41] 
var format:TextFormat = new TextFormat(); 
//your default font size 
var defaultFontSize:int = 25; 

function updateAnswerText(value:Array ) 
{ 
    var fontSize:int = defaultFontSize; 
    for(var i in tFields) 
    { 
     //reset to default 
     fontSize = defaultFontSize; 
     //add text 
     tFields[i].text = value[i]; 
     //setformat 
     updateTextFormat(tFields[i] , fontSize) 
     //are we overflow 
     while(tFields[i].numLines > 1 && fontSize > smallLimit) 
     { 
      --fontSize; 
      updateTextFormat(tFields[i] , fontSize) 
     } 
    } 
} 
function updateTextFormat(field:TextField, value:int) 
{ 
    format.size = value; 
    field.setTextFormat(format); 
} 
updateAnswerText(shuffledAnswers1) 

//在每一帧都有答案文本框

var tFields:Array = [myTextField11,myTextField21,myTextField31,myTextField41] 
updateAnswerText(shuffledAnswers1) 

调用上面的方法,并通过你的答案阵列。这会给你一个想法。

更新内容后,您将不得不再次更新字体大小。你应该可以使用你在第一帧中使用的相同的代码。

+0

我试过这个,但它给了我多重复制和冲突错误 –