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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     動的に配置した複数のムービークリップをドラッグ&ドロップしたい
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
machu
Åê¹ÆNo.2612
投稿日時: 2004-1-3 21:32
新米
居住地:
投稿: 12
使用環境:
.3.2
動的に配置した複数のムービークリップをドラッグ&ドロップしたい
こちらには、たびたびお世話になっています。machuです。

動的に配置させた複数のムービークリップをドラッグ&ドロップできるようにしたいのですが、思うように動きません。

最初は、attachMovieでシンボルから作成していたのですが、ドラッグ&ドロップ指定の方法が分からず断念しました。そこで、インスタンスを一つステージ外に作成しておいて、そのムービークリップ内に以下のスクリプトを記述しました。それをもとにduplicateMovieClipで複製しています。

onClipEvent(mouseDown){
if(this.hitTest(_root._xmouse,_root._ymouse)){
this.startDrag("");
this._alpha=50;
}
}
onClipEvent(mouseUp){
if(this.hitTest(_root._xmouse,_root._ymouse)){
this.stopDrag();
this._alpha=100;
}
}


マウスイベントに反応しているようですが、きちんと動きません。
(一瞬アルファ値が下がる)


ちなみに、ムービークリップ作成のスクリプトは以下です。フレームに記述しています。外部ファイルから読み込んだ1件以上のdatデータをムービークリップ内のテキストフィールドに設定しています。

function dispData(success){
if(success){
loaddata = "";
i=0;
for(dat in replyData){
if(typeof replyData[dat] == "string"){
tname =dat+"_mc";
// _root.attachMovie( "label_mc", tname, i) ;
_root.dat_mc.duplicateMovieClip(tname, i) ;
getdata = replyData[dat].split("|||");
eval(tname).id = getdata[0];
eval(tname)._x = getdata[1];
eval(tname)._y = getdata[2];
eval(tname).submit_t = getdata[3];
eval(tname).name = getdata[4];
eval(tname).mail = getdata[5];
eval(tname).mes = getdata[6];
i++;
}
}
}
}
Keita
Åê¹ÆNo.2613
投稿日時: 2004-1-3 21:52
常連
居住地: 大阪
投稿: 93
使用環境:
OSX 10.3.4,winXP/MX
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
どうもこんにちわ

onClipEvent(mouseDown)とonClipEvent(mouseUp)は、その瞬間だけを検知するもので継続的に検知してくれません。そのためstartDrag()の命令も一瞬で終わってしまっているようです。
試しに、適当なムービークリップに、
onClipEvent(mouseDown){
trace("Mouse Click")
}
と記述して試せばわかりますが、
マウスをクリックするごとに"Mouse Click"が表示されます。

解決策としては、
ドラッグしたいムービークリップの中に透明ボタンを入れ、
on(press){
this.startDrag("");
this._alpha=50;
}
on(release){
this.stopDrag();
this._alpha=100;
}
などとボタンの命令を記述すればうまくいくのではないでしょうか。

いらぬお世話かもしれませんが他は問題なくいってるんですよね?
machu
Åê¹ÆNo.2615
投稿日時: 2004-1-3 22:17
新米
居住地:
投稿: 12
使用環境:
.3.2
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
Keitaさん、早速のご返信ありがとうございます。

引用:
解決策としては、ドラッグしたいムービークリップの中に透明ボタンを入れ、ボタンの命令を記述すればうまくいくのではないでしょうか。

やってみましたが、動きませんでした
試しに、別ファイルで、スクリプト(onClipEvent(mouseDown)とonClipEvent(mouseUp))を記述した同じムービークリップをステージ上に一つ配置して実行してみたところ、ドラッグできました。
どうも、動的に複製させたものについてうまく動かないようです。(作成されるムービークリップが一つでも同じように動きませんでした……)

引用:
いらぬお世話かもしれませんが他は問題なくいってるんですよね?

複製させて、datデータの内容を表示させるところまでは、問題なく動いています。
Keita
Åê¹ÆNo.2617
投稿日時: 2004-1-3 22:58
常連
居住地: 大阪
投稿: 93
使用環境:
OSX 10.3.4,winXP/MX
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
そうでした、startDrag()は一回命令すれば継続するんでした。
失礼しました。

それで確認ですが、functionで定義した dispData(success)は一回しか命令してないんですよね。gotoAndPlay()などで、何回も命令をしている訳ではないですよね。
命令を繰り返すと、深度のiが毎回0に再定義されているので、同深度へ上書きされて、複製されたムービークリップが初期化されてしまいます。

私もduplicateMovieClip()を使って作業中なので、いろいろ気になってしまいます。
machu
Åê¹ÆNo.2619
投稿日時: 2004-1-3 23:11
新米
居住地:
投稿: 12
使用環境:
.3.2
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
こんばんは、keitaさん。

引用:
functionで定義した dispData(success)は一回しか命令してないんですよね。gotoAndPlay()などで、何回も命令をしている訳ではないですよね。

現在は、新規読込時一回だけの設定なので、上書きはされてません。
Keita
Åê¹ÆNo.2625
投稿日時: 2004-1-4 2:52
常連
居住地: 大阪
投稿: 93
使用環境:
OSX 10.3.4,winXP/MX
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
引用:

現在は、新規読込時一回だけの設定なので、上書きはされてません。


もしかして、クリップアクションのloadでdispData(success)を呼び出しているんでしょうか?
フラグ等をたてずにloadで呼び出すと、複製される毎にloadで設定した命令が実行されてしまいます。この場合、延々と複製が繰り返されてしまうことになると思われます。
function定義かloadのクリップアクションの中に、適当なtrace命令(例:trace(this._name)とか)を入れれば確認できます。
野中文雄
Åê¹ÆNo.2628
投稿日時: 2004-1-4 3:23
ちょんまげら
居住地: 東京
投稿: 4247
使用環境:
CS4 .4.11 Vista Home Premium (SP1)
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
「思うように」「きちんと」動かないというのが、どういう動きなのかわかりません。「うまくいきません」と同じNGワードです。

以下のMovieClipアクションをMovieClipに設定して、MovieClip.duplicateMovieClip()メソッドで複製すると、ドラッグ自体はできるようです。ただし、複数MovieClipが重なった部分をクリックすると、重なった他のMovieClipのアルファも変更されてしまいます。
引用:
machuさんは書きました:
動的に配置させた複数のムービークリップをドラッグ&ドロップできるようにしたいのですが、思うように動きません。

最初は、attachMovieでシンボルから作成していたのですが、ドラッグ&ドロップ指定の方法が分からず断念しました。そこで、インスタンスを一つステージ外に作成しておいて、そのムービークリップ内に以下のスクリプトを記述しました。それをもとにduplicateMovieClipで複製しています。
onClipEvent(mouseDown){
	if(this.hitTest(_root._xmouse,_root._ymouse)){
		this.startDrag("");
		this._alpha=50;
	}
}
onClipEvent(mouseUp){
	if(this.hitTest(_root._xmouse,_root._ymouse)){
		this.stopDrag();
		this._alpha=100;
	}
}

マウスイベントに反応しているようですが、きちんと動きません。

以下のfunctionは、どこからどのように呼出しているのでしょうか?

変数replyDataやgetdataの内容がわかりませんし、これらの値の処理はご質問とは直接関係がないように思われます。問題を切分けましょう。
引用:
ちなみに、ムービークリップ作成のスクリプトは以下です。フレームに記述しています。外部ファイルから読み込んだ1件以上のdatデータをムービークリップ内のテキストフィールドに設定しています。
function dispData(success){
	if(success){
		loaddata = "";
		i=0;
		for(dat in replyData){
			if(typeof replyData[dat] == "string"){
				tname =dat+"_mc";
//				_root.attachMovie( "label_mc", tname, i)  ;
				_root.dat_mc.duplicateMovieClip(tname, i)  ;
				getdata = replyData[dat].split("|||");
				eval(tname).id = getdata[0];
				eval(tname)._x = getdata[1];
				eval(tname)._y = getdata[2];
				eval(tname).submit_t = getdata[3];
				eval(tname).name = getdata[4];
				eval(tname).mail = getdata[5];
				eval(tname).mes = getdata[6];
				i++;
			}
		}
	}
}


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

machu
Åê¹ÆNo.2644
投稿日時: 2004-1-4 18:04
新米
居住地:
投稿: 12
使用環境:
.3.2
Re: 動的に配置した複数のムービークリップをドラッグ&ドロップしたい
> keitaさん
引用:
もしかして、クリップアクションのloadでdispData(success)を呼び出しているんでしょうか?

おっしゃるような呼び出し方はしていなかったのですが、ご返信いただく前にスクリプトをいじっていたら出来るようになりました。おそらく、keitaさんがおっしゃるように複製を繰り返していたように思われます。
複製を実行していたfunctionは、1フレームの中でイベントなしで直接呼び出していて、2フレームでstop()を指定していました。スクリプトをいじった時にstop()の場所を変えたりしたので……、以前はうまくそれが効いていなかったような感じです。
いろいろとありがとうございました。

> fumioさん
引用:
「思うように」「きちんと」動かないというのが、どういう動きなのかわかりません。「うまくいきません」と同じNGワードです。

言葉足らずですいませんでした。
ムービークリップ上でドラッグすると、ドラッグはできないが、アルファ値が一瞬下がるような状態でした。ドラッグ&ドロップが出来ればよく、アルファ値ならどうなるかといった確認のためのようなものだったので、この動きでアルファ値の方は問題ないです。
いつもご返信ありがとうございます。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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