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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
kero835
Åê¹ÆNo.9883
投稿日時: 2004-8-16 19:40
新米
居住地:
投稿: 26
使用環境:
Windows2000,
FlashMX2004,
IneternetExplorer6.0
マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
はじめまして、初めて投稿させていただきます。
当方、プログラミングはまったくの初心者です。
この2週間このサイトを中心に勉強させていただいています。
お忙しいところ申し訳ありませんが、是非ご指導お願いいたします。
以下のようなものを作成しようとしています。

------------------------------------------------------------------
内容
------------------------------------------------------------------
1)クリックされるまで、カーソルは特定のmc(pos_mc)になっている
 (カスタムカーソル)
2)クリックされた場所に、上記mcを置く。
3)クリックが1度でも実施された場合、マウスカーソルはもともとのマウスカーソル(白い矢印)になる。

------------------------------------------------------------------
ムービークリップ「pos_mc」のムービーアクション
------------------------------------------------------------------
//1)カーソルは特定のmc
onClipEvent (enterFrame) {
_x = _parent._xmouse;
_y = _parent._ymouse;
if (_x >= 380 || _y >= 380) {//x,y座標が380以下の場合だけカスタムカーソル
this._alpha = 0;
Mouse.show();
} else {
this._alpha = 100;
Mouse.hide();
}
}

//2)クリックされた場所に、mcを配置
onClipEvent (mouseDown) {
_x = _parent._xmouse;
_y = _parent._ymouse;
}

//3)もともとのマウスカーソルに
onClipEvent (mouseUp) {
Mouse.show();
}

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

1)だけ、2)だけ、3)だけと、単体で動かすことはできました。
でも、これだと、目的の動作をしてくれません(当たり前?)

クリックされた後
 1)のonClipEvent (enterFrame)を停止、
 2)を実行、
 3)を実行
ということをやればいいのかなーと見当をつけていますが…。

if文?flag?を使うのかな…と思い、試行錯誤していますが
2日間成功しないでいます(号泣)。
諸先輩方、是非お知恵を貸してください。
プログラミング初心者なので、具体的なスクリプトの記述を
ご教授いただけると助かります。
ずうずうしいお願いで申し訳ありませんが、よろしくお願いします。
野中文雄
Åê¹ÆNo.9889
投稿日時: 2004-8-16 22:56
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
ifステートメントで、フラグを使います。どのように「試行錯誤」されたのでしょうか? つまり、どのような考え方にもとづいて、どこにどういうスクリプトを記述されましたか?
引用:
kero835さんは書きました:
if文?flag?を使うのかな…と思い、試行錯誤していますが
2日間成功しないでいます(号泣)。

「初心者」であれば余計に、具体的なスクリプトそのものより、まず「考え方」を理解されるべきだと思います。そうでないと、毎回ここで同じような質問をされるハメに陥ります。
引用:
プログラミング初心者なので、具体的なスクリプトの記述を
ご教授いただけると助かります。

[Q]以下のスクリプトに、ステージをクリックしたらアニメーションが停止する処理を加えてください。

それがおわかりにならないときは、
[Q1]ステージをクリックしたら、MovieClipのアルファを50に設定してください。
[Q2]つぎに、MovieClipのアルファが100未満だったら、アニメーションが停止する処理を加えてください。
onClipEvent (enterFrame) {
    _x = _parent._xmouse;
}


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

kero835
Åê¹ÆNo.9894
投稿日時: 2004-8-17 0:32
新米
居住地:
投稿: 26
使用環境:
Windows2000,
FlashMX2004,
IneternetExplorer6.0
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
野中さま、レスありがとうございます!!

引用:
[Q]以下のスクリプトに、ステージをクリックしたら
アニメーションが停止する処理を加えてください。

ご指摘(お察し)のとおり、まさに、この問題で行き詰っています。
onClipEvent (enterFrame)で処理しているものを何らかのタイミング
(この場合は、onClipEvent (mouseUp)イベント?)で中止させるという
ことができません。
過去ログやサンプルスクリプトを調べていますが、該当する
スクリプトを見つけることができませんでした(理解不足??)

その他の処理は記述できました。

---------------
onClipEvent (enterFrame) {
_x = _parent._xmouse;
}
onClipEvent (mouseUp) {
this._alpha = 50;//Q1
if (this._alpha<=100) {
trace("アルファ100以上");//アルファが100以下だった場合の処理
} else {
trace("アルファ100以外");//
}
}
---------------

よろしくご教示願います。m(_ _.)m
野中文雄
Åê¹ÆNo.9900
投稿日時: 2004-8-17 6:26
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
探すことより、考えることに重点をきましょう。検索する場合は、同じような処理にこだわらず、「フラグ」を使ったサンプルを見て、その考え方を理解すべきです。
引用:
kero835さんは書きました:
過去ログやサンプルスクリプトを調べていますが、該当する
スクリプトを見つけることができませんでした(理解不足??)

[Q2]は、できていませんね。onClipEvent (mouseUp)からは、MovieClipインスタンスがマウスに追随するアニメーションは直接止められません。
引用:
その他の処理は記述できました。

マウスをクリックしたら、MovieClip._alphaプロパティは必ず100未満になります。したがって、100の場合と分岐するifステートメントは、このハンドラ内には不要です。

フラグ(旗)を使うのは、その状態を知らせたい相手がいるからです。その相手が自分自身だったら、旗を使う必要などありません。離れた相手だからこそ、旗で知らせなければならないのです。
onClipEvent (enterFrame) {
    _x = _parent._xmouse;
}
onClipEvent (mouseUp) {
    this._alpha = 50;//Q1
    // if (this._alpha<=100) {
        trace("アルファ100以上");//アルファが100以下だった場合の処理
    // } else {
    //     trace("アルファ100以外");//
    // }
}

ちなみに、条件は100「以下」ではありません。100「未満」です。


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

kero835
Åê¹ÆNo.9906
投稿日時: 2004-8-17 10:00
新米
居住地:
投稿: 26
使用環境:
Windows2000,
FlashMX2004,
IneternetExplorer6.0
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
ご指導ありがとうございます。
---------------------
onClipEvent (enterFrame) {
_x = _parent._xmouse;
if (this._alpha < 100) {
trace("100未満"); //Q2
} else {
trace("100未満以外");
}
}
onClipEvent (mouseUp) {
this._alpha = 50; //Q1
}
---------------------

引用:
[Q2]は、できていませんね。onClipEvent (mouseUp)からは、MovieClipインスタンスがマウスに追随するアニメーションは直接止められません。

そのとおりです。。onClipEvent (enterFrame)を停止する処理を設定することができないでいます。。

「考え方」は以下だろうと認識していますが、誤りがありましたらご教示ください(まだスクリプトを書いていません、取り急ぎ)。
1.flagは0を入れておく
2.もし、アルファが100未満だったら flag=1
3.それ以外は flag=0
4.flagの判定
5.flag=1のとき、アニメーションの停止

よろしくお願いいたします。
野中文雄
Åê¹ÆNo.9907
投稿日時: 2004-8-17 10:44
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
アニメーションを「停止」するというのは、アニメーションの「処理を行わない」ことです。
引用:
kero835さんは書きました:
onClipEvent (enterFrame) {
    // _x = _parent._xmouse;  // 条件分岐処理の中に移動
    if (this._alpha < 100) {
        trace("100未満");		//Q2
    } else {
        _x = _parent._xmouse;  // 移動
        trace("100未満以外");
    }
}
onClipEvent (mouseUp) {
    this._alpha = 50;	//Q1
}

...[中略]...
そのとおりです。。onClipEvent (enterFrame)を停止する処理を設定することができないでいます。。

このとき、MovieClip._alphaプロパティ自体が、フラグの役割を果たしています。


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

kero835
Åê¹ÆNo.9909
投稿日時: 2004-8-17 11:10
新米
居住地:
投稿: 26
使用環境:
Windows2000,
FlashMX2004,
IneternetExplorer6.0
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ
ご指導ありがとうございます!
引用:
// _x = _parent._xmouse; // 条件分岐処理の中に移動
目からウロコでした!(こういう“考え方”をもっと身につけないと!)

引用:
[Q]以下のスクリプトに、ステージをクリックしたらアニメーションが停止する処理を加えてください。
onClipEvent (enterFrame) {
_x = _parent._xmouse;
}

上記をflag判定で記述してみました。

------------
onClipEvent (load) {
flag = 0;
}
onClipEvent (enterFrame) {
if (flag == 0) {
_x = _parent._xmouse;
} else {
}
}
onClipEvent (mouseUp) {
flag = 1;
}

------------
…動きます!!!!!!感動、、下半期最初の感動です。
ヤワラちゃんの金メダルより感動しました(個人的に)。

ご指導を元に再び宿題のスクリプトに取り組んでみます。
kero835
Åê¹ÆNo.9912
投稿日時: 2004-8-17 12:10
新米
居住地:
投稿: 26
使用環境:
Windows2000,
FlashMX2004,
IneternetExplorer6.0
Re: マウスカーソルをmcにし、クリックで通常のマウスカーソルへ(解決)
ご指導いただいたスクリプトを参考に、問題だったスクリプトを下記の通り修正ました。⇒意図どおり正しく動作しました!

--------------------------
onClipEvent (load) {
flag = 0;
}
onClipEvent (mouseUp) {
flag = 1;
}
onClipEvent (enterFrame) {
posX = _parent._xmouse;
posY = _parent._ymouse;
if (flag == 0 & (posX < 380 & posY < 380)) {
_x = posX;
_y = posY;
_alpha = 100;
Mouse.hide();
} else if (flag == 1) {
_alpha = 100;
Mouse.show();
} else {
_alpha = 0;
Mouse.show();
}
}
--------------------------
問題点や気になる箇所などがありましたらご指摘ください。
ご指導いただいた野中様、また見守ってくださったフォーラムの皆様、ほんとうにありがとうございました。
今後もフォーラムを利用し精進していきます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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