日期:2014-05-20  浏览次数:20852 次

游戏中的判断
    植物战僵尸这个游戏,采用actionscript3.0。开发工具为fb4.5。已经种过植物的地位,如何判断已经有植物,不能在种?
 

import flash.display.Bitmap;
import flash.display.DisplayObject;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.geom.Point;
import flash.net.registerClassAlias;
import flash.text.TextField;
import flash.ui.Keyboard;
import flash.utils.ByteArray;
import flash.utils.Timer;
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;

import ghostcat.display.GBase;
import ghostcat.display.game.BackgroundLayer;
import ghostcat.display.game.CollisionSprite;
import ghostcat.display.movieclip.GMovieClip;
import ghostcat.events.OperationEvent;
import ghostcat.events.TickEvent;
import ghostcat.manager.AssetManager;
import ghostcat.manager.RootManager;
import ghostcat.operation.Oper;
import ghostcat.ui.CursorSprite;
import ghostcat.util.Tick;

public class BackGroud extends GBase
{
/**
 * 背景
 */
[Embed(source = 'assert/ba.jpg')]
private var _Backgrounds:Class; // 类名首字母大写,private成员以"_"开头
private var _bg:Bitmap = new _Backgrounds();
private var _swf:Oper = null; // SWF资源文件 
private var _title:Titles=new Titles();//工具
private var _titles:MovieClip=new MovieClip();
private var _sun:Sun=new Sun();//阳光出现
private var _suns:MovieClip=new MovieClip();
private var _flowersTimer:Timer=new Timer(3000);//阳光间隔
//public static const SUNWAIT:String = "大阳光掉落";
private var _moneyText:TextField=new TextField;//金钱
private var _money:uint=0;

private var _pt1:Point=new Point(10,10);//定义要偏移的坐标值
private var _dx:Number=2;
private var _dy:Number=2;
public function BackGroud():void
{
_swf = AssetManager.instance.loadResource("swf/完整植物7.swf"); // 加载与此.swf同目录下的.swf文件
_swf.addEventListener(OperationEvent.OPERATION_COMPLETE, swfLoaded); // 为加载过程添加消息处理函数

}
private function swfLoaded(e:Event):void{
_swf.removeEventListener(OperationEvent.OPERATION_COMPLETE, swfLoaded);  // 节省资源
this.addChild(_bg);
_titles=_title.addTitles();
this.addChild(_titles);
_flowersTimer.addEventListener(TimerEvent.TIMER, newSun);
_flowersTimer.start();
addText();
updateMoney()

}
/**
 *阳光随机出现
 */
private function newSun(e:TimerEvent):void{
_suns=_sun.addSun();
_suns.x=60+50*Math.floor(Math.random()*5);
_suns.y=60+100*Math.floor(Math.random()*5);
this.addChild(_suns);
_suns.addEventListener(Event.ENTER_FRAME,enters);
}
public function enters(e:Event):void{
if(_suns.y<150){
_suns.y++;
}else{
_suns.alpha-=0.001;
if(_suns.alpha<0){
if(this.contains(_suns)){
this.removeChild(_suns);
}
}
}
//if(_suns.y>=550){
//_suns.stop();
//}
_suns.addEventListener(MouseEvent.CLICK,sunClicked)
}

/**
 *阳光收集 
 */
public function sunClicked(e:MouseEvent):void{
e.currentTarget.removeEventListener(MouseEvent.CLICK,sunClicked);
_money+=25;
updateMoney();
var _ob:Object=e.currentTarget;
//stage.addEventListener(Event.ENTER_FRAME,enter);
if(this.contains(_suns)){
this.removeChild(_suns);
}
}

/**
 *金钱增加 
 */
private function addText():void {
_moneyText.textColor=0xFFFFF;
_moneyText.height=50;
_moneyText.x=15;
_moneyText.y=40;
addChild(_moneyText);
updateMoney();
}
private function updateMoney():void {
_moneyText.text="Money: "+_money.toString();
}



}
 这个是部分代码,不是全部代码。

------解决方案--------------------
结构体里面加个flag,根据坐标来判断吧。坐标肯定是有限的。