SpinTextクラスを作ってみた。
root上でしか使えないのが難点。もう少し改良しなければ使えない。
【使用方法】
以下のコードを記述し、ファイル名「SpinText.as」で保存。
同階層にflaファイル(ファイル名は任意)を作成し、画面下部のコードをタイムラインの第1フレームに記述し、保存。
SpinText.as
class SpinText{
/*プロパティ*/
static var targetTxt:String;
static var targetTxtLength:Number;
static var chrSet:String;
static var chrSetLength:Number;
static var target_mc:MovieClip;
static var _speed:Number=0.5;
static var depth:Number=0;
/*コンストラクタ*/
function SpinText(_txt:String,_size:Number,TF_x:Number,TF_y:Number,TF_width:Number,TF_height:Number){
depth++;
targetTxt=_txt;
targetTxtLength=targetTxt.length;
target_mc=_root.createEmptyMovieClip("myMC"+depth,depth);
target_mc.createTextField("myTxt",1,TF_x,TF_y,TF_width,TF_height);
target_mc.myTxt.text=targetTxt;
//TextFormatインスタンスを生成、TextFieldに適用
var TF:TextFormat=new TextFormat();
TF.size=_size;
TF.font="Arial Black";
target_mc.myTxt.setTextFormat(TF);
Spin(targetTxt,targetTxtLength);
}
function Spin(_text:String,txtLength:Number):Void{
chrSet="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXY";
chrSetLength=chrSet.length;
var speed:Number=0;
target_mc.onEnterFrame=function():Void{
var step:Number=Math.floor(speed+=_speed);
for(var i:Number=step;i<txtLength;i++){
var rndTxt:String=chrSet.substr(Math.floor(Math.random()*chrSetLength), 1);
this.myTxt.replaceText(i,i+1,rndTxt);
}
this.myTxt.replaceText(step,step+1,_text.substr(step, 1));
if(step>=txtLength){
delete this.onEnterFrame;
}
}
}
}
SpinText.fla
var st:SpinText=new SpinText("SET YOUR LOCATION",20,0,0,300,100);
var st2:SpinText=new SpinText("SET YOUR NAME",20,0,50,300,100);
var st:SpinText=new SpinText("スピンさせるテキスト",フォントサイズ,x座標,y座標,テキストフィールドの幅,テキストフィールドの高さ);

コメントする