FLASH 小球游戏

游戏简介:随机的从界面顶部下落小球,界面的底部有一个滑块,可以根据鼠标或键盘左右键而左右移动,滑块接到下落的小球则加10分,接不到小球则扣5分。

首先,创建两个影片剪辑元件:一个是小球,另一个是滑块。小球的linkage为circle,滑块的linkage为slider,其实例名为slider_mc。

第二,将两个元件从舞台中删除,并设置舞台的宽高分别为600px和400px。

第三,在时间轴上选择第一帧右键“动作”,进入动作面板,添加下列AS代码即可。

depth = 0;
allBalls = new Array();//数组,用来存储所有球,包括已下落的和已产生的
function MakeNewClip() {
	clearInterval (ranID);//每次运行时,先清空之前设置的时间间隔
	ran = (Math.random()*4000)+1000;//取一个1秒至5秒间的随机数
	ranID = setInterval(MakeNewClip, ran);//将上面的随机数设置成每个影片出现的时间间隔
	NewClip = _root.attachMovie("circle", "circle"+depth, depth++);//将元件链接为circle,实例名为circle的影片剪辑粘到主时间轴上
	//由于实例名需要唯一,所以将实例名后加上一个值,每次该值都是变化的
	allBalls.push(NewClip);//将影片剪辑存放到数组中

	NewClip._x = Math.random()*Stage.width;//影片剪辑的x坐标
	NewClip._y = -50;//影片剪辑的y坐标
	NewClip.speed = (Math.random()*10)+5;//影片剪辑下落的速度
	NewClip.onEnterFrame = function() {
		this._y += this.speed;//this表示NewClip对象,它每次都是垂直下落speed个像素
		if(this._y>Stage.height){//当该对象(即小球)的y坐标大于舞台的高度时,说明小球已经落到底部无法捕获
			updateScore(-5);//此时减去5分
			for(i=0;i<allBalls.length;i++){ //此时遍历数组中的对象实例
				if(this==allBalls[i]){//如果数组中有已经下落的实例
					allBalls[i].removeMovieClip();//则删除该实例的影片剪辑
					allBalls.splice(i, 1);//将该实例从数组中删除
				}
			}
			this.removeMovieClip();//删除该影片剪辑
		}
	};
}
MakeNewClip();//调用创建影片剪辑的函数
//setInterval(MakeNewClip, 1000);
_root.attachMovie("slider", "slider_mc", -1);//在主时间轴上粘贴实例名称为slider_mc 链接名为slider的元件
slider_mc._y = Stage.height-20;//此元件的纵左边为舞台的高度减去20 即让接球的滑板距离舞台底部有20像素的距离
slider_mc.onMouseMove = function() {//滑板的鼠标移动事件
	this._x = _xmouse;//设置元件的x坐标为鼠标的x坐标
	updateAfterEvent();//更新屏幕
};
watchKeyboard = new Object();//新建一个键盘对象
watchKeyboard.onKeyDown = function() {//键盘事件
	if (Key.getCode() == Key.LEFT) {//如果按下“向左”键
		slider_mc._x -= 5;//滑板向左移动5个像素
	}
	if (Key.getCode() == Key.RIGHT) {//如果按下“向右”键
		slider_mc._x += 5;//滑块向右移动5个像素
	}
};
Key.addListener(watchKeyboard);//添加事件监听
_root.createEmptyMovieClip("watchCollision", -2);//创建一个空白的影片剪辑,其实例名为watchCollision,depth为-2
watchCollision.onEnterFrame = function() {//
	for (i=0; i<allBalls.length; i++) {
		if (allBalls[i].hitTest(slider_mc)) {//如果存在球与滑板相撞
			allBalls[i].removeMovieClip();//则移除该球的影片剪辑
			allBalls.splice(i, 1);//同时在数组中删除该球的实例
			updateScore(10);//这时在分数上加10
		}
	}
};
score=0;//分数初始化
function updateScore(amount) {//更新分数的函数 传进来的参数是添加或减去的分数
	score+=amount;//总得分加上此次得分
	score_txt.text="分数是:"+score;//动态文本框的显示
}
updateScore(0);//调用更新分数的函数
Mouse.hide();//隐藏鼠标


本文是个人笔记,自己留作参考的,所以不喜勿喷,嘴下留情!

转载请注明来源!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值