flash地图游戏说明如何结合AS3.0使用


记得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

你可能感兴趣的:(游戏,UI,.net,qq,Flash)