アクションスクリプト~記述するmcはどれ?

このQ&Aのポイント
  • オンマウスで横スクロールさせるスクリプトを作成しています。以下のページの上から2つ目、星が永遠に流れるスクリプトです。自分で記述したスクリプトのチェックをすると、クリップイベントはムービークリップインスタンスでのみ使用可能ですと表記されたので、色々調べたら、mcに記述しなければいけないと分かったのですが、どのmcに記述すればいいのでしょうか?背景の青の矩形?黄色い星のインスタンス全部に?それとも全部に?
  • アクションスクリプトでオンマウスでの横スクロールを実現するスクリプトを作成したいです。具体的には、以下のページの上から2つ目のスクリプトで星が永遠に流れる効果を作りたいと考えています。自分で記述したスクリプトをチェックしたところ、クリップイベントがムービークリップインスタンスでのみ使用可能と表記されました。そこで、どのムービークリップにスクリプトを記述すればよいか調査しています。背景の青い矩形や黄色い星のインスタンス全体に記述する必要があるのか、それともどちらでもよいのか教えてください。
  • 横スクロールさせるスクリプトをアクションスクリプトで作成しています。特定のページにおいて、上から2つ目にある永遠に流れる星のスクリプトを作成したいです。自分で作成したスクリプトをチェックしたところ、「クリップイベントはムービークリップインスタンスでのみ使用可能です」という表記がありました。調査の結果、スクリプトはどのムービークリップに記述すればよいのかわからずに困っています。背景の青い矩形に記述すべきか、黄色い星のインスタンス全体に記述すべきか、それとも全てのインスタンスに記述すべきかご教示願います。
回答を見る
  • ベストアンサー

アクションスクリプト~記述するmcはどれ?

オンマウスで横スクロールさせるスクリプトを作成しています。 以下のページの上から2つ目、星が永遠に流れるスクリプトです。 http://www.geocities.jp/flashiroha/script/as9/as9.html 自分で記述したスクリプトのチェックをすると、 「クリップイベントはムービークリップインスタンスでのみ使用可能です」 と表記されたので、色々調べたら、mcに記述しなければいけないと分かったのですが、どのmcに記述すればいいのでしょうか? 背景の青の矩形?黄色い星のインスタンス全部に?それとも全部に? あと一息のところまで来てると思うのですが、これがどにもわからずとても困ってます。 どうぞよろしくお願いします。 ちなみにバージョンはMX2004です。

  • Pro03
  • お礼率37% (18/48)
  • Flash
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.2

#1で回答した者です。 > リンケージの設定は、偶然にも記載されたサイトにて > 設定してあったので、それは問題ありませんでした。 よく見ると,数行書いてありましたね。 見逃していました。 > どこがどう間違っているんでしょうか? わかりません。 2番目の 「画像ループ型スクローラー」 のことですよね。 実際にやってみましたが, 1 ステージに適当な大きさの青い丸でも描いて   ムービークリップに変換 2 そのステージ上のムービークリップは必要ないので削除 3 ライブラリのリンケージの設定で,   「アクションスクリプトの書き出し」にチェックを入れ   「star」という識別子を付ける 4 スクリプトのコピペ 5 全角空白文字が入っているためシンタックスエラーになるので   全角空白文字を,「置換」で "" に置換(消す)。 6 名前を付けて保存&パブリッシュ これで,何の問題もなく動きましたよ。 星ムービークリップは1つだけで良いのですよ。 たくさんはいりません。 また,ActionScript2.0 形式の文法ですから, パブリッシュの設定で, Flash Player 7 以上,ActionScript2.0 になっていればそれでOKのはずです。 ムービープレビューでも全然問題は起こりません。 変なことになる確率があるとすれば, 全角空白文字 を 消す部分と,星ムービークリップの数(1個)ぐらいですか…。 とにかく普通にすると問題ないはずです。

Pro03
質問者

お礼

お返事遅くなりました。 わざわざ試してもらってありがとうございます。 大変申し訳ないのですが、会社のflashのバージョンが古かっただけでした・・・。 本当にすみません。 自宅のflashはまだ対応していたので、試してみたら見事成功しました。 結局バージョンが原因だったので、以下のスクリプトでやってみました。 後は各画像にボタンの設定をすれば、あのサイトの新幹線のようなものができます。 本当にお手数とらせました。 onClipEvent (load) { MapWidth = 1120; MapHeight = 134; MapSpeed = 5; FlashWidth = 800; FlashHeight = 600; } onClipEvent (enterFrame) { var posx = ((FlashWidth-_root._xmouse) / FlashWidth*2-1); var posy = ((FlashHeight-_root._ymouse) / FlashHeight*2-1); posx *= MapSpeed; posy *= MapSpeed; _x += posx; _y += posy; if( _x > 0) _x = 0; if( _y > 0) _y = 0; if( _x < -(MapWidth - FlashWidth )){   _x = -(MapWidth - FlashWidth); } if( _y < -(MapHeight - FlashHeight )){   _y = -(MapHeight - FlashHeight); } }

その他の回答 (1)

  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

ムービークリップに書くスクリプトなんかありませんよ。 ついでに、星ムービークリップはステージ上に存在させません。 だから、そもそも書きようがありません。 _root.attachMovie("star","star"+i,i); ですから、 ライブラリの中にある星ムービークリップを attach しているのです。 ライブラリにある トラック に、car という識別子を与えておいて、 その「car」を attachMovie している例です↓。 http://www.1art.jp/flash/le/lessona/lessona.htm 上のURLを参考にしながら、 同様に、リンケージのプロパティから、 ライブラリにあるであろう「星」ムービークリップに, 「star」という識別子をつけてください。 そして、スクリプトは、フレームに書いてください。 ご質問の URL はその辺の説明が不十分で不親切ですね。 おそらくその辺の基本事項は、 見てすがわかる方用に書かれたページではないかと思います(推測)。

Pro03
質問者

お礼

お返事ありがとうございます。 星ムービークリップはステージ上には置かないんですね、そんなことも知りませんでした。 リンケージの設定は、偶然にも記載されたサイトにて設定してあったので、それは問題ありませんでした。 ただ、パブリッシュすると、ステージから消した星mcが全く姿を見せなくなってしまいました。 まだどこか間違ってるんでしょうね。 スクリプトは新規フレームに書いたんですけど。。。 どこがどう間違っているんでしょうか? ちなみにスクリプトはあのサイトに書いてあるものをそのまま貼り付けて、星や背景の矩形もあのままのサイズで作りました。 すみませんが、何かヒントでも教えてもらえたら助かります。

関連するQ&A

  • <Flash>ムービークリップにアクションスクリプトを記述できない。

    <ムービークリップ>インスタンスにアクションスクリプトを 記述するために、スクリプトペインを開くと、 「現在の選択範囲にアクションを割り当てることはできません」 と表示されます。 きちんとムービークリップ化していますし、 インスタンスも選択しています。 でもフラッシュを勉強して間もないので、 おそらく根本的ななにかに気づいてないのだと思います。 書籍に書いてある通りに作業を進めているのですが、 うまくいきません・・・。 書籍に付属しているサンプルデーターでは、 きちんとムービークリップにスクリプトが記述されています。 バカな質問になっているかもしれませんが、 宜しくお願いいたします。

  • FlashMXアクションスクリプトの記述で分からないのですが…

     現在FlashMXのアクションスクリプトを勉強中で購入した書籍に、マウスカーソルを動かすとカーソルに着いていき波紋が広がるというのがあるのですが、マウスカーソルがステージ上からなくなっても波紋が残ってしまいます。この波紋を残さないようにする記述方法をどなたか教えて下さい。WindowsXP環境です。 onClipEvent (load) { if (_name == "mc") { _visible=false; max = 10; //複製する個数 for (i=0; i<max; i++) { this.duplicateMovieClip(i, 100+i);//複製 } } } onClipEvent (mouseMove) { if (_name == "0") {//一つ目のmcはマウスの座標とする _x = _parent._xmouse; _y = _parent._ymouse; } else {//それ以後は自分の名前から-1引いたインスタンス名の座標を取得する _x = _parent[int(_name)-1]._x; _y = _parent[int(_name)-1]._y; } updateAfterEvent(); } と記述されています。インスタンスmcはシェイプトゥイーンで、円が徐々に大きくなり、消えていくアニメーションを設定しています。

  • アクションスクリプトとシーン移動

    ただいまflashを使ってアニメーションを作っています。 http://www.flashiroha.com/script/as77.html このサイトのと同じものを作ることができたのですが、次のシーン2にいくと流れ星だけがずっと流れてしまっています。 瞬く星と静止星は見えません。なぜか流れ星だけが流れています。つぎのシーン2でつくったアニメーションには流れ星は流したくないのです。 いろいろやってはみたのですが原因がわかりません。言語のほうはサイトからコピペして持ってきているので意味はさっぱりわかりません…。 ひとつのファイルにシーンをわけて作るよりも、ひとつのファイルひとつを作ってswfファイル読み込みでやったほうがいいのでしょうか。 でも作るのには、ひとつのファイルにシーンでわけた方が効率がいいのですが…。 かなり初心者です。お願いします。

    • ベストアンサー
    • Flash
  • アクションスクリプト

    > /* クリックして特定のフレームに移動し、再生 特定のシンボルインスタンス上でクリックすると、再生ヘッドがタイムラインの指定フレームに移動し、そのフレームから再生が継続されます。 メインタイムラインまたはムービークリップタイムライン上で使用できます。 手順 : 1. 以下のコード内の数値 5 を、シンボルインスタンスのクリック時に再生ヘッドが移動するフレームの番号に置き換えます。 */ button_1.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndPlayFromFrame); function fl_ClickToGoToAndPlayFromFrame(event:MouseEvent):void { gotoAndPlay(2); } AS3CS5で上記のコードでボタンを押すたびに動くアニメーションを作成しています。上記ではフレーム2に移動になっていますが、例えば2、22、44に移動して欲しい場合どのように記述すれば良いですか??gotoAndPlay(2 22 44)等で試していますが上手くいきません

    • ベストアンサー
    • Flash
  • Flashでmc.onPress = function() を使ったスクリプトでわからない所が・・・

    FLASHのActionScriptで質問です。 今の赤・青・緑の3種類のムービークリップ(以下、MC)をそれぞれ6つ、 合わせて18つステージ上に配置し、それぞれに… 赤)markRed01_mc, markRed02_mc … markRed06_mc 青)markBlue01_mc, markBlue02_mc … markBlue06_mc 緑)markGreen01_mc, markGreen02_mc … markGreen06_mc という、インスタンス名をつけています。 --画面の模式図------------------ ┌───────────┐ │                 │ │● ● ● ● ● ●   │←赤の段 │                 │ │● ● ● ● ● ●   │←青の段 │                 │ │● ● ● ● ● ●   │←緑の段 │                 │ └───────────┘ -------------------------------- これらのMC全てに対して「マウスを押した時」に消えるようにするため、 以下のscriptをタイムライン上に記述しました。 for (var i = 1; i<=6; i++) { this["markRed0"+i+"_mc"].hit.onPress = function() { eval((targetPath(this).substring(0, 20))).play(); }; this["markBlue0"+i+"_mc"].hit.onPress = function() { eval((targetPath(this).substring(0, 21))).play(); }; this["markGreen0"+i+"_mc"].hit.onPress = function() { eval((targetPath(this).substring(0, 22))).play(); }; } [解説] ・MC内の当たり判定用のMC(インスタンス名:hit)に対し、  マウスを押した時にMCが再生(消えていくアニメーション)するようにしています。 ・MC内では最初にthis.stop();させ、  押して再生された後に、  MC内の最終フレームに来た時に再びthis.stop();するようしています。 このとき、上記のscriptを実行させると“問題なく動きます”。 しかし、MCに対するplay();命令で、 「eval((targetPath(this).substring(0, 20))...」という あまり「スマートでないやり方」になってしまっています。 そこで、これと同じように動作し、且つスマートに記述する方法があれば 教えていただきたく今回質問させていただきました。 なお、開発環境は以下の通りです。 --------------------------------------------------------------- システム:Microsoft Windows XP Professional Version2002 SP3  FLASH:macromedia FLASH Professional Ver8.0     ※ただし、Flash Player 7で動作すること。 --------------------------------------------------------------- 他に不足している点があれば、回答させていただきます。 以上、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップ内のボタン

    フラッシュ初心者です。 アクションスクリプトがうまく動かず困っています。 シーン1にムービークリップ1(インスタンス名:mc1)とムービークリップ2(インスタンス名:mc2)が置いてあります。 mc2の中にはボタンAを配置してあり、ボタンAをクリックすると、mc1のフレームラベル(B)に飛ぶような制御をしたいです。 ボタンAに記述してあるスクリプトは以下です。 on (release) { this._parent.mc1.gotoAndplay("B"); } しかしクリックしても全く動きません。 絶対パスで指定してもダメでした。 ちなみに、ためしに、mc1ではなく、シーン1上のフレームラベルに 飛ばすように記述したら普通に動きました。。 何か記述間違いがあるのでしょうか? 分かる方がいましたら教えてください。 お願いします。

  • flash ウインドウの大きさを変更しても常に定位置

    falsh8でアクションスクリプトのバージョンは1でわからないことがあるので教えてください。 ステージ上に、 ムービークリップの インスタンス名 mc1 と ムービークリップの インスタンス名 mc2 と ムービークリップの インスタンス名 mc3 を配置しております。 ブラウザのウインドウの大きさを変更しても常に、 mc1 はウインドウの最上部に表示 mc2 はウインドウの中央部に表示 mc3 はウインドウの最下部に表示させたいのですが、どういうスクリプトを書けばよいでしょうか? 教えてください、よろしくお願いします。

  • AS3.0 配置したインスタンスにswfの読み込み

    初歩的なご質問です。 AS3.0にて、ステージ上に配置したムービークリップ(インスタンス名:mc)に外部swf(test.swf)を読み込みたいのですが、、どうもうまくいきません。 わかりやすく申しますと、AS2.0形式では mc.loadMovie("test.swf"); となっているスクリプトをAS3.0で行いたいです。 拙い文章で恐縮ですが、よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 動くボタンの作り方

    MX2004を使っています…。 ステージ上のa_mcの中にb_mcがあってb_mcには onClipEvent (enterFrame) { this._rotation +=2 } というスクリプトを記述しました。 これでステージ上の動きはうまく行っていて さらに、それにb_mcにボタン機能をつけたいと思い、 b_mcの中にボタンクリップ→c_mcをつくりました。 そのボタンクリップにつけたい動きは、そのボタンにマウスを重ねると _rootに配置した、空のhyouji_mcに外部の0000_swf現れ、マウスを放すと消えるというものなのですが いろいろ本などをみてとりあえずそのボタンクリップ→c_mcに on(rollOver){ loadMovie("0000.swf",hyouji); } on (press) { getURL("url"); } というスクリプトをつけてみました。 getURLは正常に動くのですが外部ファイルは読み込めません… ちなみに、_rootに配置した、空のhyouji_mcにはhyoujiのインスタンス名を入れています。あと、swfフィアルは、元のファイルと同じところに入れています。 スクリプト勉強中で原因がわかりません… mcの入れ方など、間違っているところがありましたら ご指摘よろしくおねがいします… 他のスクリプトをみても、自分のファイルにうまく応用できない状態です…_rootに配置した、外部swfがマウスを放すと消えるというスクリプトも教えて頂けるとありがたいです。 宜しくお願いします。

    • ベストアンサー
    • Flash
  • Flash ActionScript(アクションスクリプト)の挙動

    Flash ActionScript(アクションスクリプト)の挙動が 思うようにならず困っています。 ●使用ツール  Macromedia Flash MX ●やりたいこと  ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。  各ムービークリップにマウスが乗っているかを毎フレーム判定し、  乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。 ●現在の処理  ○メインタイムラインの処理 ---------------------------- //最初のシーンを設定 _global.scene = SceneMcSelect //毎フレーム、シーン関数を呼ぶ onEnterFrame = function() { //現在シーンを呼ぶ eval( _global.scene )(); } ----------------------------  ○SceneMcSelect関数の定義 ---------------------------- function SceneMcSelect(){ for( count = 0 ; count < 3 ; count++ ){ //マウスが乗ったか? eval("mc_4_" + count).onRollOver = function(){ trace(count); eval("mc_4_" + count)._xscale = 150; eval("mc_4_" + count)._yscale = 150; } //マウスが離れたか? eval("mc_4_" + count).onRollOut = function(){ trace(count); eval("mc_4_" + count)._xscale = 100; eval("mc_4_" + count)._yscale = 100; } } } ---------------------------- ●現在の挙動  onRollOverやonRollOutの判定は正しく行われているようですが、  x/yscaleの変更処理が行われません。  traceでcountの値を確認すると、なぜか【3】になっています。 難しい処理をしているわけではないと思うのですが、 思うとおりの挙動にならず困っています。 何か間違いや見落とし等ございましたら、ご指摘お願いいたします。

    • ベストアンサー
    • Flash