任務
1.控制小球的運動
2.撞牆反彈或穿牆
3.拖曳小球,或拖曳箭頭
要用到的圖片,已經用 Flash CC 畫好了,
輸出成 myFlash.js 等你用。而且已經幫你放在舞台上了。
x與y方向的運動方程式↓
如果( 球到右牆右邊){ 球向左800}
上下左右↓
code↓
//穿牆
//右
if(ball.x > wallRX){
ball.x -= (wallRX-wallLX);
}
//左
if(ball.x < wallLX){
ball.x += (wallRX-wallLX);
}
//下
if(ball.y > wallBY){
ball.y -= (wallBY-wallUY);
}
//上
if(ball.y < wallUY){
ball.y += (wallBY-wallUY);
}
如果( 球到右牆右邊 而且 球正在向右跑){ 球變成向左跑}
上下左右↓
code↓
//撞牆反彈
//右
if(ball.x > wallRX & ball.vx > 0){
ball.vx *= -1;
}
//左
if(ball.x < wallLX & ball.vx < 0){
ball.vx *= -1;
}
//下
if(ball.y > wallBY & ball.vy > 0){
ball.vy *= -1;
}
//上
if(ball.y < wallUY & ball.vy < 0){
ball.vy *= -1;
}
1.用 dragMD = 'none', 'ball', 'arrow' 來區別滑鼠狀態
2. 在 myTick 中,不同 dragMD 做不同事情
var dragMD="none";//"none", "ball", "arrow"
//每影格執行一次
function myTick(){
//drag
if(dragMD === "ball"){//拖曳球
.......
}else if(dragMD === "arrow"){//拖曳箭頭
.......
}
}
判斷滑鼠按到誰↓
取個名字吧(用name)
ball.name="ball";//取名字
ball.arrRot.arrow.name="arrow";//取名字
ball.addEventListener("mousedown" , myMouseDown);//監聽滑鼠按下
stage.addEventListener("pressup" , myPressUp);//監聽滑鼠放開
ball(圓球)→arrRot(旋轉)→arrow(伸長)
接下去↓
按下後
function myMouseDown(e){//按下
if(e.target.parent.name === "ball"){//按到ball
dragMD = "ball";
isPlay = false;
.....
}else if(e.target.parent.name === "arrow"){//按到arrow
dragMD = "arrow";
isPlay = false;
.....
}
}
function myPressUp(e){
dragMD = "none";
isPlay = true;
}
讓球跟著滑鼠
避免球為了中心貼滑鼠的瞬間移動↓
code↓
按下時
ball.tx= stage.mouseX - ball.x;
ball.ty= stage.mouseY - ball.y;
拖曳時
ball.x = stage.mouseX - ball.tx;
ball.y = stage.mouseY - ball.ty;
vx, vy
ball.vx = (stage.mouseX - ball.x);//vx
ball.vy = (stage.mouseY - ball.y);//vy
code↓
var vv=Math.sqrt(ball.vx*ball.vx+ball.vy*ball.vy);//速度大小
var theta=Math.atan2(ball.vy , ball.vx);//方向(弧度)
ball.arrRot.rotation=theta*180/Math.PI;//旋轉
ball.arrRot.arrow.scaleX=vv/100;//伸長
1. 密室內,等速運動小球
2. 撞牆反彈(或穿越)
3. 球的位置可拖曳
4. 速度箭頭可拖曳