- ベストアンサー
Flashでムービークリップの制御方法について
- Flashで知人のサイトを製作しているのですが、ムービークリップの制御について困っています。
- 具体的には、ムービークリップのスプレー缶をロールオーバーすると指が現れ、止まるようにしたいのですが、うまく実装できません。
- 現在のコードでは、一旦止まることができず、どうにも解決策が見つかりません。ご教授いただけると幸いです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
スプレー缶のムービークリップ内に ActionScript を書くためだけのレイヤーを追加して(すでにあったらそのままで), その レイヤーのフレーム1に,次のような感じのスクリプトを書けば良いのではないかと思います。 ------------------------------------------------------------- // とりあえず停止 stop(); // 途中で止めるフレームを登録 var middle_frm:Number = 10; // タイムラインを動かす関数 moveFrame を定義 // 引数(止めるフレーム:数値,動かすフレーム:数値) 戻り値:なし function moveFrame(stop_frm:Number, nMove:Number):Void { // 1フレーム進む時間毎に実行する関数を定義 onEnterFrame = function ():Void { // 今のフレーム+引数nMove に進めて停止 gotoAndStop(this._currentframe+nMove); // もし今のフレームが止めるフレームになれば if (this._currentframe == stop_frm) { // この 1フレーム進む時間毎に実行する関数 を削除 delete onEnterFrame; } }; } // ロールオーバーしたときに実行する関数を定義 this.onRollOver = function():Void { // タイムラインを動かす関数 moveFrame を実行 // 引数(止めるフレーム:数値,動かすフレーム:数値) moveFrame(middle_frm, 1); }; // ロールアウト&ドラッグアウトしたときに実行する関数を定義 this.onRollOut = this.onDragOut=function ():Void { // タイムラインを動かす関数 moveFrame を実行 // 引数(止めるフレーム:数値,動かすフレーム:数値) moveFrame(1, -1); }; // プレスしたときの動作を定義 this.onPress = function():Void { // もし今のフレームが途中で止めるフレームであれば if (this._currentframe == middle_frm) { // タイムラインを動かす関数 moveFrame を実行 // 引数(止めるフレーム:数値,動かすフレーム:数値) moveFrame(15, 1); // ロールオーバーしたときに実行する関数を削除 delete this.onRollOver; // ロールアウトしたときに実行する関数を削除 delete this.onRollOut; // ドラッグアウトしたときに実行する関数を削除 delete this.onDragOut; } }; ------------------------------------------------------------- スプレー缶のムービークリップ内に書くのではなく, スプレー缶のムービークリップ自体に書きたい場合は, onClipEvent (load) { // ココに書く } の 「// ココに書く」 の部分に書けば良いと思います。
お礼
早速のご回答ありがとうございました!! 感動しました。解りやすく、的確なご回答ありがとうございました お陰ざまで、バッチリ思わく通りのものを形にする事ができ、感激しております。