记得AS2.0帮助文档还未看到1/100时,AS3.0就铺天盖地席卷而来,本人在AS2.0到AS3.0的转变过程中苦闷过,记得刚接触AS3.0时真是一头雾水,有时真想摔本来就破的PC,转变是必经历阵痛,现在仍在阵痛期,也许还将持续很长时间的痛苦期,这是规律,没办法。为使像我这样的初学者少走一点点弯路,今天以一个最简单的游戏为例说明AS3.0中的一些使用方法。愿抛砖引玉,呼出高手。
先看效果:(方向键左右移动红色方块,设法到达蓝色方块所在地。)
(全as):
package sxl{//包路径,也就是建一个sxl文件夹,里面放此MainMap.as文件
import flash.display.Sprite;//显示对象容器
import flash.display.MovieClip;//方块需要附加坐标等属性,所以选它
import flash.display.DisplayObject;//不一一加注释了,自己看吧
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
import flash.display.StageScaleMode;
public class MainMap extends MovieClip {
/* | container 路与障碍方块容器 | man 游戏主角 | GoldCoin GoldPos_array GoldXY 金币 金币可待放置坐标 金币产生顺序
| Score_txt 得分 | row col 方块列数 方块行数 | W_H 正方形边长及水平与垂直每步行走幅度
| stageW stageH 场景的宽与高 | list_array 存贮所有地面方块(可通行绿色方块和障碍方块)
*/
private var container:Sprite=new Sprite;
private var man:MovieClip;
private var GoldCoin:MovieClip;
private var GoldPos_array:Array;
private var GoldXY:uint=0;
private var Score_txt:TextField;
private var row:uint=28;
private var col:uint=20;
private var W_H:uint=20;
private var stageW:uint=560;
private var stageH:uint=420;
private var list_array:Array;
public function MainMap() {
stage.scaleMode=StageScaleMode.NO_SCALE;
// 大背景
var Bg:MovieClip=new MovieClip;
createRect(Bg,stageW,stageH,0x808080,0xDCF76F);
addChild(Bg);
addChild(container);
initList_array();
// 创建主角
man=new MovieClip ;
createRect(man,W_H,W_H,0xFFFF00,0xFF0000);
man.x=0;
man.y=W_H;
man.X=0;
man.Y=0;
addChild(man);
// 创建上方背景
setTopBg();
// 创设地面
initMap();
}
//..... 创建上方背景区 ...................................................................
private function setTopBg() {
var topBg:MovieClip=new MovieClip;
createRect(topBg,560,W_H,0x000000,0xEEEEEE);
topBg.y=-1;
var title_txt:TextField=new TextField;
title_txt.text="by 老苏 QQ: 285510591 地图设置 得分:";
title_txt.width=400;
title_txt.height=18;
title_txt.x=10;
topBg.addChild(title_txt);
Score_txt=new TextField();
Score_txt.width=60;
Score_txt.height =18;
Score_txt.x=400;
topBg.addChild(Score_txt);
addChild(topBg);
var textBg:MovieClip=new MovieClip;
createRect(textBg,55,16,0xEEEEEE,0xEEEEEE);
textBg.x=500;
var txt:TextField=new TextField;
txt.text=" 魔法地图";
txt.height=18;
txt.width=55;
textBg.addChild(txt);
textBg.mouseChildren=false;
textBg.addEventListener(MouseEvent.CLICK,onReSet);
addChild(textBg);
}
//..... 重新设置主角和地面区 .....................................................................
private function onReSet(event:MouseEvent) {
if (GoldXY>0) {
GoldXY--;
var score:uint =GoldXY*50;
Score_txt.text=String(score);
} else {
Score_txt.text="魔法用完";
event.target.removeEventListener(MouseEvent.CLICK,onReSet);
}
// 创建主角
man=new MovieClip ;
createRect(man,W_H,W_H,0xFFFF00,0xFF0000);
man.x=0;
man.y=W_H;
man.X=0;
man.Y=0;
addChild(man);
// 重新设置地图
reSetMap();
}
//..... 重新设置地面区 .........................................................................
private function reSetMap() {
// 清除container容器中的子元素(即所有地面方块:绿色方块和障碍方块)
var long:int=container.numChildren - 1;
for (var i:int=long; i >= 0; i--) {
container.removeChildAt(i);
}
stage.removeEventListener(KeyboardEvent.KEY_DOWN,onKeyDowns);
//清除list_array数组中元素,并初始化它为二维数组
initList_array();
//铺设地面方块
initMap();
}
// 初始化 list_array 为二维数组
private function initList_array() {
list_array=[];
for (var i:uint=0; i
源文件下载:
map.rar
本文转自:http://www.5uflash.com/flashjiaocheng/Flash-as3-jiaocheng/4426.html