開発部だより 第72回
どうもお久しぶりです。
「振り返れば子猫がいる」です。うちの猫もすっかり大人の猫になり、朝の5時には窓の側で「出してー」と鳴き続け、7時には「入れてー」と鳴き続けるとってもかわいい猫に成長しました。お返しに気持ち良さそうに寝ているのを見つけると、愛のほおずりを必ずお見舞いしてやります。
さて私もそろそろ入社して一年近くが経ちました。やっと仕事にも慣れてきて最近覚えたFlexやColdFusionにも少しずつ愛着がわいてきました。
ぐぁ、やっぱりデータのやり取りの作業ばかりでは少しさびしい今日この頃。
そこで簡単なアニメーションを作ってみました。
マウスカーソルのように動く魚の骨をネコ?が追いかけて行くというものです。
とりあえず完成がこちら。
まずはお魚(hone_mc)の動きから。
Mouse.hide();
hone_mc.addEventListener(Event.ENTER_FRAME ,honeMoveHandler);
function honeMoveHandler(e:Event):void{
hone_mc.x = stage.mouseX;
hone_mc.y = stage.mouseY;
}
これはそのまんまですね。Mouse.hide()でカーソルを見えなくして、常にマウスの座標とお魚の座標を合わせる事によって、お魚がマウスカーソルのようになります。
次にダッシュしてちかづい追いかけてくるネコ(neko_mc)の動きです。
やっている事を要約すると、
@ マウスの座標とネコの座標の距離を計算する。
A 計算した距離を一定の数で割った分だけX,Y座標を近づける。
となります。
なんだかAの説明がよく分からないですが、例を挙げると、
距離が
1000の時は10で割ると100になり、100距離を近づける。
900の時は10で割ると90になり、90距離を近づける。
810の時は10で割ると81になり、81距離を近づける。
と、離れている距離が大きいほど、近づくX,Y座標も大きくなりダッシュして見えるというわけです。ソースにするとこんな感じです。
neko_mc.addEventListener(Event.ENTER_FRAME,nekoMoveHandler);
function nekoMoveHandler(e:Event):void {
var speed:uint = 10;
neko_mc.x += (stage.mouseX - neko_mc.x)/speed;
neko_mc.y += (stage.mouseY - neko_mc.y)/speed;
}
ここでspeedの値を大きくすると動きがゆっくりになり、小さくすると動きが速くなります。
いかがでしたか?
こんなんでも少しでも皆様のお役に立てれば幸いです。
