Flash AS 制作生化危機游戲的簡單嘗試_Flash教程
推薦:Flash簡單實現(xiàn)網(wǎng)頁中的Flash動畫全屏Flash播放器自從升級到FlashPlayer9,0,28,0,也可以使網(wǎng)頁中的Flash通過一個簡單的按鈕實現(xiàn)全屏顯示,和一些視頻網(wǎng)站中的效果基本相同,但是在這個教程里是沒
這個教程先給大家做一個游戲中的場景,只是簡單的嘗試著做做!
友情提醒:由于該教程中演示Flash動畫較多,所以打開本頁后速度會慢些甚至影響瀏覽器!請關(guān)閉其它所有程序嘗試!在教程的最后提供了所有演示的Fla源文件。
首先布置地圖,并且做一個角色。
引入一幅地圖當作背景,轉(zhuǎn)換為元件。 角色的建立做好了上面的就可以了!下面我們開始添加代碼。回到第一幀,添加如下代碼。
walk_speed = 3;
radius = 8;
_root.attachMovie("ground", "ground", _root.getNextHighestDepth());
_root.attachMovie("environment", "environment", _root.getNextHighestDepth());
_root.attachMovie("player", "player", _root.getNextHighestDepth(), {_x:250, _y:200});
_root.createEmptyMovieClip("light", _root.getNextHighestDepth());
player.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this._x -= walk_speed;
}
if (Key.isDown(Key.RIGHT)) {
this._x = walk_speed;
}
if (Key.isDown(Key.UP)) {
this._y -= walk_speed;
}
if (Key.isDown(Key.DOWN)) {
this._y = walk_speed;
}
while (_root.environment.hitTest(this._x, this._y radius, true)) {
this._y--;
}
while (_root.environment.hitTest(this._x, this._y-radius, true)) {
this._y ;
}
while (_root.environment.hitTest(this._x-radius, this._y, true)) {
this._x ;
}
while (_root.environment.hitTest(this._x radius, this._y, true)) {
this._x--;
}
dist_x = this._x-_root._xmouse;
dist_y = this._y-_root._ymouse;
angle = -Math.atan2(dist_x, dist_y);
this._rotation = angle/(Math.PI/180);
};
測試效果,這時有地圖和角色了。
我們再繼續(xù)修改代碼。
torch_power = 100;
torch_step = 100;
torch_angle = 60;
torch_angle_step = 20;
walk_speed = 3;
radius = 8;
_root.attachMovie("ground", "ground", _root.getNextHighestDepth());
_root.attachMovie("environment", "environment", _root.getNextHighestDepth());
_root.attachMovie("player", "player", _root.getNextHighestDepth(), {_x:250, _y:200});
_root.createEmptyMovieClip("light", _root.getNextHighestDepth());
player.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this._x -= walk_speed;
}
if (Key.isDown(Key.RIGHT)) {
this._x = walk_speed;
}
if (Key.isDown(Key.UP)) {
this._y -= walk_speed;
}
if (Key.isDown(Key.DOWN)) {
this._y = walk_speed;
}
while (_root.environment.hitTest(this._x, this._y radius, true)) {
this._y--;
}
while (_root.environment.hitTest(this._x, this._y-radius, true)) {
this._y ;
}
while (_root.environment.hitTest(this._x-radius, this._y, true)) {
this._x ;
}
while (_root.environment.hitTest(this._x radius, this._y, true)) {
this._x--;
}
dist_x = this._x-_root._xmouse;
dist_y = this._y-_root._ymouse;
angle = -Math.atan2(dist_x, dist_y);
this._rotation = angle/(Math.PI/180);
light.clear();
light.lineStyle(1, 0xffffff);
for (x=0; x<=torch_angle; x = (torch_angle/torch_angle_step)) {
light.moveTo(this._x, this._y);
ray_angle = angle/(Math.PI/180)-90-(torch_angle/2) x;
ray_angle = ray_angle*(Math.PI/180);
light.lineTo(this._x (torch_power)*Math.cos(ray_angle), this._y (torch_power)*Math.sin(ray_angle));
light.lineTo(this._x, this._y);
}
};
效果如下。
我們再繼續(xù)修改代碼。
torch_power = 100;
torch_step = 100;
torch_angle = 60;
torch_angle_step = 20;
walk_speed = 3;
radius = 8;
_root.attachMovie("ground", "ground", _root.getNextHighestDepth());
_root.attachMovie("environment", "environment", _root.getNextHighestDepth());
_root.attachMovie("player", "player", _root.getNextHighestDepth(), {_x:250, _y:200});
_root.createEmptyMovieClip("light", _root.getNextHighestDepth());
player.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this._x -= walk_speed;
}
if (Key.isDown(Key.RIGHT)) {
this._x = walk_speed;
}
if (Key.isDown(Key.UP)) {
this._y -= walk_speed;
}
if (Key.isDown(Key.DOWN)) {
this._y = walk_speed;
}
while (_root.environment.hitTest(this._x, this._y radius, true)) {
this._y--;
}
while (_root.environment.hitTest(this._x, this._y-radius, true)) {
this._y ;
}
while (_root.environment.hitTest(this._x-radius, this._y, true)) {
this._x ;
}
while (_root.environment.hitTest(this._x radius, this._y, true)) {
this._x--;
}
dist_x = this._x-_root._xmouse;
dist_y = this._y-_root._ymouse;
angle = -Math.atan2(dist_x, dist_y);
this._rotation = angle/(Math.PI/180);
light.clear();
light.lineStyle(1, 0xffffff);
for (x=0; x<=torch_angle; x = (torch_angle/torch_angle_step)) {
light.moveTo(this._x, this._y);
ray_angle = angle/(Math.PI/180)-90-(torch_angle/2) x;
ray_angle = ray_angle*(Math.PI/180);
for (y=1; y<=torch_step; y ) {
if (environment.hitTest(this._x (torch_power/torch_step*y)*Math.cos(ray_angle), this._y (torch_power/torch_step*y)*Math.sin(ray_angle), true)) {
break;
}
}
light.lineTo(this._x (torch_power/torch_step*y)*Math.cos(ray_angle), this._y (torch_power/torch_step*y)*Math.sin(ray_angle));
}
};
效果如下。
我們再繼續(xù)修改代碼。
torch_power = 100;
torch_step = 100;
torch_angle = 60;
torch_angle_step = 20;
walk_speed = 3;
radius = 8;
_root.attachMovie("ground", "ground", _root.getNextHighestDepth());
_root.attachMovie("environment", "environment", _root.getNextHighestDepth());
_root.attachMovie("player", "player", _root.getNextHighestDepth(), {_x:250, _y:200});
_root.createEmptyMovieClip("light", _root.getNextHighestDepth());
player.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this._x -= walk_speed;
}
if (Key.isDown(Key.RIGHT)) {
this._x = walk_speed;
}
if (Key.isDown(Key.UP)) {
this._y -= walk_speed;
}
if (Key.isDown(Key.DOWN)) {
this._y = walk_speed;
}
while (_root.environment.hitTest(this._x, this._y radius, true)) {
this._y--;
}
while (_root.environment.hitTest(this._x, this._y-radius, true)) {
this._y ;
}
while (_root.environment.hitTest(this._x-radius, this._y, true)) {
this._x ;
}
while (_root.environment.hitTest(this._x radius, this._y, true)) {
this._x--;
}
dist_x = this._x-_root._xmouse;
dist_y = this._y-_root._ymouse;
angle = -Math.atan2(dist_x, dist_y);
this._rotation = angle/(Math.PI/180);
light.clear();
light.lineStyle(1, 0xffffff);
light.moveTo(this._x, this._y);
for (x=0; x<=torch_angle; x = (torch_angle/torch_angle_step)) {
ray_angle = angle/(Math.PI/180)-90-(torch_angle/2) x;
ray_angle = ray_angle*(Math.PI/180);
for (y=1; y<=torch_step; y ) {
if (environment.hitTest(this._x (torch_power/torch_step*y)*Math.cos(ray_angle), this._y (torch_power/torch_step*y)*Math.sin(ray_angle), true)) {
break;
}
}
light.lineTo(this._x (torch_power/torch_step*y)*Math.cos(ray_angle), this._y (torch_power/torch_step*y)*Math.sin(ray_angle));
}
light.lineTo(this._x, this._y);
};
效果如下。
我們再繼續(xù)修改代碼。
torch_power = 100;
torch_step = 100;
torch_angle = 60;
torch_angle_step = 20;
walk_speed = 3;
radius = 8;
_root.attachMovie("ground", "ground", _root.getNextHighestDepth());
_root.attachMovie("environment", "environment", _root.getNextHighestDepth());
_root.attachMovie("player", "player", _root.getNextHighestDepth(), {_x:250, _y:200});
_root.createEmptyMovieClip("light", _root.getNextHighestDepth());
player.onEnterFrame = function() {
if (Key.isDown(Key.LEFT)) {
this._x -= walk_speed;
}
if (Key.isDown(Key.RIGHT)) {
this._x = walk_speed;
}
if (Key.isDown(Key.UP)) {
this._y -= walk_speed;
}
if (Key.isDown(Key.DOWN)) {
this._y = walk_speed;
}
while (_root.environment.hitTest(this._x, this._y radius, true)) {
this._y--;
}
while (_root.environment.hitTest(this._x, this._y-radius, true)) {
this._y ;
}
while (_root.environment.hitTest(this._x-radius, this._y, true)) {
this._x ;
}
while (_root.environment.hitTest(this._x radius, this._y, true)) {
this._x--;
}
dist_x = this._x-_root._xmouse;
dist_y = this._y-_root._ymouse;
angle = -Math.atan2(dist_x, dist_y);
this._rotation = angle/(Math.PI/180);
light.clear();
light.beginFill(0xffffff, 100);
light.lineStyle(1, 0xffffff);
light.moveTo(this._x, this._y);
for (x=0; x<=torch_angle; x = (torch_angle/torch_angle_step)) {
ray_angle = angle/(Math.PI/180)-90-(torch_angle/2) x;
ray_angle = ray_angle*(Math.PI/180);
for (y=1; y<=torch_step; y ) {
if (environment.hitTest(this._x (torch_power/torch_step*y)*Math.cos(ray_angle), this._y (torch_power/torch_step*y)*Math.sin(ray_angle), true)) {
break;
}
}
light.lineTo(this._x (torch_power/torch_step*y)*Math.cos(ray_angle), this._y (torch_power/torch_step*y)*Math.sin(ray_angle));
}
light.lineTo(this._x, this._y);
light.endFill();
ground.setMask(light);
};
效果如下。
好了!今天先講到這里。最后給大家提供上面所有演示的源文件。點擊這里下載Fla源文件(431K自行查殺病毒)
分享:Flash教程:用AS實現(xiàn)右鍵菜單的最簡單方法非常簡單的代碼,把下面代碼直接放到新建立的Flash的第一幀varlinkURL=http://m.dounai2.com;varlinkText=連接到我的網(wǎng)站;//定義一個新的右鍵菜單項
- 相關(guān)鏈接:
- 教程說明:
Flash教程-Flash AS 制作生化危機游戲的簡單嘗試。