ActiinScript2.0 縦横移動 ボールを掴む
2011.11.04
この記事は最終更新日から1年以上が経過しています。
前回の記事、ActiinScript2.0 縦横移動ボールアクションの続きとなります。
前回では縦横と移動するボールでした。
これを更にクリックして掴めるようにしたいと思います。
掴めるようにするには、前回作成したムービークリップの中にボタンシンボルを作成します。
一応手順を
ステージに配置されたインスタンスをダブルクリックし、
ムービークリップの編集画面へと切り替えます。
左上が「シーン1>ボール」となっていれば大丈夫です。
この状態はムービークリップを編集する画面となります。
さらに配置されているシンボルを選択し、メニューの 修正>シンボルに変換を選択
シンボルタイプを「ボタン」にし、ボタンシンボルへと変換します。
このとき、プレビューを行うと確認できるのですが、ムービークリップにマウスを合わせると指マークに変わります。
つまり、ムービークリップの特性を持ったボタンが出来ている事になります。
それでは、ボタンを掴んで離すActionScriptを記述していきます。
記述場所は前回記述した場所になります。
ActionScript2.0
on (press) { startDrag(this, true); } on (release) { stopDrag(); }
それでは解説を。
on(press)はムービークリップがマウスでクリックされた時、アクションを実行させます。
startDrag(this,true);
の部分ですが、startDragはドラッグを始めるという意味で、(〜)に記述されている
thisはムービークリップ自身を表します。
tureはその物体の中心をマウスの位置に自動的に合わすことを意味します。
すなわち、ドラッグをするとムービークリップはマウスに合わせて移動する。
となります。
on(release)はマウスが押されて離された時、アクションを起こします。
基本的なドラッグ&ドロップのスクリプトは以上となるのですが、
今のままでは、とてもぎこちない動きとなります。
この挙動はドラッグされているときもムービークリップが動き続けている為におこる挙動となります。
なので、ドラッグされているときは移動を行わないスクリプトを記述します。
仮にballHoldとします。
掴まれている時はballHold =1;それ以外はballHold = 0;とします。
先ほどのスクリプトに追加。
ActionScript2.0
on (press) { ballHold =1; startDrag(this, true); } on (release) { ballHold =0; stopDrag(); }
更にフレーム毎に処理されているムービークリップのスクリプトにも追加を行います。
ActionScript2.0(ムービークリップが読み込まれた時)
onClipEvent(load){ speedX = 10; speedY = 8; ballHold = 0; }
ActionScript2.0(毎フレーム処理)
onClipEvent(enterFrame){ if(ballHold == 1){ }else{ if (this._x>500-this._width/2){ speedX = speedX*-1; } if (this._x<0+this._width/2) { speedX = speedX*-1; } if (this._y>400-this._width/2) { speedY = speedY*-1; } if (this._y<0+this._width/2) { speedY = speedY*-1; } this._x += speedX; this._y += speedY; } }
if(ballHpld == 1){
で掴まれている時の処理。
移動はさせたくないの特に記述はしません。
}else{ それ以外の処理。
ここに移動の処理を記述します。
}
そうする事によって、掴んでいるときは移動せず、離すと移動を始めます。
ムービークリップが読み込まれた時はballHold = 0;に設定しているので、
縦横移動をしている状態となります。
デモページ
デモページはこちらから
確認されるとわかるのですが、離したときに離した感触がないので、
更に離したときの遠心力を次回は付けていこうと思います。