- 締切済み
ActionScript For文を使っての方法
ActionScript3.0の質問です。 JSONのデータを読み込んでテキストレイヤーに表示しているのですが、行数の関係上、JSONの配列内にある "aaaa":"表示されるテキスト" が15を超えると、複数行での表示ができなくなります 今回、for文を使って、一定数(15個)を超えたら、新たな配列を作り、テキストレイヤーに表示できるようにしたいと思っています。 ぜひ、詳しい方、アクションスクリプト(構文)を教えてください。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- BlurFiltan
- ベストアンサー率91% (1611/1754)
> JSONの配列内にある > "aaaa":"表示されるテキスト" が15を超えると、 この部分が具体的にどういう状況のことを書かれているのか全くわかりません。 わからなければ回答できないので 私が具体的な状況を勝手に作ります。 「ある変数に『:(コロン)』区切りの長い文字列データを得た後,その文字列を『:』区切りで分割したデータにして,そのデータを要素が15個ずつ単位の複数の配列に分けて代入したい。」 という状況であることにします。 それと 未知数の配列変数自体を作るよりも 1つの配列の各要素を配列にする(2次元配列にする)方が アクセスに手間がかからなかったり var 宣言できる点でも良いと思うので そちらの方向で考えたいと思います。 上記の内容に関して具体例を書くならば //ある変数に『:』区切りの長い文字列データを得たとする var str = "aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp:qq"; こういうデータがあった場合は このデータから次のような2次元配列作成するということです。 var arr:Array = new Arry(); arr[0] = ["aa","bb","cc","dd","ee","ff","gg","hh","ii","jj","kk","ll","mm","nn","oo"]; arr[1] = ["pp","qq"]; //------------------------------------------ //変数 data_str に『:』区切りの //長い文字列データを得たものとする var data_str = "aa:bb:cc:dd:ee:ff:gg:hh:ii:jj:kk:ll:mm:nn:oo:pp:qq:rr:ss:tt:uu:vv:ww:xx:yy:zz:AA:BB:CC:DD:EE:FF:GG:HH:II:JJ:KK:LL:MM:NN:OO:PP:QQ:RR:SS:TT:UU:VV:WW:XX:YY:ZZ"; //15個単位の値を得る配列 data_arr を作成 var data_arr:Array = new Array(); //作業用の配列 tmp_arr を作成 var tmp_arr:Array = new Array(); //data_str を『:』区切って 配列 tmp_arr の各要素に分割 tmp_arr = data_str.split(":"); //tmp_arr の要素数を15で割った整数部分を求める var ii:int = Math.floor(tmp_arr.length / 15); //tmp_arrを5で割った数(整数)ループ for (var i:int = 0; i<=ii; i++) { //tmp_arr の前から15個ずつの要素を抜き取って //data_arr の各要素に代入 data_arr[i] = tmp_arr.splice(0,15); } //--- --- --- //(※配列の各要素の配列を検証で出力してみる) for (i = 0; i<data_arr.length; i++) { trace("data_arr["+ i + "]…" + data_arr[i]); } //------------------------------------------ 上記スクリプトをフレームに書いて 「制御」→「ムービープレビュー」などをすると 最後の3行によって次のようなものが出力されます。 data_arr[0]…aa,bb,cc,dd,ee,ff,gg,hh,ii,jj,kk,ll,mm,nn,oo data_arr[1]…pp,qq,rr,ss,tt,uu,vv,ww,xx,yy,zz,AA,BB,CC,DD data_arr[2]…EE,FF,GG,HH,II,JJ,KK,LL,MM,NN,OO,PP,QQ,RR,SS data_arr[3]…TT,UU,VV,WW,XX,YY,ZZ つまり 上のような要素を持つ4つの配列が自動的にできるわけです。 この配列を使って 「15を超えると複数行での表示ができなくなるテキストレイヤー」 とかいうものを作ってそこに表示させれば良いと思います。 なお私は 「15を超えると複数行での表示ができなくなるテキストレイヤー」 などというものは今まで見たことも聞いたこともありません。 初耳のものです。 ですから その作り方(配列の数だけの複製する方法?)などはわかりません。 また配置のしかたなども全くわからないため, その初耳のものに関しては全く回答できません。 ====================== ちなみに 全く関係ない話かもしれませんが テキストの表示に複数行設定のダイナミックテキストフィールドを使っているとして スペースが足りないなど何らかの理由によって行数に制約があってデータが表示できない場合は スクロールバーコンポーネント(UIScrollBar)を使うのが普通で簡単なことだと思いますが。。。 まずはダイナミックテキストフィールドにインスタンス名を付けておいて 「ウィンドウ」→「コンポーネント」などで「コンポーネント」パネルを出して その中にある「UIScrollBar」をダイナミックテキストフィールドにドラッグ&ドロップすれば良いだけです。 ※【参考図】↓ これを使えば何行でも1つのテキストフィールドに表示可能ですし 配列を分けるとか色々複雑なことは考えずに済みますけどね。