現在、特定のムービークリップに格納されている、2つのムービークリップ間で変数(dropのbtypeとcursorのtype間)をやりとりするプログラムを組んでいるのですが、まだ、Flash Liteの技術が未熟なため、
for(i = 0; i < 2; i++){
tellTarget("drop" add i){
../:n = btype;
}
tellTarget("cursor" add i){
type = ../:n;
}
}
と、少々回りくどい記述をしてしまいます。
個人的には
tellTarget("cursor" add i){
type = eval("../drop" add i add ":btype");
}
のように簡潔に記述できたらよいと思っているのですが、上記の方法では、typeはundefinedとなるため、文法としては正しくありません。
コードをスマートに記述できる方法をご存じの方がおられれば、ご教示ください。
No.2ベストアンサー
- 回答日時:
配置は
_root.drop1.btype
_root.cursor1.type
という階層ですよね?
(以降、説明のときは分かりやすいようにPC用Flashのパス表現で書いてます)
_root上に
tellTarget ("cursor" add 1) {
trace(eval("../drop" add 1 add ":btype"));
}
と書くと_root.drop1.btypeの値を得ることができました。
しかし「1」の部分をiに変えるとundefinedが返ってきました。(ちゃんとFor文書きました)
おそらくtellTarget(){ }のなかに書いた i は
「"cursor" add i」というMCの中のiを指しているからだと思います
(i=1のときだと_root.cursor1.iの値を指しておりもちろんundefined)。
つまりパスが通っていないのでundefinedが返ってくるのでしょう。
なので、
for (i=0; i<=1; i++) {
tellTarget ("cursor" add i) {
x = eval("..:i");
type = eval("../drop" add x add ":btype");
}
}
のように_root上の i の値を取得してやればいいと思います。
tellTarget内はすべて指定したターゲット内の変数が取得されるということですね。tellTargetの「クセ」がよくわかりました。ありがとうございます。
No.1
- 回答日時:
Flash Lite は ほとんどわからない者です。
でも,Flash 4 なら結構わかっているつもりの者です。
書かれているスクリプトを Flash 4 で書くとこうなります。
Set Variable:"i" =0
Loop While (i < 2)
Begin Tell Target ("drop" & i)
Set Variable:"../:n" =btype
End Tell Target
Begin Tell Target ("cursor" & i)
Set Variable:"type" =../:n
End Tell Target
Set Variable:"i" =i + 1
End Loop
for文はまだ存在してなかったので,先に i という変数の初期値を設定しておいて,
Loop文でループさせるのです。
以上は,書いてみただけでどうでも良いことです。
質問者さまは,すんごく,よく考えられたと思います。
いったん, _root の架空の変数 n に逃がしておいて,
_root.n を cursor0 と cursor1 の変数 type に代入するのですよね。
すごい方法だと感動しました。
でも,いちいち,Tell Target しなくても良いのです。
Tell Target をするから,_root.n を経由しなければならなくなります。
Flash 4 で, _root.n を経由せず,変数だけをやりとりする場合は次のようになります。
Set Variable:"i" =0
Loop While (i < 2)
Set Variable:"cursor" & i & "/:type" =Eval("drop" & i & "/:btype")
Set Variable:"i" =i + 1
End Loop
私がわかるのは,ここまでです。
後は,ソフトに成り行きを任せました。
上記,Flash 4 の FLA ファイルを Flash 8 で開くと自動変換されて,
上記スクリプトが次のようになりました。
i = 0;
while (Number(i)<2) {
set("cursor" add i add "/:type", eval("drop" add i add "/:btype"));
i = Number(i)+1;
}
これを,for文を使って書きかえると,次のようになります。
for (i = 0; i < 2; i++) {
set("cursor" add i add "/:type", eval("drop" add i add "/:btype"));
}
これが,良い形かどうかは,Flash Lite の専門ではないのでよくわかりません。
でも,Flash 8 で,Flash Lite 1.1 でのパブリッシュの設定にして,
携帯デバイスを選択してみたら,ちゃんと変数は受け渡されました。
参考になるかどうかはわかりませんが,
一応,書かれているスクリプトよりは短くなって,実際に使えるスクリプトだと思います。
実際に使えることと,文法上正しいことは別なので,良いスクリプトかどうかはわかりません。
ご了承ください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
レーダーチャートの描画
-
経過時間を計るには
-
flash 大きさの異なる写真のス...
-
Flashで、ナビゲーションがマウ...
-
【ActionScript】テキストボッ...
-
×ボタンを無効化したいのですが...
-
Simulinkのサブシステムの完全...
-
Active Report と SQL
-
マウスが押されているのか(DOWN...
-
ボタン操作で写真と文字が入れ...
-
インスタンスとポインタ
-
AS3.0 Timerの使い方
-
photoshopで書いた四角の枠の中...
-
シンボル化解除の方法
-
CreateEmptyMovieClipで作成し...
-
フォームのテキストの入力数字...
-
POIでのテキストボックス作成に...
-
sendAndLoadでcgiからの戻り値...
-
マウスオーバーで外部ファイル...
-
バナーの枠を飛び出して動くア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Pythonを使ってせん断応力図、...
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
SNMPの標準MIBについて
-
四乗根を英語で言うと・・・
-
ADに参加していないPCからADサ...
-
PythonでSetWindowPosを使うに...
-
pythonのグローバル変数
-
ゲージと連動したムービークリ...
-
レーダーチャートの描画
-
SharedObjectの動作がうまくい...
-
リンゲージの設定
-
loadMovie()を組み込んだswfフ...
-
100点でクリアする簡単なモグラ...
-
flashでURLからのデータ取得
-
StandardMLの二分木に関する問...
-
経過時間を計るには
-
グローバル変数の呼び出し
-
ムービークリップの拡大縮小
-
Excel VBAで読み込んだテキスト...
おすすめ情報