|
| Name | 憲ちゃん | ||||
| Date | 2004年02月05日 (木) 02時47分 | ||||
| Message | 前頁にこのレスを書くと、PCの動作が重くなりましたので、新規投稿します(^^; swfファイル自体は軽くても、複雑な演算や描画はマシン負荷が大きいのです。 それを1ページに2つ同時に再生するとちょっときついようですネ!! kaiten05.fla それぞれのMCの階層は以下のような構造になっています。 ただし、各MCのインスタンス名は前頁のサンプルで必要ですが、 このサンプルの場合必要ありません(^^) ![]() 最終的に描画は、この定点MCが移動する座標値を元にするわけですが・・・ ここで得られるXY座標値は、それが配置されているMCの中の座標値になります。 つまりMC編集画面の情報パネルで表示される値のことでローカル座標のことです。 サンプルは「小円・定点MC」のX=75,Y=0 に配置していますが、 回転しているのは「小円回転MC」と「小円・定点MC」で、定点MC自身は回転していないので、 参照しても座標値はX=75,Y=0のまま変化しません。 これをムービードキュメントの左上を「0,0」とする絶対座標に置き換えるメソッドが。。。 「localToGlobal」で、ムービーを再生したときの見たとおりの座標値に変換してくれます。 使い方は・・・ 構造体名={x:座標値,y:座標値 }; MCインスタンス名.localToGlobal(構造体名); ※「構造体」とは何か?などとむつかしく考えないで使ってください(笑) 右辺にある各座標値は、その下のメソッドで指定したMCインスタンスの基準点(0,0)を中心にして どの位置の座標値を絶対座標に変換するかということを尋ねています。 ややこしい言い方ですが(笑) 今回は、定点MCの基準点(0,0)そのものを絶対座標にしてもらえばいいので、 仮に構造体名(任意の名称で可)を「theRoot」としたとすれば・・・ theRoot = { x:0,y:0 }; とし、 これを定点MC自身に書くことにしますので、インスタンス名は自分自身「this」。 this.localToGlobal( theRoot );と記載します。 これで、自分自身の基準点を絶対座標に変換してください、という意味になります。 そしてその絶対座標の値を取り出すときは・・・ 変数=構造体名.x; 変数=構造体名.y; としますので、この場合は・・・ 変数=theRoot.x; 変数=theRoot.y;となります(^^g/~~ そして、この絶対座標を使って、「_root」に描画しますので・・・。 _root.lineStyle(3,0xFF0000 ); _root.moveTo( theRoot.x,theRoot.y ); と描画のライン設定と始点を決め、その後の値の変化に従って・・・ _root.lineTo( theRoot.x,theRoot.y ); を繰り返していけばよいことになります(*^.^*) このラインの書き始めのきっかけをシーンに配置した「LINE」ボタンにさせています。 シーン編集画面の1フレームに、sw = 0;ととりあえずコントロール用の変数を定義し、 「LINE」ボタンに・・・ on (release){ sw = 1; } そして、定点MCのクリップアクションで・・・ on ClipEvent (enterFrame) { フレームレートごとに以下のことを繰り返す theRoot = { x:0,y:0 }; ←現在の自分の座標を絶対座標に変換 this.localToGlobal( theRoot ); _root.textX = Math.floor( theRoot.x );←左下のテキストボックスにその値を表示 _root.textY = Math.floor( theRoot.y ); if ( _root.sw == 1 ){ 変数sw が1なら _root.sw = 2; ←変数sw に2を代入※ with( _root ){ _rootにある以下のことを処理 lineStyle( 3,0xFF0000 ); ←ラインの初期設定 moveTo( theRoot.x,theRoot.y ); ←絶対座標で始点を設定 } }else if ( sw == 2 ){ 変数sw が1でなくて、2なら※ _root.lineTo( theRoot.x,theRoot.y ); ←絶対座標で線を描く } 変数sw が0のときは、絶対座標をテキストボックスに表示することだけをし、 変数sw が1になると、まず変数sw を2にして次回からここへは来られないようにし、 ラインの初期設定と始点の設定をしてループをでます。 次の繰り返し以降は、変数sw は常に2なので、次々変化する絶対座標で線を引き続けます。 「CLS」ボタンで・・・ on (release){ this.clear(); ←描いた線をすべて消去 sw = 0; ←勝手に描かないよう変数sw に0を代入 } 以上です(^^; これらの一連のスクリプトは、別にどこに書いても構いません。 定点MCにスクリプトを記載することの意味は・・・ 月を周回するロケットの中で静止している宇宙飛行士が、自分の位置を地球座標に変えて、 宇宙飛行士自らが筆を持ち、自分の目で地球上の旗の合図をみて、 地球キャンバスに線を描いたり消したりしているというイメージです(*^.^*) やり取りは、自分(this)と地球(_root)との間だけですから、 自分や途中のMCにインスタンス名を必要としないのです♪ それから・・・banさんがおっしゃっておられた、 小円をドラッグして、定点ラインを引く方法はやってみるとわかりますが、 ドラッグのブレがそのままラインに反映されますのでギザギザになります(笑) |
||||
| Response
01 |
|
||||
| Response
02 |
|
||||
| Response
03 |
|
||||
| Response
04 |
|
||||
| このページの先頭へへ |