トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     着FLASHでの文字列の切り分け
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
nacbox
Åê¹ÆNo.17794
投稿日時: 2005-6-4 18:03
新米
居住地: 東京
投稿: 25
使用環境:
Win7 / Flash CS4 PRO
着FLASHでの文字列の切り分け
初めまして。
au Flash Lite 1.1 にて着FLASHを制作していますが、行き詰ってしまったのでお知恵を拝借させてください。

私の手元にある着FLASHで、発信者番号が、一文字ずつ画面外から集まってきて一列に並ぶ、というアニメーションをしているものがあります。
これはつまり、
・取得した「発信者番号」を、バラバラに一文字ずつ切り出す
・その切り出した文字によって、0?9の文字を表示するムービークリップを用意
・そのムービークリップを文字数分配置してアニメーション
……ということをしているのだと思うのですが、

最初の「発信者番号から一文字取り出す」という過程で

onClipEvent (enterFrame) {
  hoge = CallerNumber.substr(0,1);
}

みたいにやろうとしても、
「このアクションを使用するには、ムービーを Flash 5 形式で書き出す必要があります。」
と言われてしまいます。

いろいろ調べているのですが、どうやって実現するのか分からず……しかし、現実に成功している着FLASHが目の前にあるので、クライアントは「必ず成功するように」と譲りません。

上記のアニメーションを実行するのに、そもそも手順の考え方が間違っているのでしょうか?
お分かりの方がいたら、どうかご教授下さい。
KURAGE
Åê¹ÆNo.17798
投稿日時: 2005-6-4 19:13
常連
居住地: 東京都
投稿: 199
使用環境:
Flash 4?8/Lite 1?2
2000/XP
OSX 10.3
qurage.net
AS2HTML
Re: 着FLASHでの文字列の切り分け
こんにちは
substring()
を使う事で文字を切り出す事が可能です。

CallerNumber = "090123456789";
trace(substring(CallerNumber, 1, 1)); // 出力:0


森 巧尚
Åê¹ÆNo.17799
投稿日時: 2005-6-4 19:29
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 着FLASHでの文字列の切り分け
発信者番号を表示できるってことは、最近のauって「着Flashコンテンツ」ができるんですか?
(私の持ってるW21Sできなかった気がしたので、できる機種教えてください。)

「onClipEvent (enterFrame) {」も「CallerNumber.substr(0,1);」もFlash4以降のスクリプトなのでこれは動きませんね。(それにenterFrameでずっと設定し続けることでもなさそうですし)
だから、Flash 4以前のスクリプトだけを使って作ればいけると思います。

電話番号は10桁と考えて、a1?a10という「変数名」のテキストボックスを用意しておいて、フレームアクションで
n = CallerNumber.length;
for (i = 1; i <= n; i++) {
    eval("a" add i) = substring(CallerNumber, i, 1);
}

とすればそれぞれのテキストボックスに数字が入るはず。そこで、このテキストボックスをアニメーションすればいける、と、思います。


----------------
森 巧尚
http://www.ymori.com

nacbox
Åê¹ÆNo.17834
投稿日時: 2005-6-5 16:40
新米
居住地: 東京
投稿: 25
使用環境:
Win7 / Flash CS4 PRO
Re: 着FLASHでの文字列の切り分け
お二人ともありがとうございました。
substringを使うことで、番号の切り出しはできるようになりました。

引用:
発信者番号を表示できるってことは、最近のauって「着Flashコンテンツ」ができるんですか?
(私の持ってるW21Sできなかった気がしたので、できる機種教えてください。)

私の端末はW31Sです。
着FLASHが再生できます。


で……。

今度は、(たぶん)もっと着FLASHに特化した問題で、上手くいかずに行き詰っています。

Status = FSCommand2 ("GetCallerInfo", "CallerName","CallerNumber");
a1 = substring(CallerNumber, 1, 1);

と書き、ダイナミックテキストで変数「CallerNumber」と「a1」を表示させると、
「CallerNumber」の方には「09012345678」というように発信者番号が入るものの、「a1」の方には何も表示されません。

おや、じゃあ、スクリプトの書き方か、ダイナミックテキストの作成の仕方が間違っているのかな?と思いつつ、今度は
//Status = FSCommand2 ("GetCallerInfo", "CallerName","CallerNumber");
CallerNumber = "09012345678";
a1 = substring(CallerNumber, 1, 1);

とやると、今度は
「CallerNumber」の方に「09012345678」というように値が入るだけでなく、「a1」の方にはちゃんと「0」と表示されます。

前者の方で、「CallerNumber」にも値が入らないなら分かるのですが、ちゃんと値が変数に入っているにもかかわらず、なぜa1に値が入らないのでしょう?
前者のスクリプトと後者のスクリプトの、いったい何が違うのでしょうか?
森 巧尚
Åê¹ÆNo.17836
投稿日時: 2005-6-5 17:08
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 着FLASHでの文字列の切り分け
引用:

nacboxさんは書きました:
私の端末はW31Sです。
着FLASHが再生できます。

おお、次の機種からはできてるんですね。欲しいなあ(笑)。

引用:
今度は、(たぶん)もっと着FLASHに特化した問題で、上手くいかずに行き詰っています。

Status = FSCommand2 ("GetCallerInfo", "CallerName","CallerNumber");
a1 = substring(CallerNumber, 1, 1);

と書き、ダイナミックテキストで変数「CallerNumber」と「a1」を表示させると、
「CallerNumber」の方には「09012345678」というように発信者番号が入るものの、「a1」の方には何も表示されません。

Fscommand2がどんな値を返してきてるんでしょうね。
「09012345678」と返してきてるということは、数字ではなく文字で返ってきてますし・・・

・Statusの値はちゃんと返ってきてます?
 (CallerNumberに値があるので、たぶんちゃんと返ってきてるでしょうけど)

・「n = CallerNumber.length;」などで、文字数を調べてみてはどうでしょう。
 (先頭に空白など見えない文字が入っていてa1ではちょうど表示されていないとか)

・Fscommand2を呼んでから実際にCallerNumberに値が入るまでにタイムラグがあるんでしょうかね?
 (Fscommand2直後に、「test = CallerNumber;」などで値を別の変数に代入できるか確認してみるとか)


----------------
森 巧尚
http://www.ymori.com

nacbox
Åê¹ÆNo.17837
投稿日時: 2005-6-5 18:13
新米
居住地: 東京
投稿: 25
使用環境:
Win7 / Flash CS4 PRO
Re: 着FLASHでの文字列の切り分け
ありがとうございます、お手数をおかけいたします。


引用:
・Statusの値はちゃんと返ってきてます?
 (CallerNumberに値があるので、たぶんちゃんと返ってきてるでしょうけど)

Statusは、「0」や「1」など規定の値が返ってきています。


引用:
・「n = CallerNumber.length;」などで、文字数を調べてみてはどうでしょう。
 (先頭に空白など見えない文字が入っていてa1ではちょうど表示されていないとか)

あ、これは、実際には1文字目だけではなく、
1?11文字目まで全てやってみて、みんなダメだったので、そういうわけではないみたいです。


引用:
・Fscommand2を呼んでから実際にCallerNumberに値が入るまでにタイムラグがあるんでしょうかね?
 (Fscommand2直後に、「test = CallerNumber;」などで値を別の変数に代入できるか確認してみるとか)

やってみました。が、「test」の中身はやっぱり何も入りません。
感覚としては、FSCommand2の一行以外では、直後からもう、CallerNumberの中身は無いことになってしまう感じです。
だったらなんでダイナミックテキストに入ってるんだ、って感じですけど……。


すいません、色々実験中なのですが、これから外出しなければいけないため、ここまでで返信させていただきます。
夜、帰宅後にまた、いろいろと試行錯誤いたします。うまくいくにしろいかないにしろ、必ずまた結果をご報告いたします。
他にも何か、思いつくようなことがあれば、ご指摘いただければ嬉しいです。
森 巧尚
Åê¹ÆNo.17840
投稿日時: 2005-6-5 19:05
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: 着FLASHでの文字列の切り分け
引用:

nacboxさんは書きました:
やってみました。が、「test」の中身はやっぱり何も入りません。
感覚としては、FSCommand2の一行以外では、直後からもう、CallerNumberの中身は無いことになってしまう感じです。
だったらなんでダイナミックテキストに入ってるんだ、って感じですけど……。

確かに、変な動きですね。

CallerNumberの中身とは、CallerNumberという変数名のダイナミックテキストを作って、自動で表示されているのですか?
もしかすると、FSCommand2を実行した直後は、戻り値のStatusはすぐ返るけれど、CallerNameやCallerNumberにはしばらくしてからでないと値が入らないとか・・?
だから、substringやtest = CallerNumber;のスクリプトを実行するときはまだなくてないものとして処理されるけれど、見た目にはその処理の後に入ってくるので表示されるとか・・・(推測ですが・・)

試しにボタンを作ってみて、ボタンを押したタイミングでsubstringやtest = CallerNumber;をやってみるというのはどうでしょう?


----------------
森 巧尚
http://www.ymori.com

コマツ
Åê¹ÆNo.17841
投稿日時: 2005-6-5 19:26
職人
居住地: 東京都葛飾区
投稿: 356
使用環境:
windows7
CS5.5 CS6
Re: 着FLASHでの文字列の切り分け
このスレッドを見て、私のほうでも同じようなことをしてみました。


まず、ダイナミックテキストフィールドを3つ作成し、それぞれ、変数名を「Status」「CallerName」「CallerNumber」としてメインタイムライン上に配置しました。
最初のフレームに、
Status = FSCommand2 ("GetCallerInfo","CallerName","CallerNumber");
といれて、着信させてみると、携帯から3つとも値が返ってきました。


森さんがタイムラグがあるのではないか?との書き込みがあったので、私も気になり実験してみました。
作成した3つのダイナミックテキストフィールドをそれぞれ、変数名を「c1」「c2」「c3」としてリネームしてメインタイムライン上に配置し、以下のようなスクリプトを1フレーム目に書いてみました。

Status = FSCommand2 Status = FSCommand2 ("GetCallerInfo","CallerName","CallerNumber");
c1 = Status;
c2 = CallerName;
c3 = CallerNumber;


そうすると、携帯からデータがそれぞれの変数のフィールドに反映されました。
私の実験した携帯は、auのW31SAです。

nacboxさんとは違う機種ですので、必ずしも同じ挙動をするとは思いませんが、Statusが明確に数値として返ってきているのなら値はちゃんと返ってきているのかもしれません。
変数のパスの指定が間違っているとかはありませんか?(あっていたらスイマセン・・)



>森さん
現在、着Flashができる機種は、3機種ほどでていますよ。
http://www.au.kddi.com/ezfactory/tec/spec/new_win/ezkishu.html
PENCKみたいに、W31Kなどより、後に出た機種でも着Flash使えなかったりします。
nacbox
Åê¹ÆNo.17851
投稿日時: 2005-6-5 21:48
新米
居住地: 東京
投稿: 25
使用環境:
Win7 / Flash CS4 PRO
Re: 着FLASHでの文字列の切り分け
いつもお手数をおかけいたします。


コマツさんの投稿を読んで、
よく考えたら、ずっと問題を孕んだコンテンツfla自体をいじくり倒していて、

「問題のスクリプトのみを記述した、最も単純化したswf」を作って上手くいくかどうか確認する

という、デバッグの基本中の基本をやっていなかったことに気付きました。


で、早速、
Status2 = FSCommand2 ("GetCallerInfo", "CallerName","CallerNumber");
a2=CallerNumber;
stop();

とだけ記述して、「CallerNumber」「a2」を変数にしたダイナミックテキストだけが配置してある、1フレームしかないswfを作成し、実験してみたところ、
なんと普通に「a2」にも発信者番号が表示され、上手くいってしまいました。


というわけで、まだ解決には至っていませんが、機種依存的な問題ではなく、純粋に私のスクリプトの問題だということになりました。
問題の部分のスクリプトは、上記のものと、今まで実験していたコンテンツ版と、殆ど違いは無いのですが、他のムービークリップに全然違うスクリプトが色々書いてあったりしていますので、そういう一件関係ない部分が影響しているのかもしれません。
このままこの単機能のswfを徐々に肉付けしてコンテンツ版に近付けていき、いったいどこで問題が発生するのか見極めたいと思います。


デバッグの基本作業を怠っていて申し訳ありませんでした。
原因を聞くと「それは上手くいかないに決まってるよ」と思われるような下らない結果に終わる可能性もありますが、何が問題だったのか、必ず報告いたします。
コマツ
Åê¹ÆNo.17852
投稿日時: 2005-6-5 22:14
職人
居住地: 東京都葛飾区
投稿: 356
使用環境:
windows7
CS5.5 CS6
Re: 着FLASHでの文字列の切り分け
解決方法に関係ないかもしれませんが、Flash Lite1.0およびF1.1で変数の設定で不思議なことがあります。

Flash Lite1.0および1.1では、変数を指定するときに、ドットシンタックスが使用することができます。
しかし、相対パスを指定するときに、ドットシンタックスでうまく挙動しない指定方法があります。

//2階層上にあるsampleVarsを設定する
_parent._parent.sampleVars = "サンプル";


この、なにげないコード、Flash Player7.0でパブリッシュすると間違いなく動きます。
しかし、Flash Lite1.0および1.1では、2階層以上上の階層では「_parent」での参照および設定が、なぜかできません。
(一応、Macromediaには報告しました)

もともとスラッシュシンタックスの構文を使用していたバージョンなので、書き出しの際ドットシンタックスをうまく変換できていないかなあと考えています。

なので私はFlash Liteのコンテンツを作成するときには、「_parent」をほとんど使っていません。
2階層上の変数を相対パスを設定するときにはスラッシュシンタックスを使用しています。

//2階層上にあるsampleVarsを設定する
../../:sampleVars = "サンプル";


今回の件では直接関係ないかもしれませんが、もし「_parent」を2つ以上使っている場合は、役にたつかもです。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops