NEWS

2016.09.02 「Photoshopとpapervision3dでテクスチャ付3Dを作成する(4)」を更新しました。

  • Web creators

ActionScript

テキストエリア内の改行をカウントする -indexOf-

概要

FlashのActionScriptには文字数をカウントしたり部分的に切り出したりする関数が用意されていますが、テキストエリアの行をカウントする関数は無いためActionScriptを独自に設定して利用することになります。

サンプル解説

テキストエリア内に文字を入力し、「行数確認」ボタンをクリックすると最初に改行がある位置とテキストエリア内の改行の数が下部に表示されます。

作成法

(1) ステージの設定
  ・ActionScriptを設置するレイヤー「Action」を設定
  ・パーツを設置するレイヤー「Parts」を設定
ステージの設定
(2) コンポーネントの設置
  ・「Parts」レイヤーにコンポーネント「テキストエリア」を設置
  ・「Parts」レイヤーにコンポーネント「ボタン」を設置
コンポーネントの設置
(3) コンポーネント「テキストエリア」の設定
  ・コンポーネント「テキストエリア」を選択してプロパティを表示
  ・コンポーネント名に「com」を入力
テキストエリアの設定
(4) コンポーネント「ボタン」の設定
  ・コンポーネント「テキストエリア」を選択してプロパティを表示
  ・項目「label」に「行数確認」を入力
ボタンの設定
(5) 出力項目の設置
  ・「Parts」レイヤーにダイナミックテキストを2つ設置
出力項目の設置
  ・片方のダイナミックテキストのインスタンス名に「comEnter」を入力
  ・片方のダイナミックテキストのインスタンス名に「comEnterCount」を入力
ダイナミックテキスト
(6) レイヤー「Action」にActionScriptを設定
 
01
02
03
04
05
06
07
08
09
10
11
12
_root.btn.onRelease = function() {
 _root.comEnter.text = _root.com.text.indexOf("\r");
 
 _root.enterCount = 0;
 for(i=0; i<_root.com.length; i++){
  checkStr = _root.com.text.substr(i, 1);
  if(checkStr == "\r"){
   _root.enterCount++;
  }
 }
 _root.comEnterCount.text = _root.enterCount;
}

解説

ActionScriptの02行目は改行がある最初の文字位置を数値で返します。
"indexOf()"は指定する文字があればその文字位置を返す関数で、改行が無い場合は-1が返ります。
Flashの改行コードは\rとなっているため、"indexOf("\r")"と指定しています。
04〜11行目はテキストエリア内の改行の数をカウントしています。
テキストエリア内の文字列を一文字ずつ取り出し、改行コード"\r"があればカウントするようにしています。
改行コードは画面上には表示されませんが、目に見えないところで存在しています。
また、このActionScriptは改行コードをカウントしているので、実際の行数をカウントするには「改行コードの数+1」が行数になります。

ページ上部へ