站长中国
设为首页 | 站长论坛

站长论坛 站长下载
您所在的位置: 站长中国 > 站长学院 > 网络媒体 > Flash > 正文

飞机游戏的注释、源码
  2008年02月18日16:54:32  评论(0条) 字体:[ ]
相关热点: 源码 注释 游戏 飞机 // 敌人 if function 子弹
主要代码解释如下:

init();
function init() {
black.swapDepths(4000);
//设置遮挡的外框的深度
Var();
hit_text();
//\"击倒数\"文本框
setFly();
//飞机主角的初始化
Trans();
//程序的运行
return_col();
//游戏over进行重来的控制
Fps();
}
function Var() {
stage_width = 300;
stage_height = 300;
//设置这两个变量分别为场景的宽度和高度
this.createEmptyMovieClip(\"enemy_mc\", 1);
//建立个元件用来放置敌人
this.createEmptyMovieClip(\"bullet_mc\", 2);
//建立个元件用来放置子弹
bullet_depth = 0;
enemy_depth = 0;
//初始化子弹和敌人的深度
hit_num = 0;
//初始化击中的数目
life._xscale = 100;
//初始化生命槽的宽度
oldtime = getTimer();
//用来存储游戏开始的时间,在下面对按\"ctrl\"发射键的按下时长判断
}
function hit_text() {
this.createTextField(\"h_num\", 1000, 5, 1, 100, 20);
//创建一个文本用来显示击倒敌机数的
num_format = new TextFormat();
num_format.color = 0xb8e0f0;
h_num.text = \"击倒\"+0;
h_num.type = \"dynamic\";
h_num.border = true;
h_num.borderColor = 0xffffff;
h_num.color = 0xffffff;
h_num.setTextFormat(num_format);
h_num.autoSize = \"left\";
//都是设置这个文本的一些属性
}
function setFly() {
this.attachMovie(\"fly\", \"fly\", 0);
//调库中的飞机元件
fly._xscale = fly._yscale=150;
//设置飞机的初始大小
fly._x = 150;
fly._y = 250;
//设置飞机的初始位置
fly_speed = 5;
}
function control() {
//飞机的上下左右控制
if (Key.isDown(Key.LEFT)) {
fly._x -= fly_speed;
}
if (Key.isDown(Key.UP)) {
fly._y -= fly_speed;
}
if (Key.isDown(Key.RIGHT)) {
fly._x += fly_speed;
}
if (Key.isDown(Key.DOWN)) {
fly._y += fly_speed;
}
}
function Range(mc) {
//对超出边界的判断
if (mc._x<=mc._width/2) {
mc._x = mc._width/2;
}
if (mc._x>=stage_width-mc._width/2) {
mc._x = stage_width-mc._width/2;
}
if (mc._y>=stage_height-mc._height/2) {
mc._y = stage_height-mc._height/2;
}
if (mc._y<=mc._height/2) {
mc._y = mc._height/2;
}
}
function shoot() {
//子弹的发射
if (fly != undefined) {
//如果飞机存在的话
var bulletSpeed = 10;
//设置子弹的速度
if (Key.isDown(Key.CONTROL) and getTimer()-oldtime>200) {
//按下空格并且两次按键的时间差>200毫秒
oldtime = getTimer();
//又将当前时间存储到oldtime变量中
for (var i = -40; i<=40; i += 20) {
//范围就在-40度到40度之间,间隙为20度
Bullet = bullet_mc.attachMovie(\"bullet\", \"bullet\"+bullet_depth, bullet_depth++);
//调库中的子弹
Bullet._x = fly._x;
Bullet._y = fly._y-20;
Bullet._xscale = Bullet._yscale=30+(hit_num/10)*10;
if (Bullet._xscale>100) {
Bullet._xscale = Bullet._yscale=100;
}
//初始子弹开始发射的位置,子弹的大小根据杀敌数目来加粗,最大为100的比例
Bullet._rotation = i;
//子弹的角度
arg = (90-i)/180*Math.PI;
//由于开始的时候子弹我是向上放置,这时候会默认为0度,所以要用90减,得到实际的弧度
Bullet.xinc = Math.cos(arg)*bulletSpeed;
Bullet.yinc = Math.sin(arg)*bulletSpeed;
//子弹xy方向上的分速度
Bullet.onEnterFrame = function() {
//每个子弹逐桢执行
for (var k in enemy_mc) {
if (enemy_mc[k].enemy_body.hitTest(this)) {
//如果敌人碰到了子弹,我这里用hittext做的,其实还可以用dis距离来判断.
hit_num++;
//杀敌数+1
h_num.text = \"击倒\"+hit_num;
//文本内显示出来
h_num.setTextFormat(num_format);
//文本的一个设置
enemy_mc[k].speed = 0;
//敌人速度为0,停下来.
enemy_mc[k].gotoAndPlay(\"enemy_dead\");
//跳到爆炸的画面
this.removeMovieClip();
//删除这个子弹
}
}
if (this._y<0 or this._x<0 or this._x>stage_width) {
this.removeMovieClip();
//如果子弹出界,也删除掉
}
this._x += this.xinc;
this._y -= this.yinc;
//设置子弹的位置,方向向上
};
}
}
}
}
function enemySet() {
Enemy = enemy_mc.attachMovie(\"enemy\", \"enemy\"+enemy_depth, enemy_depth++);
// 调库中的敌人
temp_fly_x = fly._x;
temp_fly_y = fly._y;
// 当前飞机的位置
aa = x_y_random();
// 调用敌人出来位置的方法
Enemy._x = aa[0];
Enemy._y = aa[1];
//设置敌人出来的位置
Enemy.speed = 5;
//每个敌人的速度
Enemy.radia = (fly == undefined) ? Math.atan2(300-Enemy._y, random(300)-Enemy._x) : Math.atan2(temp_fly_y-Enemy._y, temp_fly_x-Enemy._x);
// 如果飞机存在的话,敌人飞向的角度为下方的一个随机位置,否则敌人飞向的角度为飞机主角的方向
Enemy.onEnterFrame = function() {
//每个敌人自身的逐桢运行
this._rotation += 20;
//角度不断+20,就产生了敌人的旋转
if (this.enemy_body.hitTest(fly.f_fly._fly)) {
//如果敌人接触到飞机主角
this.speed = 0;
//敌人的速度也为0
this.gotoAndPlay(\"enemy_dead\");
//跳到爆炸的画面
life._xscale -= 4;
//血槽的宽度减小
if (life._xscale<=0) {
life._xscale = 0;
fly.gotoAndPlay(\"dead\");
} else {
fly.play();
}
//如果血宽度为0,飞机就跳转到失败的画面,否则飞机就运行闪一下的动画
}
if (this._x<0 or this._x>stage_width or this._y>stage_height or this._y<0) {
this.removeMovieClip();
}
//如果敌人出界就删除敌人
this._x += this.speed*Math.cos(this.radia);
this._y += this.speed*Math.sin(this.radia);
//敌人x,y方向上的分速度
};
}
function x_y_random() {
//敌人出来随机位置的方法
var s = [];
var ran = random(3);
switch (ran) {
case 0 :
s[0] = random(300);
s[1] = 0;
break;
case 1 :
s[0] = 0;
s[1] = random(300);
break;
case 2 :
s[0] = 300;
s[1] = random(300);
}
return s;
}
//这里是设置敌人从左上右三个面出来
function Trans() {
enemy_time = 0;
//初始化个时间
this.onEnterFrame = function() {
control();
Range(fly);
shoot();
if (++enemy_time>15) {
// 如果时间间隔大于15桢,这里是设置敌人每隔15桢的时间出来一个
enemy_time = 0;
// 然后又返回0
enemySet();
//调用敌人
}
};
}
function return_col() {
this.onKeyDown = function() {
if (Key.isDown(Key.SPACE) and fly == undefined) {
for (var i = 1; i<=40; i++) {
enemy_mc.removeMovieClip();
bullet_mc.removeMovieClip();
}
//如果按下空格键并业飞机不存在的话,就删除子弹元件和敌人敌人元件
Var();
setFly();
load_con();
Trans();
//重新执行
}
};
Key.addListener(this);
}
function Fps() {
//显示影片的fps值
_fps = 0;
fps_mc.fps = \"\";
setInterval(function () {
fps_mc.fps = _fps;
_fps = 0;
}, 1000);
fps_mc.onEnterFrame = function() {
_fps++;
};
}

//恩...差不多就这样了.把原文件也发给大家: )...

由于原文件给弄丢了,所以用破解软件弄了元件出来重新做了下。
点击浏览该文件
点击浏览该文件



收藏本文 打印 打印本文  推荐本文 告诉好友 投稿 投稿邮箱

站长排行

学院

新闻

专栏

盈利

[揭密网络黄链]中国留学生买凶专破日本
windows 2008中文版iis7+asp+php+Acces
贴吧发帖机使用教程(绝对原创)
超强弹出窗口代码,什么都挡不住
Windows Vista局域网网络连接设置
JSP语法(6)
FLASH视觉特效实例之地震效果
关于数据分页(转自www.codeproject.co
教你如何在Vista中设置麦克风
不用Photoshop 在线恶搞大头像
全国哀悼日网友自发QQ隐身上线 向死难
淘宝网卖家公然叫卖“艳照门”照片集
抗震救灾/鱼目混珠?
Google绿色专家质疑黑色背景网页节省资
阿里妈妈广告卖主全攻略
电影小说类相关关键字搜索量列表
爆笑 阿里就这样把亿告征服!
大脚:实战单页面优化关键词之——淘宝
国内各IT企业办公环境揭秘(多图)
心系灾区,点燃希望——手机QQ2008祈福
ECSHOP模板制作参考文档
悬挂阿里妈妈会否被百度惩罚
ECSHOP模板下载
阿里妈妈是否是中小站长的救世主?
最强网店ECShop发新版 众多酷炫功能给
土豆网,优酷网,爆米花等视频网站采集
DedeCms模板安装/制作概述
网上商店系统巅峰对决 ECShop vs ShopE
编程中国全站采集规则
http://www.mt86.com全站采集规则
性福联盟 一个不尊重站长的联盟
百度网络广告利润增长将会持续多久
大脚:日赚100元—揭露最新firefox欺骗
分享经验:个人网站如何月赚1万!
大脚:垃圾站超级赚钱法之二—突破“站
迅雷联盟、快车联盟收入对比
大脚:垃圾站超级赚钱法之——前言
Google Adsense的秘密 第二版
风险投资公司vc联系方式名录大全(一)
经理人必看的十个管理网站
站长学院  网页设计 建站教程 图形图象 网络编程

制定完整的网站
制定完整的网站
中国企业网站的
中国企业网站的

网站运营之怎么样来粘住你的用
网麒:网站建设创意
怎样提高网页快照更新
两种方法,教你如何通过微软正
英文网站优化细节
利用SSL加密增强FTP服务器的安
网页设计常用Javascript经典代

新闻线索

如果你有站长界人事变动、重组并购、变革技术出现,以及产品投诉等重要新闻线索,请告诉我们,我们会给予特别关注。
0631-3653338
站长中国编辑部
站长中国24小时新闻热线: 13156089008