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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     あるMCがどのMCと当たっているか調べる方法
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
emore
Åê¹ÆNo.33303
投稿日時: 2007-5-11 12:25
新米
居住地:
投稿: 15
使用環境:
MacOSX 10.8.5
Flash CC
Flash Player11.8
あるMCがどのMCと当たっているか調べる方法
AというMCが画面上を動いていて、
多数配置してある静止しているどれかのMCに重なったときに
そのMCに対してある処理を行おうとしています。
このような場合、MCの数が少なければfor文でまわして
それぞれのMCにhitTestをするか、
各MCからAに対してhitTestをすればよいと思うのですが、
数が多いと効率的でなく、何かよい方法があればと思っております。

知りたいのはAというMCが今どのMCと当たっているかということなのですが、
このあたりの処理について詳しい方がいらっしゃいましたら、
ぜひお伝えいただければと思います。
よろしくお願いします。
piemaru
Åê¹ÆNo.33322
投稿日時: 2007-5-14 20:31
半人前
居住地: さいたま
投稿: 46
使用環境:
OS: WinXP
Flashバージョン:8,CS3
Re: あるMCがどのMCと当たっているか調べる方法
こんにちは、emoreさん。

MC「A」からみて、多くのMCと衝突しているかどうか見ようとするので、難しくなってしまうのではないでしょうか。

逆に、その配置してあるMCからみて、「A」に対してhitTest()したら、いかがでしょうか?

各MCに、
this.onEnterFrame = function(){
  if(this.hittest(_parent.A)){
     当たった時の処理
  }
}

というような感じで。


----------------
PIEMARU”(  ´  ▽  `  )ノ”

emore
Åê¹ÆNo.33324
投稿日時: 2007-5-14 22:16
新米
居住地:
投稿: 15
使用環境:
MacOSX 10.8.5
Flash CC
Flash Player11.8
Re: あるMCがどのMCと当たっているか調べる方法
piemaruさん、ありがとございます!

引用:

逆に、その配置してあるMCからみて、「A」に対してhitTest()したら、いかがでしょうか?


それも考えたのですが、処理の早さという点ではAからすべてにhitTest()する場合と、もしかしたらそれほど変わらないのかとも思いまして…
どちらにしろonEnterFrameでの処理となると数が多いと重くなりそうですし。
_droptargetみたいなものが、MCをドラッグしなくても使えれば一番いいんですけど…
nabe_1234
Åê¹ÆNo.33325
投稿日時: 2007-5-15 0:01
新米
居住地:
投稿: 21
使用環境:
Windows Vista Home Premium SP1,Flash CS3
Re: あるMCがどのMCと当たっているか調べる方法
> 多数配置してある静止しているどれかのMC

例えば、ピンボールのように、
縦長の画面に色んな装置が配置してある場合、

MCを配列に突っ込んで、Y座標でソートしておけば、
「もしかしたら衝突しているかも知れないMC」を
バイナリサーチの要領で絞り込めるかも。
永井勝則
Åê¹ÆNo.33328
投稿日時: 2007-5-15 9:38
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: あるMCがどのMCと当たっているか調べる方法
たぶん、非常に多くのムービークリップがあって、それらの位置を常に監視している必要がある状況かと思うので、
onEnterFrameやsetInterval関数による定期的な監視は必要かと思います。

以下はアイデアです。

・たぶん、Flash Playerののそのそした動きが障害になっているのかと思うので、
AS3+Flash Player 9を試す方法もあるかと思います。
・MovieClip.hitTest()は捨て、ピタゴラスの定理の2点間の距離を使う方法もあるかと思います。
・ムービークリップは動かず、静止しているだけなら、hitTest()は捨て、
その座標値や状態などを使った数学的な方法もあるかと思います。


----------------
永井勝則:
himco.jp :

__kjx
Åê¹ÆNo.33378
投稿日時: 2007-5-17 18:46
新米
居住地:
投稿: 4
使用環境:
WinXP SP2,Flash8 Pro,Flex2
Re: あるMCがどのMCと当たっているか調べる方法
どこかに載っていた情報をブックマークしたおいたものですが、

・ステージを分割して判定するアルゴリズム
http://lab.polygonal.de/articles/recursive-dimensional-clustering/

・BitmapDataを利用した判定方法
http://www.gskinner.com/blog/archives/2005/10/source_code_sha.html

こんなんとか参考になるかもです。
emore
Åê¹ÆNo.33455
投稿日時: 2007-5-23 22:32
新米
居住地:
投稿: 15
使用環境:
MacOSX 10.8.5
Flash CC
Flash Player11.8
Re: あるMCがどのMCと当たっているか調べる方法
nabe_1234さん、永井勝則さん、__kjxさん、ありがとうございます!!!
一週間ほど家を離れてネットのない環境にいたもので、
お返事の方遅れてしまい大変申し訳ありませんでした…

nabe_1234さん>
バイナリサーチ、初耳でしたので、調べてみたのですが、
これで高速化は図れそうな感じはしました。
あとは実際に組んでみてという感じですね。

永井勝則さん>
hitTest()のために効率が悪そうな感じはしていましたので、
バイナリサーチのような感じになるのかもしれませんが、
確かに座標で調べてというのは有効な感じがしますね。
AS3については、まだ試したことがないので、
CS3が出てからそちらの方も試してみたいと思います。

__kjxさん>
英語ページなので、まだきちんと見れていないのですが、
BitmapDataというのはよさそうな感じがしますね。
hittest()と違って、きちんと形も判別してくれそうですし。

まずはバイナリサーチ、BitmapDataあたりを試してみたいと思います。
本当にみなさんありがとうございました!!

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

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