9RIA-沐枫 发表于 2018-2-6 17:39:49

【9RIA—沐枫】—【基础小知识】第6节(边界)

转载:9RIA游戏开发者社区(天地会)
作者:沐枫(原天地会大神)


【基础小知识】系列教程(总目录)——沐枫大神出品



摩擦力
import flash.events.MouseEvent;

var vx:Number = 0;
var vy:Number = 0;
//var friction:Number = 0.1;//定义一个摩擦力
var friction:Number = 0.9;//不精确摩擦
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(MouseEvent.CLICK,onClick);
function onClick(e:MouseEvent):void
{
removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
vx=(mouseX-ball.x)/20;
vy=(mouseY-ball.y)/20;//初始速度
addEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
}

function onEnterFrameHandler(e:Event):void
{
//var speed:Number= Math.sqrt(vx * vx + vy * vy);
// if (speed > friction)
// {
// speed -= friction;
// }
// else
// {
// speed = 0;
// removeEventListener(Event.ENTER_FRAME, onEnterFrameHandler);
// }
// var angle:Number = Math.atan2(vy,vx);
//vx = Math.cos(angle) * speed;
// vy = Math.sin(angle) * speed;
vx*=friction;
vy*=friction;

ball.x += vx;
ball.y += vy;
}

移出对象
var count:int = 10;
var balls:Array;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;//舞台的尺寸与播放器尺寸相匹配
balls=new Array();
var vx:Number = 0;
var vy:Number = 0;
vx = Math.random() * 2 - 1;
vy = Math.random() * 2 - 1;
for (var i:int=0; i < count; i++)
{
var ball:Ball = new Ball();
ball.x = Math.random() * stage.stageWidth;
ball.y = Math.random() * stage.stageHeight;
stage.addChild(ball);
balls.push(ball);
}
stage.addEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
function onEnterFrameHandler(event:Event):void
{
for (var i:Number=balls.length -1; i > -1; i--)
{
balls.x += vx;
balls.y += vy;
if (balls.x - balls.width / 2 > stage.stageWidth || balls.x + balls.width / 2 < 0 || balls.y - balls.width / 2 > stage.stageHeight || balls.y + balls.width / 2 < 0)
{
stage.removeChild(balls);
balls.splice(i,1);
if (balls.length <= 0)
{
stage.removeEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
}
}
}
}

重置对象(喷泉效果)
var count:int = 500;
var balls:Array;
var gravity:Number = 0.5;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;//舞台的尺寸与播放器尺寸相匹配
balls=new Array();
var vx:Number = 0;
var vy:Number = 0;
vx = Math.random() * 2 - 1;
vy = Math.random() * -10 - 10;
for (var i:int=0; i < count; i++)
{
var ball:Ball = new Ball();
ball.x = 275;
ball.y = stage.stageHeight;
stage.addChild(ball);
balls.push(ball);
}
stage.addEventListener(Event.ENTER_FRAME,onEnterFrameHandler);
function onEnterFrameHandler(event:Event):void
{
for (var i:Number = 0; i < 500; i++)
{
vy += gravity;//加速度
vx+=0.01;//模拟风力
balls.x += vx;
balls.y += vy;
if (balls.x - balls.width/2 > stage.stageWidth ||balls.x + balls.width/2 < 0 ||balls.y - balls.width/2 > stage.stageHeight ||balls.y +balls.width/2 < 0)
{
balls.x = 275;
balls.y = stage.stageHeight;
vx = Math.random() * 2 - 1;
vy = Math.random() * -10 - 10;
}
}
}

反弹
import flash.events.Event;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;//设置舞台大小与播放窗口大小同步
var bounce:Number = 0.7;//弹力系数
var vy:Number = 4;//下落速度
var g:Number=0.06;//重力系数
stage.addEventListener(Event.ENTER_FRAME,onMc);
function onMc(e:Event):void
{
mc.y += vy;
vy+=g;
if (mc.y + mc.width / 2 > stage.stageHeight)
{
vy *= -bounce;
}
}


下载:



PS:本教程我刚刚开始写,刚开始有不完善的地方请大家多多指教,本人会把它做的更好,帮助新手们早日提高自己的水平,也算是尽一份微薄之力。请大家多多支持,给点动力。
页: [1]
查看完整版本: 【9RIA—沐枫】—【基础小知识】第6节(边界)

感谢所有支持论坛的朋友:下面展示最新的5位赞助和充值的朋友……更多赞助和充值朋友的信息,请查看:永远的感谢名单

SGlW(66139)、 anghuo(841)、 whdsyes(255)、 longxia(60904)、 囫囵吞澡(58054)

下面展示总排行榜的前3名(T1-T3)和今年排行榜的前3名的朋友(C1-C3)……更多信息,请查看:总排行榜今年排行榜

T1. fhqu1462(969)、 T2. lwlpluto(14232)、 T3. 1367926921(962)  |  C1. anghuo(147)、 C2. fdisker(27945)、 C3. 囫囵吞澡(58054)