ActionScript: 2007年1月アーカイブ

今回は文字列からの文字の抽出です。
すでに多くの場所で紹介されているスクリプトでしょうが、それでも紹介して損があるわけではないかと思いますので。

たとえば、外部テキストに格納した文字列をロードして一文字ずつ別々の効果やフォントで表示したいときなどに使用します。
以下のスクリプトは抽出した文字をそれぞれ配列に格納しています。

//スクリプトここから(使用可能文字チェック)
var arr:Array = new Array();//文字列格納
var str:String = "あいうえおかきくけこ";//文字列
var len:Number = 0;//文字列長
len = str.length;//文字列長を取得
for(var i:Number = 0 ; i < len ; i++){
arr[i] = str.charAt(i);//文字の抽出
}
//スクリプトここまで

質問がありましたら質問掲示板にどうぞ。素材のスクリプトについての質問も技術的な指摘もお待ちしています。

Wikipedia ActionScript

今回は外部htmlファイルのロードについて紹介いたします。
正確には「ダイナミックテキストにて外部テキストファイルの記述内容をhtmlとして表示する」ですね。
ただし、Flashはhtml形式に完全に対応しているわけではないので、そのままブラウザで表示するのと同じようには見えません。
使用できるタグが代表的なもの(a,b,br,font,i,img,li,p,span,textformat,u)に限られる上に、画像に対するテキストの回り込みの解除が困難である等の問題があります。

以下、サンプルスクリプトです。

//スクリプトここから(外部htmlロード)
//テキストファイル「textarea.txt」がimgフォルダ内に格納されている場合
//html文書についてはtextarea.txt内の変数text1に記述されている場合
//つまり「&text1=htmlの内容&」という形式
//textAはダイナミックテキストのインスタンス名
System.useCodepage = true;//外部テキスト文字化け防止
var wordA = new LoadVars();//文字列格納用
wordA.load("img/textarea.txt");//テキストファイルロード
wordA.onLoad = function():Void{//ロード完了時
textA.html = true;
textA.htmlText = eval("wordA.text1");
}
//スクリプトここまで

質問がありましたら質問掲示板にどうぞ。素材のスクリプトについての質問も技術的な指摘もお待ちしています。

Wikipedia ActionScript

青春BではFlash素材を配布しています。
その関係もあってか、Flash関係の知識を目的として訪れる人も少なからずいるみたいです。
Flash本に執筆したことも影響しているのでしょう。
なので、今後はActionScript関係の記事をblogに頻繁に掲載しようかと思っています。
ActionScriptのコンテンツを始めようとも考えました。
ですが、ActionScriptを深く語るほどには詳しくないです。
それに、青春BはFlashサイトではないですので、blogでの記事掲載のみに留めるつもりです。もしも数が増えたら別コンテンツ化も考えます。
当面はblog上でのみ掲載とします。Flashの特定のスクリプトについて検索した方に向けてというところですね。

今回はメールアドレスチェックを紹介します(すでに多くの場所で紹介されているスクリプトであるかとは思いますが)。
つまり、来訪者がメールアドレスを入力したとき、入力したアドレスがメールアドレスとして適切なフォーマットかどうかを確認するスクリプトです。
半角英数と一部記号以外を使っていないかとか、@が使われているかとかですね。
ActionScript3.0は正規表現をサポートしているので簡単にできるのでしょうが、現在の主である2.0はサポートしていないのでちょっとややこしいソースになりました。
簡単に説明すると、入力された文字を一つずつ抜き出して、利用可能な文字一つ一つとマッチングを行います。

以下、使用可能な文字以外が使われている場合にfalseを返すスクリプトです。

//スクリプトここから(使用可能文字チェック)
//文字列を受け取って利用可能か否かをtrueかfalseで返します
//mailtextが入力されたメールアドレス、ccharが使用可能な文字となります
function mcheck(mailtext:String):Boolean{
var mchar:String = "";
var cchar:String = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.@";
for (var i=0 ; i < mailtext.length ; i++){
mchar = mailtext.charAt(i);
if (cchar.indexOf(mchar,0) == -1)return false;
}
return true;
}
//スクリプトここまで

charAtは指定した位置の文字を抽出するメソッド、indexOfは文字列検索メソッドで指定の文字が見つからなかった場合は-1を返します。
つまり一文字ずつメールアドレスを取得して、それをindexOfと比較して指定の文字が見つからないときにはfalseを返します。
すべての文字が見つかった際にはtrueを返しています。

さらに、@が使用されているかもチェックしているスクリプトは以下の通りです。

//スクリプトここから(使用可能文字チェック+@使用チェック)
function mcheck(mailtext:String):Boolean{
var mchar:String = "";
var cchar:String = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-_.@";
for (var i=0 ; i < mailtext.length ; i++){
mchar = mailtext.charAt(i);
if (cchar.indexOf(mchar,0) == -1)return false;
}
for (var i = 0 ; i < mailtext.length ; i++){
if(mailtext.charAt(i) == "@")return true;
}
return false;
}
//スクリプトここまで

応用すれば特定のドメインのメールアドレスを拒むとかも可能にできます。

質問がありましたら質問掲示板に書き込んでくだされば(乏しい)実力の範囲でお答えいたします。
青春B内の素材のスクリプトについての質問にも答えます。
間違いの指摘もお待ちしています。

Wikipedia ActionScript

1

概要

青春B運営メンバー多口カタンによる雑記blogです。
自己紹介はこちら。開発物をまとめたものはこちら
 
ヘッダーイラストはkojiさん制作です。
感想・意見・要望等ありましたら気軽にフォームにてコンタクトくださいませ。
 
Twitterはじめましたので誰でも気軽に声かけてくださいね。