频道直达 - 学院 - 下载 - 交易 - 特效 - 字库 - 手册 -排名-工具- 繁體
网页教学网站开发 设为首页
加入收藏
联系我们
建站搜索: 常用广告代码   用户注册 | 用户登陆
您当前的位置:中国建站之家 -> 网站开发工具应用教程 -> Flash教程 -> 飞机游戏的注释、源码

飞机游戏的注释、源码

作者:未知  来源:转载  发布时间:2005-8-12 20:19:23  发布人:acx

减小字体 增大字体


主要代码解释如下:

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++;
};
}

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

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


将本文收藏到QQ书签与更多好友分享
[打 印]
[] [返回上一页] [收 藏]
∷相关文章评论∷    (评论内容只代表网友观点,与本站立场无关!) [更多评论...]
精彩推荐
热门文章
· 注册码大全二
· 注册码大全四
· 注册码大全一
· 要10G免费网络硬盘的请进..
· 通过google 赶快来赚美金..
· 注册码大全十
· 头像-qq头像(qq新头像)4..
· 让你轻松架设FTP服务器1..
· 注册码大全三
· 梦幻背景图片7
· 卡通动物图片6
· 网页制作素材-按钮素材2..
· 让你轻松架设FTP服务器5..
· 风景图片8
· 注册码大全九
· 让你轻松架设FTP服务器2..
关注此文读者还看过
· SQL Server数据库技术(..
· 如何在命令行下编译一个..
· 专家讲堂:如何选择购买..
· Flash广告实例剖析:动感..
· 网站?XML?我的思考
· 偷窥你的源代码:把swf还..
· ASP 组件指南
· ASP进阶之文章在线管理更..
· 海量博客带动域名产业发..
· 盛大彻底退出新浪收购战..
· 用表单来提交sql - 2
· 网络游戏产业暴利揭秘:..
· 1栏分页显示(附显示的形..
· 第18次互联网统计报告称..
· photoshop中制作逼真的鼠..
· 新手配置PHP调试环境
相关文章
· 浅谈飞机游戏碰撞检测..
· 飞机游戏(彩京类型《..
· 一个完全使用AS2编制..
· [讨论]飞机游戏中的跟..
· 飞机游戏+跟踪导弹源..
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 人才招聘
网站合作、内容监督、商务咨询:QQ: 9576619
Copyright ? 2005--2008 中国建站之家版权所有
粤ICP备05092265号