0

すべてのフレームでテキストフィールドのサイズが大きくなり、不透明度が低くなるテキスト効果を作成しようとしています。動的テキストフィールドのscaleXプロパティとscaleYプロパティを使用して拡大していますが、左側の登録ポイントを固定したままにしています。半径方向外側にスケールアップするか、中心点を固定してスケールアップしたいと思います。誰かがこれを行う方法を教えてもらえますか?

4

4 に答える 4

1
 textfield.x -= textfield.width /2;
 textfield.y -= textfield.height /2;

xとyが0の場合、これは役に立ちます

于 2010-02-16T21:27:11.040 に答える
1

TextField(つまり、を含むスプライト)のラッパーを簡単に作成TextFieldして、登録ポイントを中央に強制することができます。TextFieldが動的である場合は、にautoSize設定されていることを確認してLEFTください。x/yその後、位置をに設定するだけです-textField.width*.5/-textField.height*.5。もちろん、スケーリングは親に適用する必要があります。

于 2010-02-16T21:29:56.143 に答える
0

I used the code mga posted above and it works. I am posting the entire thing here, as it took me a little time to figure out exactly what to do. What I noticed is that I needed to NOT embed the fonts to get it to work. I'd like to know why? Anyway, this works for me:

package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
import flash.text.TextFormat;

public class LearningScrollingMain extends MovieClip {
    private var _scalemax:Number = 20;
    private var _ymin:Number = 10;
    private var _scalegrow:Number =1.05;
    private var _scalemin:Number=1;

    public function LearningScrollingMain() {
        drawText("The quick brown fox jumps over the lazy dog", 24, 400, 200);
    }

    private function drawText(str:String, size:int, px:int, py:int):void {
        var mc:MovieClip = new MovieClip();
        var tf:TextFormat = new TextFormat();
        tf.align = "center";
        tf.size=size;
        var _txt:TextField = new TextField();
        _txt.defaultTextFormat=tf;
//        _txt.embedFonts = true;
        _txt.wordWrap = false;
        _txt.selectable = false;
        _txt.autoSize = TextFieldAutoSize.CENTER;
        _txt.antiAliasType = "advanced";
        _txt.text = str;
        _txt.x = -_txt.width / 2;
        _txt.y = -_txt.height / 2;
        mc.scaleX = mc.scaleY = _scalemin;
        mc.x = px;
        mc.y = py;
        mc.addChild(_txt);
        addChild(mc);
        startMove(mc);
    }

    private function startMove(mc:MovieClip):void {
        mc.addEventListener(Event.ENTER_FRAME, moveText);
    }

    private function moveText(e:Event):void {
        var mc:MovieClip = MovieClip(e.target);
        if (mc.scaleX >= _scalemax) {
            mc.scaleX = mc.scaleY = _scalemax;
        } else if (mc.y > _ymin) {
            mc.scaleX = mc.scaleY *= _scalegrow;
        }
        if (mc.alpha <= 0.1) {
            mc.removeEventListener(Event.ENTER_FRAME, moveText);
            mc.parent.removeChild(mc);
        }
    }
}
}
于 2012-03-16T09:01:30.603 に答える