题目:
场景中有大小完全相同的100个正方体,且坐标一直在舞台内变化,请判断它们是否两两相撞。
先上效果图,用的网格型碰撞检测方法,参考了ActionScript3.0 高级动画教程 就是参考里面的做法。大概思路就是把屏幕分隔,根据坐标把物体放进不同的格子内,碰撞检测的时候遍历格子,首先进行格子内部物体的碰撞检测,然后检测格子内每个物体与周边格子物体的检测,至于周边之外的格子因为是碰撞不了的 所以也无需检测,主要是在这里节省了碰撞和循环次数。
下面是代码:
package
{
import flash.display.MovieClip;
import classes.*;
/**
* ...
* @author fengsser
*/
public class Main extends MovieClip
{
//[SWF(width = "550", height = "400", backgroundColor = "0x000000", frameRate = "30")]
public function Main() {
var game:Game = new Game(this.stage);
}
}
}
package classes
{
import flash.display.BitmapData;
import flash.display.Stage;
import flash.events.Event;
import flash.display.DisplayObject;
/**
* ...
* @author fengsser
* 游戏入口
*/
public class Game
{
var _stage:Stage;
var cubeArr:Vector.<DisplayObject>;//存放cube对象,Vctor对象代替数组增加效率
var cubeNum:uint = 120;//方块总数
//var sourceBMD:BitmapData;
var cubeSize:int = 10;
var girdCollision:GridCollision;
public function Game(_stage:Stage) {
this._stage = _stage;
cubeArr = new Vector.<DisplayObject>();
init();
}
public functio