AS3版ランダムテキスト
October 15, 2008 1:33 AM9
右のナビゲーションでも使っているテキストがランダムに変わって、最後に指定のテキストに落ち着くアニメーションをAS3に移植してみました。
AS2版のほうはこちらのサイト様を参照しました。
テキストくるくるライブラリ - pandajustice.jp
ソースを読めば以外と簡単。
もうちょっと簡潔&仕様追加してAS3に移植してみました。
package
{
import flash.display.DisplayObjectContainer;
import flash.text.TextField;
import flash.events.Event;
public class RandomText
{
private var sourceTxt:String = "_/-=+%&$#!?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
private var content:DisplayObjectContainer;
private var targetFld:TextField;
private var targetText:String;
private var sliceCnt:int;
private var playTime:uint;
public function RandomText(content:DisplayObjectContainer, targetFld:TextField, time:uint)
{
this.content = content;
this.targetFld = targetFld;
playTime = time;
targetText = targetFld.text;
}
public function start():void
{
targetFld.text = "";
sliceCnt = 0;
content.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
++sliceCnt;
var randomTxt:String = "";
for (var i = 0; i < targetText.length; ++i)
{
if (sliceCnt - playTime < i)
{
randomTxt = randomTxt+sourceTxt.charAt(Math.floor(Math.random()*sourceTxt.length));
continue;
}
randomTxt = randomTxt+targetText.charAt(i);
}
targetFld.text = randomTxt;
if (randomTxt == targetText)
{
content.removeEventListener(Event.ENTER_FRAME, onEnterFrame);
}
}
}
}
使うときはこんな感じで。
package
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
public class Main extends MovieClip
{
private var randomText:RandomText;
public function Main()
{
randomText = new RandomText(this, test_txt, 10);
randomText.start();
test_txt.addEventListener(MouseEvent.ROLL_OVER, onRollover);
}
private function onRollover(e:MouseEvent):void
{
randomText.start();
}
}
}
JayH
挑戦してみたんですが、エラーがでます。
使う時はこんな感じでと書いてある方(Main.as)の13行目のtest_txtという所に自分のムービクリップのインスタンス名を入れればいいのでしょうか?それとも何か違うのでしょうか?
アドバイス頂けたらありがたいです。
December 7, 2008 1:41 PM
Anonymous
targetFld:TextFieldと書いてあるのでテキストフィールドですね。
December 7, 2008 1:50 PM
JAYH
>targetFld:TextFieldと書いてあるのでテキストフィールドですね。
それはRandomText.asの26行目の""の中に文章を入れればよいと言う事なのでしょうか?
December 9, 2008 10:22 AM
bonkura
インスタンス名を入れてください。
テキストフィールドについてはFlashのヘルプをご参照ください。
December 9, 2008 10:50 AM
bonkura
ちなみにRandomText.asは触りません。
new RandomText(this, test_txt, 10);
のtest_txtは自分が動かしたいテキストフィールドのインスタンス名です。
December 9, 2008 10:51 AM
NAO
参照させて頂かせているのですが、
メインフレームのアクションがわかりません。
December 21, 2008 2:17 PM
Anonymous
メインフレームはつかってなくてドキュメントクラスですね。
December 21, 2008 2:23 PM
NAO
ドキュメントクラスにて「Main」と設定したらさらにエラーが・・・。
1180: 未定義である可能性が高いメソッド RandomText の呼び出しです。
1046: 型が見つからないか、コンパイル時定数ではありません : RandomText。
インスタンスはレイヤーにダイナミックテキストで配置してるのですが
根本的に間違っているのでしょうか?
初心者で申し訳ございません。
よろしかったら教えてください。
December 21, 2008 2:42 PM
NAO
クラス名が相違してたみたいです。
できました。
ありがとうございます。
このMainの部分にbottonModeなど記述して
リンクさせることは可能なのでしょうか?
December 21, 2008 2:49 PM