0

アクション スクリプト 3 を使用してフラッシュでクイズを作成しています。以下のコードは、テキストが 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();
4

2 に答える 2

1

おそらくこれを試してみてください。これは、フレームに 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 )

上記のメソッドを呼び出して、回答配列を渡します。これにより、アイデアが得られます。

于 2016-04-14T15:06:13.690 に答える
0

コンテンツを更新した後、フォント サイズを再度更新する必要があります。最初のフレームで使用しているのと同じコードを使用できるはずです。

于 2016-04-14T14:26:39.700 に答える