emotional-box project

Trackback URL

Photos from Flickr

  • Petra
  • Petra
  • Petra
  • Petra
  • Petra
  • Petra

Profile

avatar 小野田 智(オノダサトシ)
日本でWebデザイナーとして活動後、英語習得のために渡豪。18ヶ月の修行期間を経て帰国後、Web業界に復帰、某社にてデザイナーとして勤務中。
詳細

Recent Entries

30th Aug 2004

depthContorollerクラス

天気が悪いのに出かけたら、案の定、帰り道でもろに台風の被害を受けてしまった。
久しぶりに、「横殴りの雨」ってやつを経験した。

で、話は全く変わって、ASの話。
ムービークリップの深度管理なんだけど、MovieClip.swapDepths()だけでは使い勝手が若干悪い。
Flashのオーサリング時のように、「前へ」とか「最背面へ」とかやりたいわけだ。
他のMCの深度も勝手に変更してしまうので、OOP的には反しているような気がするけど、それでもできたほうがいい時だってある。
今回の僕の場合、万華鏡の破片の深度変更は手軽にやっておきたい。

というわけで、新たにカスタムクラスを作成。例によってクラスメソッドを何種類か実装している。

とりあえず、サンプル
あと、ソースファイル

depthContoroller.changeDepth(targetMC:MovieClip, targetDirection:String)

引数:
targetMC
深度を変えたいMC

targetDirection
“highest”,"higher”,"lower”,"lowest"のどれか。

戻り値:移動先の深度

これがメインのメソッド。
targetMCに設定したMCをその階層の中の任意の深度に移動させる。
例えば、

_root.createEmptyMovieClip("A_mc",1);
_root.createEmptyMovieClip("B_mc",3);
_root.createEmptyMovieClip("C_mc",-5);
newDepth=depthController.changeDepth(C_mc,"highest");

と記述すると、C_mcの深度が3になり、他のMCの深度が1ずつ下がる。
また、newDepthには3が代入される。

他のメソッドに関しては、中のコメントを読んで下さい。
特に対価などは求めませんが、役に立ったら教えてください。
コード上、もっといい書き方があった場合も教えてくれるとうれしいです>上級者の方々
こうやってblogに公開してるけど、実は自分のための忘備録でもあったりして…。


Flash

Comments

kazutaka posted at 30th August 20:17 2004

Player7以降だったら
getNextHighestDepth()とかgetInstanceAtDepth()とか使うともう少しすっきりかけるかも。
て、あまりちゃんと見てないので外してたらすいません。

satoshi posted at 31st August 10:45 2004

どもです。
getNextHighestDepth()は検討したんだすけど、今の結果を得るためにはどうにもうまくいかず、結局この形に落ち着きました。
とりあえず、バグもなく動いてくれてるので現状ではこれでいいのかなと思ってます。
ご指摘、ありがとうございました。

Leave a comment

名前(必須):

メールアドレス(必須ですが公開されません):

URL(オプション):

スパム防止のために下に表示されている言葉を入力してください:

情報を記録する

emotional box project all rights reserved Satoshi Onoda
powerd by expression engine