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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     複数フレーム共通のアクションスクリプトの記述方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seitarom
Åê¹ÆNo.26167
投稿日時: 2006-6-19 23:23
新米
居住地: 東京都
投稿: 4
使用環境:
MacOS-X10.5 Flash CS3
複数フレーム共通のアクションスクリプトの記述方法
初めて投稿させていただきます。
早速ですが、複数のフレームをまたいだアクションスクリプトを作成した場合、別のフレームに移動した際にも動作するのでしょうか?
といいますのも、アクションスクリプト用のレイヤーを5フレーム用意し(連続したフレーム)、オブジェクト配置用のレイヤーをその下に「キーフレームに変換」を使って5フレームを1フレームずつ、ぶつ切り状態にしてそれぞれのフレームに内容が違うオブジェクトを配置しています。フレーム毎に配置しているオブジェクトは全て同じムービークリップ名(on_mc)を使用しました。
アクションスクリプト用のレイヤーには
stop();
on_mc.onRelease = function(){
gotoAndStop(_currentframe + 1);
}
としたところ、1フレーム目ではカーソルも変わって、ボタンとして押すことができるのですが、2フレーム目に移動すると、ボタンカーソルにもかわりませんし、当然クリックしても次のフレームには移動してくれません。

アクション用に作成したレイヤーを全て1フレームずつに分けてアクションスクリプトを記述するとボタンカーソルのまま、次のフレームへと移動します。

複数のフレームを共有するようなアクションスクリプトの設定はどのようにすればいいのでしょうか?
ご存知の方がいらっしゃいましたら、ご教授願えませんか?
よろしくお願いいたします。

10.4 Pro
野中文雄
Åê¹ÆNo.26173
投稿日時: 2006-6-19 23:46
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 複数フレーム共通のアクションスクリプトの記述方法
異なった5個のMovieClipに指示を出すには、5個の指示が必要です。これは「複数フレーム」に関係ありません。同じフレームに5個のMovieClipが存在する場合にも、インスタンス名を同じにしたところで、ひとつの指示ではひとつのインスタンスしか動かせないはずです。
引用:
seitaromさんは書きました:
といいますのも、アクションスクリプト用のレイヤーを5フレーム用意し(連続したフレーム)、オブジェクト配置用のレイヤーをその下に「キーフレームに変換」を使って5フレームを1フレームずつ、ぶつ切り状態にしてそれぞれのフレームに内容が違うオブジェクトを配置しています。フレーム毎に配置しているオブジェクトは全て同じムービークリップ名(on_mc)を使用しました。
アクションスクリプト用のレイヤーには
stop();
on_mc.onRelease = function(){
 gotoAndStop(_currentframe + 1);
}


----------------
 

seitarom
Åê¹ÆNo.26192
投稿日時: 2006-6-20 15:05
新米
居住地: 東京都
投稿: 4
使用環境:
MacOS-X10.5 Flash CS3
Re: 複数フレーム共通のアクションスクリプトの記述方法
野中様、ご教授ありがとうございました。タイムラインの状態の説明が不足しているのかもしれませんので、ご説明させていただきます。

以下タイムライン
フレーム   |1 2 3 4 5
------------------------------------------
Action/レイヤー |a - - - - 連続状態
レイヤー    |J1J2J3J4J5 ぶつ切り状態
------------------------------------------
と配置しており、野中様がおっしゃっている事を自分なりに解釈し、実験してみました。
a と書いているところに
J1_mc.onRelease = function(){ ---; }
J2_mc.onRelease = function(){ ---; }
J3_mc.onRelease = function(){ ---; }
とまとめて記述しました。想像では2フレーム目に移動したときに
J2_mc.onRelease が呼ばれる予定だったのに、ボタンカーソルに変わりません。
改善策としてはfunciton以下の部分をそのままひとつの関数にし、Action/レイヤー部分を全てキーフレームに変換した上で,
on_mc.onRelease = function_da;のような形で呼び出すのですね。Directorの時は複数のフレームをまたいだ状態でビヘイビアを配置できておりましたが、Flashの場合はその考えは通用しないのですね。

本当にご教授ありがとうございました。

ひろゆき
Åê¹ÆNo.26194
投稿日時: 2006-6-20 15:44
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: 複数フレーム共通のアクションスクリプトの記述方法
引用:
J2_mc.onRelease が呼ばれる予定だったのに、ボタンカーソルに変わりません。

考え方としては、
第1フレームでは、J2_mc が存在しませんから、
J2_mc.onRelease = function(){ ---; }
と記述しても、
舞台に上がっていない役者に指示を出してしまっている状態になります。

で、第2フレームになって、J2_mc という役者が舞台に上がってくるわけですが、
演出家がさっき指示を出したのに、なぜ指示通り動かないんだ!
というような事態になってますね。

役者にしてみれば、指示を出された時間には、楽屋でお茶を飲んでますので、
その指示を知りようがないと。


----------------
質問する際は、回答者に具体的な情報を与えてください。

野中文雄
Åê¹ÆNo.26199
投稿日時: 2006-6-20 18:49
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 複数フレーム共通のアクションスクリプトの記述方法
それは、「ユーザーインターフェース」のお話しですね。

Directorでも、スプライト(インスタンス)が複数あれば、それらひとつひとつにスクリプトを設定する必要があるはずです。ただ、Directorでは、スコア(タイムライン)に対してスクリプト設定の「操作」ができるため、複数のスプライト(インスタンス)に1回のドロップで設定ができるというだけのことです。

これは、複数フレームにかぎったことではなく、同一フレームの複数スプライト(インスタンス)についても同じです。

それに近いことをお望みでしたら、(1)各インスタンスにMovieClipアクションとしてon (release){}ハンドラをコピー&ペーストで設定するか、(2)各MovieClipシンボルの第1フレームにthisをターゲットとしてMovieClip.onReleaseハンドラを設定することだと思います。
引用:
seitaromさんは書きました:
Directorの時は複数のフレームをまたいだ状態でビヘイビアを配置できておりましたが、Flashの場合はその考えは通用しないのですね。


----------------
 

seitarom
Åê¹ÆNo.26243
投稿日時: 2006-6-22 8:04
新米
居住地: 東京都
投稿: 4
使用環境:
MacOS-X10.5 Flash CS3
Re: 複数フレーム共通のアクションスクリプトの記述方法
ひろゆき様、野中様、ご教授ありがとうございます。ひろゆきんのイメージよくわかりました。野中さんのおっしゃるとおりスプライトに行動を設定しないといけませんでしたね。全体の作りとして、演出家は、舞台の流れを監視しきっかけ(マウスイベント)を待ち、役者に対して指示を出す(sendSpriteでコマンド発行)だけといった形を考えていたのですが、役者がイベントを取得する仕組みの方が常套手段のようですね。
その作りで全体の攻勢を考えみます。

ご教授ありがとうございました。
Fla4man
Åê¹ÆNo.26253
投稿日時: 2006-6-22 12:51
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: 複数フレーム共通のアクションスクリプトの記述方法
今までの手法のほうが正しいなんじゃないですか?

個別のMCにいちいちスクリプト書いても動作しますが
それはforループを列挙して実行するようなもんです。

今回は単に進行するだけなんだから
画面全体にマウスイベントをしかけるとか(ムービープレーヤーのように)

あるいはマウスイベントを動的に割り当てるとか
(役者は脚本や監督が変わっても演技はできる。)

あるいはライブラリーに親MCや祖父MCを操作するようなものを作って
それぞれに配置するとか(役者に脚本もたせるように)

そういう方法を検討したほうがいいと思います。
いずれにせよ
大規模改修はせずに現在のものからFlash固有のくせを読み取って
自分の得意なパターンでコンテンツをつくるのがベターではないかと...

シェイプアニメーションとパラメーターを連動させるとかというのでなければ
1フレームで何でもやるかFlash4以前の手法にしたほうがいいんじゃないかと思うんですけれどもね、


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

seitarom
Åê¹ÆNo.26273
投稿日時: 2006-6-23 18:47
新米
居住地: 東京都
投稿: 4
使用環境:
MacOS-X10.5 Flash CS3
Re: 複数フレーム共通のアクションスクリプトの記述方法
職人様、ご意見ありがとうございます。
Flashは始めたばかりで、手法らしい手法もなく、やっております。現在手探り状態です。おっしゃるとおり、自分スタイルは重要だとおもっておりますが、今回はなんとか作り上げるをテーマにがんばっております故、なやんで進まないよりはとりあえず動く物をといった乱暴なこと方針です。もっとFlashについてわかった時点で自分スタイルを確立していきたいと思います。

みなさん、本当にありがとうございました。また、悩んだときにはお邪魔します。
野中文雄
Åê¹ÆNo.26277
投稿日時: 2006-6-23 20:40
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: 複数フレーム共通のアクションスクリプトの記述方法
他の言語・アプリケーションを知っていることは長い目でプラスではあるものの、新規に学習する際には予見を捨ててスタンダードを理解されることが早道だと思われます。ですから、現状のお考えに、何ら問題はありません。
引用:
seitaromさんは書きました:
Flashは始めたばかりで、手法らしい手法もなく、やっております。現在手探り状態です。おっしゃるとおり、自分スタイルは重要だとおもっておりますが、今回はなんとか作り上げるをテーマにがんばっております故、なやんで進まないよりはとりあえず動く物をといった乱暴なこと方針です。もっとFlashについてわかった時点で自分スタイルを確立していきたいと思います。

Directorのビヘイビアにもっとも近いのは、ActionScript 2.0クラスをシンボルに定義することでしょう。そこまで理解を進められれば、ActionScript 3.0への移行もスムーズだと思います。

参考:「ActionScriptどこに書く? ? MXスタイルからAS2.0まで

FlashLiteも2.0ではFlash Player 7相当になり、ActionScript 3.0搭載のFlash Player 9がリリースされる時代ですので、今さらFlash Player 4の手法を学ばれる意義は極めて少ないと思われます。


----------------
 

Fla4man
Åê¹ÆNo.26281
投稿日時: 2006-6-24 2:29
職人
居住地: かまくら
投稿: 517
使用環境:
WinMe,Win2000,
Flash4,アズさん,大仏、delphi
Re: 複数フレーム共通のアクションスクリプトの記述方法
プログラミング学習とコンテンツ制作はべつものです。
AS2による手法はスタンダードとはいい難いと思います。
だから携帯版もFlash4ベースからスタートしたわけです。

マクロメディアのサイトですらボタンなど出来合いのパーツを配置するほかはほとんど使っていないはずです。

またFlash2-4でいかに多くの事を非プログラマーができたかを振り返って見てください。

Web上でのFlashの使われ方が
もっぱらシンプルなムービーの組み合わせである事を考え
シェイプアニメーションに対してほとんどスクリプトが提供されていない現実にも眼を向けると
バランスよくデザインする場合
結局AS2以降よりもFlash4ベースのムービーをパーツとして
AS1ベースで1フレームで書くほうが良い結果を生むでしょう。
無論手法の自由度が高いのがFlashの特徴ではあります。
ファイルフォーマットは8にしておくという前提です。

何でもシンボル化して全てクラス化するという発想は
いわば写真や動画、文学や、絵画、音楽、イラストには全く意味が無いといっているのと同じことです。
個々のパーツはその「役」だけに徹していればいいのです。

スクリプト自体はFlash4を学ぶ必要はないかもしれませんが
パーツとしての流用を考えると
Flash4以前のスクリプトだけでフレームアニメーションと静止画での構築というのが重要です。
そうしたものが「基本ネタ」ではないでしょうか?

フレームのあるものを作る場合
stopとgotoそしてフラグ立て以外は極力廃するべきです。

そして全体を制御するスクリプト
ないしは「シナリオ」なり「効果」のスクリプトを
クラスなり関数なりにしてテキストかタイムラインに基づいて
ムービーを進行していく
それが「脚本」と「役者」をわけるということです。

gifやpngまで部品としてロードできフレームすら動的に擬似生成できる現段階では
基本コンテンツと制御の分離がより重要になってきます。

Flashのオブジェクトの部分はプレーヤーに提供されたものをそのまま部品として使いプロパティをいじるか
その上位クラスを作るにとどめるのがAS2、AS3の限界と感じます。
クラス作成は「配布用」ないしは趣味と割り切ってコンテンツとは切り離して考えるべきでしょう。

とりあえず、onイベントに関して
直接記述をしない手法についてもう少し考察してみていただきたいと思います。

あとAS3は短命であると思うしオブジェクト指向言語と称するものの劣化にありがちな
「基本クラス全部定義しなおし」が多々見られます。
新しいから良しと思わないほうがいいのではないですか?

※アドビはpdfも統合しアプリケーションかしたいと明言しているが
古くからマクロメディアは「あくまでコンテンツであってローカルでは動作しない」といい続けてきていた。矛盾
AS3は合併発表前にほぼ確定※


----------------
通常のハンドル名:×○○× ねた回収モードに突入 現在1/100

(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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