
No.1ベストアンサー
- 回答日時:
「MC(ムービークリップ)を使う」ということですから
MC の特性を生かして
例えば
MC内の フレーム1 と 2 との表示を切り替えることによって
色を変えるという方法をまず考え付くべきでしょうね。
(この方法を使えば,「塗りだけの色を変える」とか「形と色を変える」とかその他色々なことに対応できます。)
しかし...
「使用されている Flash のバージョン」も
「使用している ActionScript のバージョン」も書かれていませんね。。。
これでは具体的なスクリプトなど回答できません。
回答できなければ困るので
こちらで勝手な条件を想定させていただきます。
Flash CS3 以上をお持ちで
ActionScript 3.0 を使って
Flash Player 9 以上用の SWF をパブリッシュするものとします。
この条件であるものとして以下を続けます。
まず,「左の□の赤MC」内は 2フレーム にして
フレーム1 と フレーム2 にキーフレームを作り
フレーム1 には 赤□,フレーム2 には 黄□ の絵を用意します。
※参考【添付図】↓
この作業が終わりましたら
「シーン 1」などメインのタイムラインの編集に戻ります。
そして
ステージ上の「左の□の赤MC」を選択した状態で
プロパティインスペクタ(プロパティパネル)より
例えば「L_mc」というインスタンス名を付けます。
また
ステージ上の「右の□の白MC」を選択した状態で
プロパティインスペクタ(プロパティパネル)より
例えば「R_mc」というインスタンス名を付けます。
その「L_mc」や「R_mc」が存在するタイムラインのフレーム
(例:メインタイムラインのフレーム1)に書くスクリプト例です↓。
//---------------------------
//左の「L_mc」内の再生を停止
L_mc.stop();
//右の「R_mc」上でマウスダウン時に関数 onR_mcMouseDown を実行
R_mc.addEventListener(MouseEvent.MOUSE_DOWN,onR_mcMouseDown);
//関数 onR_mcMouseDown の定義
function onR_mcMouseDown(e:MouseEvent):void {
//「R_mc」のドラッグを開始
R_mc.startDrag();
//マウスアップ時に関数 onStageMouseUp を実行
stage.addEventListener(MouseEvent.MOUSE_UP,onStageMouseUp);
//マウスが動く度に関数 watchHitLR を実行
addEventListener(MouseEvent.MOUSE_MOVE,watchHitLR);
}
//関数 onStageMouseUp の定義
function onStageMouseUp(e:MouseEvent):void {
//「R_mc」のドラッグを終了
R_mc.stopDrag();
//マウスアップ時に関数 onStageMouseUp の実行するのを解除
stage.removeEventListener(MouseEvent.MOUSE_UP,onStageMouseUp);
//マウスが動く度に関数 watchHitLR を実行するのを解除
removeEventListener(MouseEvent.MOUSE_MOVE,watchHitLR);
}
//関数 watchHitLR の定義
function watchHitLR(e:MouseEvent):void {
//もし「R_mc」が「L_mc」にヒットしていれば
if (R_mc.hitTestObject(L_mc)) {
//「L_mc」内の再生を フレーム2 で停止
L_mc.gotoAndStop(2);
} else {
//ヒットしていなければ「L_mc」内の再生を フレーム1 で停止
L_mc.gotoAndStop(1);
}
}
//---------------------------
回答文字数制限にまだ少し余裕があるため
上と同様の構造を作った上での
Flash MX 2004 以上をお持ちで
ActionScript 2.0 を使って
Flash Player 6 以上用の SWF をパブリッシュする場合の
フレームに書くスクリプト例も書いておきます↓。
//---------------------------
//左の「L_mc」内の再生を停止
L_mc.stop();
//右の「R_mc」上でマウスダウン時に実行するメソッドを定義
R_mc.onPress = function():Void {
//「R_mc」のドラッグを開始
R_mc.startDrag();
//マウスが動く度に関数 watchHitLR を実行
this.onMouseMove = watchHitLR;
};
//右の「R_mc」上でマウスアップ時に実行するメソッドを定義
R_mc.onRelease = R_mc.onReleaseOutside = function():Void {
//このMC(R_mc)のドラッグを終了
this.stopDrag();
//マウスが動く度に関数 watchHitLR を実行するのを解除
delete this.onMouseMove;
}
//関数 watchHitLR の定義
function watchHitLR():Void {
//もし「R_mc」が「L_mc」にヒットしていれば
if (R_mc.hitTest(L_mc)) {
//「L_mc」内の再生を フレーム2 で停止
L_mc.gotoAndStop(2);
} else {
//ヒットしていなければ「L_mc」内の再生を フレーム1 で停止
L_mc.gotoAndStop(1);
}
}
//---------------------------
※ご質問には
「(吸着した)とき」と書かれていますが
「(接触した)とき」と解釈を変えています。
(両スクリプトとも,いわゆる吸着はさせていません。)

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ad or script について
-
uwscでExcelに自動記入
-
スマホでサイトの画像を長押し→...
-
ゲオでカードを作るのは何歳か...
-
FLASHでゲームを作っていた人は...
-
この曲はなんでしょう?
-
laptop go2からの買い替え、lap...
-
スクリップト
-
私のコンピューター上のファイ...
-
arduino プログラムについて
-
chrome flash
-
FLASHの再生はできないのでしょ...
-
フラッシュゲームアーカイブ2
-
ウェブサイトで Flash が事実上...
-
Flashコンテンツを使ったWebサイト
-
Flash Playerのサポートが終了
-
Form内のselectを連動させるに...
-
Flashをブロックしないで
-
ダウンロードしたデジブックはa...
-
Flashplayerの運用について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Flash MX フレーム ランダムに...
-
別ウィンドウ表示時の挙動
-
日ずけ取得にCSSを適用させたい
-
外部ムービー読込み後 AS が...
-
オンマウスでモーションを停止...
-
ムービークリップを1コマ飛し...
-
paraflaのアクションスクリプト...
-
AS3でムービークリップ再生・早...
-
パソコンのオープンフレームっ...
-
段ボールみたいな材質でできて...
-
フレーム内に移動したい
-
フレーム内のオプションボタン...
-
条件が複数ある場合のif文の書き方
-
外部swfファイルを予め読み込ん...
-
phpで音を鳴らす
-
Flash4でloadMovieの完了を知る...
-
A3012CAのカメラ用フレ...
-
文字の入力が突然出来なくなり...
-
違うフレームに表示
-
パワーポイント2007です。画面...
おすすめ情報