// イベントリスナー
my_ball.addEventListener(MouseEvent.MOUSE_DOWN, switchOn);
stage.addEventListener(MouseEvent.MOUSE_UP, switchOff);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moveBox);
stage.addEventListener(Event.ENTER_FRAME, throwBox);
// パラメータ
var sw:Boolean = false;
var click_x:int = 0;
var click_y:int = 0;
var mouseX_bef:int;
var mouseY_bef:int;
var v_x:Number = 0;
var v_y:Number = 0;
var rub:Number = 1.01; // 摩擦
var ela:Number = 1.2; //弾性率
var limitX:int = stage.stageWidth - my_ball.width;
var limitY:int = stage.stageHeight - my_ball.height;
// マウスダウンするとスイッチON&ズレ分取得
function switchOn(event:MouseEvent):void {
sw = true;
click_x = event.stageX - my_ball.x;
click_y = event.stageY - my_ball.y;
}
// マウスアップするとスイッチ
function switchOff(event:MouseEvent):void {
sw = false;
}
// ボックスを移動する&速度指定
function moveBox(event:MouseEvent):void {
if(sw) {
my_ball.x = stage.mouseX - click_x;
my_ball.y = stage.mouseY - click_y;
v_x = stage.mouseX - mouseX_bef;
v_y = stage.mouseY - mouseY_bef;
mouseX_bef = stage.mouseX;
mouseY_bef = stage.mouseY;
}
}
// ボールを投げる
function throwBox(event:Event):void {
if(!sw) { // 捕まえられたら止まる
// 画面外に行かないように
if(my_ball.x < 0) my_ball.x = 0;
if(my_ball.x > limitX) my_ball.x = limitX;
if(my_ball.y < 0) my_ball.y = 0;
if(my_ball.y > limitY) my_ball.y = limitY;
// 端っこで跳ね返る
if((my_ball.x + v_x) < 0 || (my_ball.x + v_x) > limitX) {
v_x = -v_x/ela;
}
if((my_ball.y + v_y) < 0 || (my_ball.y + v_y) > limitY) {
v_y = -v_y/ela;
}
// 摩擦
v_x = v_x/rub;
v_y = v_y/rub;
// 移動
my_ball.x += v_x
my_ball.y += v_y;
// 動き続けないように
if(Math.abs(v_x) < 0.01) v_x = 0;
if(Math.abs(v_y) < 0.01) v_y = 0;
}
}
Introduction
凹みTipsはHTML、CSS、PHP、ActionScript3.0、JavaScriptからAjaxまで初心者の凹が試行錯誤繰り返しながら勉強していくサイトです。一緒に勉強していきましょう!
Categories
Recent Entries
Monthly Archives