• ベストアンサー

Flash Lite1.1におけるパスの表記?について教えてください。

先日、こちらである方から、Flash Lite1.1では、Flash4以前のように、階層などの概念がないということを教えて頂きました。他のムービークリップを制御する際はtellTargetで指定するらしいのですが、次の実験でどうにも上手くゆきません。 1、新規シンボル(MC)で、4コマ漫画を作成。1コマ目にstop();を設定する。インスタンス名をcounterとし、ステージ(背景)にこれを設置。 2、新規シンボル(ボタン)で、次のスクリプトを記述。 on (release, keyPress "1") { tellTarget ("counter") { nextFrame(); } } 携帯電話のボタン1を押すことによって、4コマ漫画が進む…予定だったのですが、以下の変(文字化け?)なエラーメッセージが…。 ƒ^[ƒQƒbƒg‚ªŒ©‚‚©‚è‚܂¹‚ñ: ƒ^[ƒQƒbƒg="count" ƒx[ƒX="_level0" パス表記が間違っているのかと思い、 _parent.counterや、/counter、_level0.counterなど色々試してみましたが、やはり先ほどのエラーログが出ます。何か根本的に間違っているのでしょうか。 きちんと、4コマ漫画をコマ送りさせるボタンにするには、どのように表記すればよいのでしょうか。 お詳しい方、ご回答いただけると幸いです。

  • Flash
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
noname#35109
noname#35109
回答No.2

> Flash Lite1.1では、Flash4以前のように、 > 階層などの概念がないということを教えて頂きました。 説明の仕方が悪かったですかね。これのことですよね。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2109845   ↑教えて!goo  ↓OKWave (同じです) http://okwave.jp/kotaeru.php3?q=2109845 階層の概念はあります。 概念はないどころか階層は今よりもっと強烈なものとした存在していました。 階層,つまりムービークリップ内のタイムラインは Flash 3 からありますので。 http://hotwired.goo.ne.jp/webmonkey/99/02/index2a_page6.html  ---引用---  また、Flash 3は強力なTellTagetとLoadMovieのコマンドを備えており、  異なるフレームやシーン、ムービーで互いに影響を及ぼし合うことができる すごいー,強力なTellTagetがあるーぅ。 やっぱり Flash 3 を買わなければ~! って今となれば何がすごいのかわかりませんが, つまり階層があるので tellTarget の ( ) 中にターゲットパスが書けるのです。 ちなみに階層が無かった Flash 2 や 1 でも, グラフィックシンボルの中にタイムラインを持てましたから, 例えば, 蝶が羽ばたくだけのアニメーションをグラフィックシンボル内のタイムラインに作っておいて, その羽ばたくだけのグラフィックシンボルをモーショントゥイーンさせれば, 蝶が羽ばたきながら飛び回るアニメーションはできていたようです。 ただ,現在と同じく,グラフィックシンボルには階層がありませんので, tellTarget はできませんでした。 Flash Lite 1.1 までは階層の概念がないのではなくて, クラスという概念が,ユーザー側に提供されていないのです。 「○○クラス の ××メソッド」 言いかえると 「○○オブジェクト の ××メソッド」 という枠組みがないのです。 「トップレベルクラス」 http://livedocs.macromedia.com/flash/8_jp/main/00001341.html それにともなって文法も違います。  日本語 → 自家用車を,静岡まで,運転する。  現在AS風 → myCar.drive("Shizuoka");  FlashLite1.1風 → drive("myCar"," Shizuoka "); こんな感じでしょうか。 日頃思うのですが,現在AS風は日本語に近いと思います。 Flash Lite 1.1 はどちらかというと英語に近い気がします。 プログラムでは主語(You)がない(命令形)ので,Flash Lite 1.1 では動詞が前にずれて先頭に来ます。 ちなみに Flash 4 触れられていますから一応書いておくと, Fash 4 では,実際はこうなります。  On (Release, Key: 1)     Begin Tell Target ("/counter")       Go to Next Frame     End Tell Target  End On Flash 4 以前のアクションは,プログラムというより, 読んでみると英語の自然な語りを聞いているような気がします(私は)。 言葉としては自然でも,プログラム言語となると,動詞が前にあって入れ子入れ子になるので複雑になるのですよ。 やっぱり,オブジェクトが前にある方がずっとスッキリすると思います。 話を元に戻して。 現在ASでは, gotoAndStop は MovieClip クラス(オブジェクト)の gotoAndStop メソッドと定義されていますから,  MovieClip.gotoAndStop("移動させたいフレーム"); と書けば良いのですが, Flash Lite1.1 までは (2.0より前は) ,  tellTarget ("MovieClip") {    gotoAndStop("移動させたいフレーム");  } となります。 ということです。以前例になっていた,  this.gotoAndStop("移動させたいフレーム"); の this の指すものは MovieClip です。 また,_root も MovieClip の1つの形です。 Flash Lite1.1 まではクラスという枠組みがそもそもないので, これは通用せず,単に  gotoAndStop("フレーム"); と書いてください。ということです。 ただし,階層はあるので,別階層を gotoAndStop させたいときは, tellTarget で,「ターゲット階層に命令」 をしてください。ということなのです。 ってここまで書いて気づいたのですが 解決されたのですね。 それは良かったです。 ---本題ですが------------------------ 書かれている通り, on (release, keyPress "1") { tellTarget ("counter") { nextFrame(); } } でもうまく行きました。 また, on (release, keyPress "1") { tellTarget ("/counter") { nextFrame(); } } でもうまく行きましたよ。 上の場合が,  this.counter.nextFrame(); 下の場合が,  _root.counter.nextFrame(); と同じ意味です。 counter というムービークリップは,ボタンと同じ _root にあるのですよね。 ちゃんと存在しているのなら,なぜうまく行かないのかわかりません。 インスタンス名に間違いはないですか? 階層もまちがっていませんか? ちなみに,うまく行ったという例は 「デバイス選択」で「スタンドアローンプレーヤー」というデバイスを選択して, アクティブになっている携帯デバイスを選んだ場合です。 前回も書きましたが,携帯というものを持っていないので, 「待ち受け画面」とか「壁紙」とか言われましても,それがどのようなものか理解しておりません。 困ったものだ…・・・。 長くなって申し訳ございません。 結局,書かれている状況で,書かれているスクリプトは正しいとしか言えないと言うことです。 ========参考文1================== ~ Flash 4 ヘルプより引用 ~  「ターゲットの指定」より抜粋 ターゲットを指定する構文は、ファイルシステムでフォルダを指定する方法と似ています。 たとえば、" / " を先頭に指定すると、カレントレイヤーのルートにあるムービークリップを表します。 " / " が先頭にない場合、ターゲットはカレントムービークリップを基準にして相対的に指定されます。 次の Tell Target パスでは、前の項で示した7つのタイムラインの例が使用されています。 ・ /Jack は、MovieX のメインタイムラインから、ClipA という名前のムービークリップをターゲットとして指定します。 ・ ../ は、ClipA というムービークリップから、MovieX のタイムラインをターゲットとして指定します。 ・ /Jack/Bert は、ほかのムービークリップから、ClipA1 というムービークリップをターゲットとして指定します。 ・ Bert は、ClipAというムービークリップのタイムラインから、ムービークリップ ClipA1 をターゲットとして指定します。 ・ ../Ernie は、ClipA1 のタイムラインから、ムービークリップ ClipA2 をターゲットとして指定します。 ・ _level1/Smith は、ほかのムービークリップから、MovieY のムービークリップ ClipC をターゲットとして指定します。 ターゲット名が空白の場合は、カレントタイムラインをターゲットとして指定します。 =======参考文2================== ~ Flash Lite 1.x ActionScript の学習 より引用 ~  「変数の使用 」より抜粋  http://livedocs.macromedia.com/flash/8_jp/main/00005175.html タイムラインの変数を指定するには、ドット (.) およびコロン (:) と組み合わせたスラッシュシンタックス (/) を使用します。次のドット表記を使用することもできます。 次のコードは、メインタイムラインの car 変数を参照します。 /:car _root.car /Explosion:Timer

madmax2006
質問者

お礼

なるほど。今回も非常に、詳細な解説ありがとうございました。

その他の回答 (1)

  • umioyo
  • ベストアンサー率66% (35/53)
回答No.1

同じ階層?だと思うので動くような気もしますが・・・ /:counter でどうでしょうか。 参考サイトはとても役に立ちます。

参考URL:
http://www.grkt.com/flash_lite_01.html
madmax2006
質問者

お礼

参考サイト、ご紹介ありがとうございました。 無事解決いたしました。お世話になりました。

関連するQ&A

  • Flash lite1.1で

    携帯でswfのページで「只今検索中」みたいなアニメーションを製作し、アニメーションが終了後自動的に他のhtmlのページに飛ばしたいんですが可能なんでしょうか?

    • ベストアンサー
    • Flash
  • Flash lite1.1で

    Flash初心者です。 Flash lite1.1で特定のボタンを数回押すと他の画像に変化するものを作りたいのですが、方法がわかりません。 どうしたらいいんでしょう?

    • ベストアンサー
    • Flash
  • Flash Lite1.1 について

    お世話になっています。 携帯用のアプリ開発をができる Flash Lite1.1 を扱い始めて、1週間になります。どうしても分からないことがでてきたので、こちらで質問をさせていただきます。 現在、任意の複数のswfファイルを自由に作成と削除を行える携帯アプリを考えています。機能としましては、番号キーで指定した処理を行いたいMovieClipに対して、ファイルのロードか削除を行うというものです。 以下は、読み込み・削除部分のスクリプトです。 // *bボタンで読み込みを行う on( keyPress "*") { // 作成するのMovieClipを指定 newName = "cscr" add no; // MovieClipの複製 // 深度は全て同じ位置 duplicateMovieClip("scr", newName, 0 ); // MovieClipのロード url = "Load" add no add ".swf"; loadMovie ( url, newName ); } // #ボタンで削除 on( keyPress "#") { // アクセスするMovieClip名 newName = "cscr" add no; unloadMovie( newName ); } no : 作成するmovieClip番号・ロードするswfファイルの番号 scr : ムービーファイル表示用MovieClip( あらかじめめ画面に配置してあります ) 私が分からないところは、表示するMovieClipの切り替えです。 作成する分に関しては、作ったMovieClipが表示されていくのですが、以前に作成したムービークリップを表示のさせ方が分かりません。Load0.swf、Load1.swf、Load2.swfをロードした場合、cscr0、cscr1、cscr2が作成され、cscr2が表示されている時に cscr0 の内容に切り替えたいと思います。 私が行った方法は、tellTarget を使い、表示するMovieClip以外は、プロパティの_visible 非表示に設定したり、座標を画面外に移動させる方法を試しましたが、思った通りに動作をしませんでした。 どうやって、表示をさせたらよろしいでしょうか? また、削除するスクリプトに関してですが、本当に削除されているのでしょうか?

    • ベストアンサー
    • Flash
  • flash lite1.1で

    こんばんは。さっそくですが、質問です。 2秒おきにアクションをさせたいのですが、 どのようにしたら良いでしょうか? 制限時間のタイマーを表示させることは できたのですが、2秒おきに何かをさせるのが どうしてもわかりません。 お分かりになる方がいらっしゃいましたら、 よろしくお願い致します。

    • ベストアンサー
    • Flash
  • Flash lite1.1で。

    キー操作で行う携帯用のパズルをつくろうと思っていて、ピースの移動をカーソルを合わせてキーを押すとドラッグを開始して任意の場所に移動できるようにしたいのですが、liteでstartDragのようなことをするのは 可能でしょうか?ピースはすべて同じ正方形で カーソルはピースと同じ大きさの正方形の線です。 分かりにくい文章で申し訳ありませんが、よろしくお願いします。。

    • ベストアンサー
    • Flash
  • flashからflash lite

    質問です。 現在、flash lite1.0の作成をしているのですが、 flash8で作成したゲームをliteバージョンにしたいと考えております。 そこで on (press) { this.play(); _root.addScore(); } この上記のスクリプトをlite仕様にしたいのですが、 どの様に変更したらいいのか、お分かりの方がいましたら 単刀直入に、スクリプトを記述して ご返答の程宜しくお願いいたします。

  • Flash Lite1.1について

    Flashで携帯ゲームのブロック崩しを作りたくて、あるサイトからflaサンプルを見つけました。 製作者のコメントに「ブロックを全部崩しても何も起きませんので、エンディング等は自作してください。 」とあったので、早速4フレーム目にゲームオーバー画面を5フレーム目にクリア画面を作ってみました。 そして元々のソースから if(ball._y>235){ gotoAndPlay(1); } を if(ball._y>235){ gotoAndPlay(3); } にしたまではよかったのですが、 ブロックが全て無くなったらクリア画面に移動させる方法が分からず困っています。 元々のソースは↓になります。 // ボール移動 ball._x += vx; ball._y += vy; // 壁とボールの当たり判定 if(ball._x<5 && vx<0){ vx = -vx; } if(ball._x>235 && vx>0){ vx = -vx; } if(ball._y<5 && vy<0){ vy = -vy; } //ボールが下に落ちたらゲームオーバー if(ball._y>235){ gotoAndPlay(1); } // パドルとの当たり判定 if(ball._x>pad._x-40-5 && ball._x<pad._x+40+5 && ball._y>pad._y-5-5 && ball._y<pad._y+5+5 && vy>0){ vy = -vy; vx = (ball._x-pad._x)/80*15; } // ブロックとの当たり判定 for(i=1;i<=40;i++){ bx = eval("block" add i)._x; by = eval("block" add i)._y; if(ball._x>bx-20-5 && ball._x<bx+20+5 && ball._y>by-5-5 && ball._y<by+5+5 && eval("block" add i)._visible==true){ eval("block" add i)._visible = false; //左端or右端に当たった場合 if(ball._x<bx-20 || ball._x>bx+20){ vx = -vx; }else{ //上端or下端に当たった場合 vy = -vy; } } } どの場所にどのように書くべきかいろいろ探してみたのですが、パソコン用の作り方しか見つからす゜携帯用のFlash Lite1.1には対応していない物ばかりで困っています。 ActionScriptについては初心者であまり詳しくなく、本当に恥ずかしい限りです。 どうかお解かりになる方おりましたらお力をお貸し下さい。 宜しくお願い致します。

    • ベストアンサー
    • Flash
  • flash lite

    Flash LiteのLiteの語源って、Light=簡易版ってことですか??

  • flash lite 2.0

    初めて質問させて頂きますので、失礼があればお許し下さい。あまりのレベルの低い内容についてもお見逃し願いたい。 現在Flash CS3を買ってきて、携帯電話で再生できるものを作りたいなあと思って、いろいろ遊んでいます。が、いきなり写真画像を思い通りに制御できずに困っています。 photoshopなんかでjpg画像を開き、そのまま普通にflashのステージに持って行くのですが、device centralで再生した場合、かなり画像の劣化が目立ち、写真内の直線などが段々になってしまったりと。なのでビットマップ画像だからそうなるのかなあと素人ながらに思い、まずはなんとかベクトル画像的なものにしなければと思って試行錯誤しておるのですが、なにをやってもダメな状況です。photoshopでsvgやepsで保存しても、flashでは読み込めなかったり、flashのビットマップ→トレースでは、ちょっとニュアンスが違ったりと。 もっとシンンプルな方法があるような気がしてるのですが、分かりません。どなたか、アドバイスお願いします。

  • Flash lite1.1で

    携帯用のページでボタンを設置しgotoAndPlayでとあるフレームに飛ばしたとき、複数あるMCをランダムで一つだけ表示する方法はないでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう