麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 辦公 > Flash > 正文

Flash AS3教程:小游戲開發(fā)實戰(zhàn)嘗試

2020-07-17 13:17:37
字體:
供稿:網(wǎng)友
前面講解了Flash AS3教程:Direction類和Dot類,前面都是理論的講解,這篇來一個實戰(zhàn),做一個類似坦克游戲的程序。
http://www.companysz.com/files/media/dirtanke.swf
這幾天也寫了一些類了,是驢子還是騾子,拿出來遛一遛就知道了,先看這個上面這個flash動畫!

一個類似坦克游戲的demo程序
使用Direction類來進行方向控制
使用Dot類來計算距離
用上Direction類和Dot類之后,這個demo程序變得異常簡單額。。
也沒什么好說,主要透過這個例子,讓大家類熟悉Direction類和Dot類的使用方法
不懂的可以在后面跟帖提問,高手如果看到什么有錯誤的地方,請指正出來,多謝指教

下面是fla的源代碼:

CODE:
import index.base.game.Direction;
import index.base.events.DirectionEvent;
import index.base.geom.Dot;

//舞臺屬性設(shè)置
stage.showDefaultContextMenu = false;
stage.align = "TL";
stage.scaleMode = "noScale";

//創(chuàng)建坦克
var tank:Tank = new Tank;
tank.x = tank.y = 250;
addChild(tank);

//創(chuàng)建綁定坦克的點
var dot:Dot = new Dot;
dot.bind(tank);

//坦克移動
var dirTank:Direction = new Direction(stage);
//炮臺轉(zhuǎn)動
var dirTower:Direction = new Direction(stage,true,87,83,65,68);

//坦克炮臺事件
dirTank.addEventListener(DirectionEvent.DO,doTankFun);
dirTower.addEventListener(DirectionEvent.DO,doTowerFun);

//坦克移動
function doTankFun(e:DirectionEvent):void{
if(e.up){
dot.go(2,true);
}
if(e.down){
dot.go(-2,true);
}
if(e.left){
tank.rotation -= 2;
}
if(e.right){
tank.rotation = 2;
}
if(tank.x < 0) tank.x = 0;
if(tank.y < 0) tank.y = 0;
if(tank.x > stage.stageWidth) tank.x = stage.stageWidth;
if(tank.y > stage.stageHeight) tank.y = stage.stageHeight;
}

//是否可以發(fā)射炮臺,子彈
var isBullet:Boolean = true;
var isShell:Boolean = true;
//炮臺發(fā)射轉(zhuǎn)動
function doTowerFun(e:DirectionEvent):void{
if(e.up && isBullet){
var bullet:Bullet = new Bullet;
bullet.x = tank.x;
bullet.y = tank.y;
bullet.rotation = tank.rotation tank.tower.rotation;
bullet.addEventListener(Event.ENTER_FRAME,bulletFun);
addChild(bullet);

isBullet = false;
setTimeout(function(){isBullet = true},200);
}
if(e.down && isShell){
var shell:Shell = new Shell;
shell.x = tank.x;
shell.y = tank.y;
shell.rotation = tank.rotation;
shell.addEventListener(Event.ENTER_FRAME,shellFun);
addChild(shell);

isShell = false;
setTimeout(function(){isShell = true},500);
}
if(e.left){
tank.tower.rotation -= 5;
}
if(e.right){
tank.tower.rotation = 5;
}
}

//炮臺
function shellFun(e:Event):void{
var tmp:Shell = e.currentTarget as Shell;
var d:Dot = new Dot(tmp.x,tmp.y,tmp.rotation);
d.bind(tmp);
d.go(4,true);
if(tmp.x < 0 || tmp.x > stage.stageWidth || tmp.y < 0 || tmp.y > stage.stageHeight){
removeChild(tmp);
tmp.removeEventListener(Event.ENTER_FRAME,shellFun);
}

tmp = null;
d = null;
}

//子彈
function bulletFun(e:Event):void{
var tmp:Bullet = e.currentTarget as Bullet;
var d:Dot = new Dot(tmp.x,tmp.y,tmp.rotation);
d.bind(tmp);
d.go(5,true);
if(tmp.x < 0 || tmp.x > stage.stageWidth || tmp.y < 0 || tmp.y > stage.stageHeight){
removeChild(tmp);
tmp.removeEventListener(Event.ENTER_FRAME,bulletFun);
}

tmp = null;
d = null;
}
另外注意源代碼,有個地方多次對tank的tower屬性就行引用,并且返回他的x,y或者旋轉(zhuǎn)值,有人就會問了,as3不是不支持類似mc那樣的直接訪問顯示對象,為什么我這兒卻可以?
愿意是我把素材綁定在Tank類上,并且對Tank類做了以下編寫:

CODE:
package{

import flash.display.Sprite;

public class Tank extends Sprite{

public function Tank(){

}

public function get tower():Sprite{
return towerMc;
}
}
}
光看這個類,也許你還是不明白,是什么原因,為什么會多出來一個towerMc出來,詳細的原因,請自己下載提供的源文件,下載下來看看吧。。不懂跟帖問!
點擊下載源文件

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 欧美一级淫片免费视频黄 | 国产91九色在线播放 | www.99xxxx.com| 91久久精品一二三区 | 在线免费av观看 | 成人免费影院 | 国产精品jk白丝蜜臀av软件 | 欧美日韩免费看 | 国产精品一区二区视频 | 俄罗斯16一20sex牲色另类 | 羞羞视频免费视频欧美 | 成熟女人特级毛片www免费 | 久久久青 | 国产一区二区在线免费 | 精品三区视频 | 精品亚洲夜色av98在线观看 | 精品一区二区在线播放 | 热99精品视频 | 免费久久久久久 | 日韩99| 欧美成人免费电影 | 男女无套免费视频 | 久久另类视频 | 久久久婷婷一区二区三区不卡 | 国产亚洲精品久久午夜玫瑰园 | 青草久久av| 久久免费视频3 | 成人在线视频免费 | 国产毛毛片一区二区三区四区 | 国产大片全部免费看 | 插插操| 成人免费毛片在线观看 | 羞羞视频免费视频欧美 | 毛片在线看免费 | 亚洲欧美日韩久久精品第一区 | 欧美福利视频一区二区三区 | 成人毛片100免费观看 | 欧美精品亚洲人成在线观看 | 国产一级aa大片毛片 | 一区在线不卡 | av在线试看 |