Flash Actionscript WebGame背包的实现
Flash AS3中AStar(A星)寻路方法
主视图类
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import com.astar.AStar;
import com.astar.Grid;
import com.astar.Node;
/**
* 主视图类
* */
public class MainView extends Sprite
{
//网格的大小
private var cellSize:int=10;
//网格实例
private var grid:Grid;
//玩家人物,就是红色小球
private var player:Player;
//路径数组索引
private var index:int;
//Astar找到的路径
private var path:Array;
//开始按钮
private var btnStart:Button;
public function MainView()
{
super();
initBtn();
initPlayer();
initGrid();
setStartEnd();
}
/**初始化按钮*/
private function initBtn():void
{
btnStart=new Button(50, 20, "START");
btnStart.x=200;
btnStart.y=0;
btnStart.addEventListener(MouseEvent.CLICK, btnStartHandler);
addChild(btnStart);
}
/**初始化玩家*/
private function initPlayer():void
{
player=new Player(10);
player.x=10;
player.y=590;
addChild(player);
}
/**初始化网格、节点数量*/
private function initGrid():void
{
//本例子是30 * 30的,要多少自己调
grid=new Grid(30, 30);
//按题目铺设的障碍,也可以随机铺设
for (var i:int=0; i < 10; i++)
{
grid.setWalkable(i, i + 15, false);
}
for (var j:int=10; j < 30; j++)
{
grid.setWalkable(j, j, false);
}
for (var k:int=15; k < 25; k++)
{
grid.setWalkable(k, k - 15, false);
}
//绘画可视网格
drawGrid();
}
/**画网格,为障碍填充颜色*/
private function drawGrid():void
{
this.graphics.clear();
for (var i:int=0; i < grid.numCol; i++)
{
for (var j:int=0; j < grid.numRow; j++)
{
var node:Node=grid.getNode(i, j);
this.graphics.lineStyle(0);
this.graphics.beginFill(getNodeColor(node));
this.graphics.drawRect(i * cellSize, j * cellSize, cellSize, cellSize);
this.graphics.endFill();
}
}
}
/**根据节点是否能通过来着色*/
private function getNodeColor(node:Node):uint
{
if (node.walkable == false)
return 0;
return 0xffffff;
}
/**设置起点终点*/
private function setStartEnd():void
{
//可自行设置,起点可以随机,终点可采用鼠标点击生成
grid.setStartNode(0, 29);
grid.setEndNode(29, 0);
}
/**开始寻路*/
private function btnStartHandler(event:MouseEvent):void
{
//重新绘图
drawGrid();
//寻路
findPath();
}
/**调用AStar中的寻路*/
private function findPath():void
{
var aStar:AStar=new AStar();
//如果返回的是真,则说明找到路径,添加侦听绘制可视化路径
if (aStar.findPath(grid))
{
path=aStar.path;
index=0;
addEventListener(Event.ENTER_FRAME, efHandler);
}
}
/**每帧的动画处理*/
private function efHandler(event:Event):void
{
//经过的节点
var passedNode:Node=path[index];
//将走过的节点填充为黄色
this.graphics.lineStyle(0);
this.graphics.beginFill(0xffff00);
this.graphics.drawRect(passedNode.x * cellSize, passedNode.y * cellSize, cellSize, cellSize);
//当前目标中心点 = 节点的行列 * 格子宽高 + 格子大小的一半
var targetX:int=path[index].x * cellSize + cellSize / 2;
var targetY:int=path[index].y * cellSize + cellSize / 2;
var dx:int=targetX - player.x;
var dy:int=targetY - player.y;
//路径数组索引++,当索引大于等于路径数组长度时删除侦听
index++;
if (index >= path.length)
{
removeEventListener(Event.ENTER_FRAME, efHandler);
}
//玩家人物移动一格
player.x+=dx;
player.y+=dy;
}
}
}
Flash游戏 – 利用FLEX Adobe AIR程序切序列帧对坐标
最近做页游项目,需要将人物跑动的序列帧切成最小以提高程序效率,于是我写了这个小程序。
protected function CutButton_clickHandler(event:MouseEvent):void
{
/* 新建文件夹 */
if(!_selectedFolder)
return;
_fileList = new Array();
var temp:Array = _selectedFolder.getDirectoryListing();
for (var i:uint = 0; i < temp.length; i++)
{
if(!temp[i].isDirectory){
var afterfix:Array = (temp[i].name as String).split(".");
if(afterfix[afterfix.length-1] == "png")
_fileList.push(temp[i]);
}
}
if(_fileList.length>0){
_curPicIndex = 0;
_loadPng = new LoadPng();
_cut = new CutAction();
addEventListener("finish",nextCut);
progressBar.visible = true;
cutButton.enabled = false;
fileSystemTree.enabled = false;
_saveFolder = _selectedFolder.resolvePath("new");
_saveFolder.createDirectory();
nextCut();
}
}
火车票预定之二
火车票自动订购软件 我要回家(Go-Home)自动订票软件2012绿色版 http://dl.dbank.com/c0tggl2l3r
本程序为java语言编写,使用时依赖jre(java runtime environment),且版本必须大于1.6,对应不熟悉的朋友建议直接使用[360软件管家or其他同类软件]搜索java,然后安装Java Runtime Environment 6
火车票预定之一
域名免费转出
看图吧,不想说话,在天朝各种蛋疼,在此仅问候他们家一户口本!
我们就这样屈服了么?不能!有网友提供了如下攻略:
前提:
你的域名必须符合规定的允许转出的条件,比如离注册或续费时间60天以上,离到期时间30天以上。
你要能登入域名所有人的邮箱。不记得的可以用whois来查询域名所有人的邮箱。
步骤:
如果你要转出,先联系原来的国内域名注册服务商,要求转出。 阅读更多…
使用MySQL内置函数将IP地址字符串转为无符号整数进行存取
在一般应用中,我们可以把ip地址转换成无符号整数来存储,这样的好处是存储空间小,索引空间小,速度快。
MySQL内置函数inet_aton()和inet_ntoa()就可以实现ip和整数的互转,其中inet_aton()将ip转成整数,而inet_ntoa()则将整数再还原为ip.
使用方法: INET_ATON(expr) 给出一个作为字符串的网络地址的”点地址”(如127.0.0.1)表示,返回一个代表该地址数值的整数。地址可以是4或8比特地址。
mysql> SELECT INET_ATON(’209.207.224.40′); -> 3520061480 产生的数字总是按照网络字节顺序。 阅读更多…
SQL语句优化
1、用程序中,保证在实现功能的基础上,尽量减少对数据库的访问次数;
2、通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担;
3、能够分开的操作尽量分开处理,提高每次的响应速度;
4、在数据窗口使用SQL时,尽量把使用的索引放在选择的首列;
5、算法的结构尽量简单;
6、在查询时,不要过多地使 用通配符如SELECT * FROM T1语句,要用到几列就选择几列如:SELECT COL1,COL2 FROM T1; 阅读更多…
WIN7 VHD试玩四:其他小应用
VHD不是仅仅用来装系统,其他地方照样可以用。比如童鞋们玩的魔兽世界喜欢被病毒感染客户端,我们就可以用VHD来保护我们的客户端。
首先创建VHD,格式化,并将客户端拖入其中。
diskpart
Creste vdisk file=D:\game\wow.vhd type=fixed maximum=20000
Select vdisk file=D:\game\wow.vhd
Attach vdisk
Exit
复制文件吧。。。半个小时后回来。。。
diskpart
Select vdisk file=D:\game\wow.vhd
detach vdisk
create vdisk file=”D:\game\wow_temp.vhd” parent=”D:\game\wow.vhd”
Exit
工作做完了,下面是我做好的批处理,童鞋们修改下路径就可以用了。
开机启动.bat
rem 我要玩WOW…
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”
我的客户端被感染了,我要还原!.bat
rem 卸载wow_temp.vhd并将之删除
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo detach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow_temp.vhd”
del “D:\game\wow.txt”
rem 创建新wow_temp.vhd并加载
echo create vdisk file=”D:\game\wow_temp.vhd” parent=”D:\game\wow.vhd” > “D:\game\wow.txt”
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”
我要更新我的客户端!.bat
rem 更新客户端中,请勿浏览神马神马电影网站。。。
echo select vdisk file=”D:\game\wow.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”
更新完了.bat
rem 我更新完了,我要上线做日常…
del “D:\game\wow_temp.vhd”
echo select vdisk file=”D:\game\wow.vhd” >> “D:\game\wow.txt”
echo detach vdisk >> “D:\game\wow.txt”
echo create vdisk file=”D:\game\wow_temp.vhd” parent=”D:\game\wow.vhd”>> “D:\game\wow.txt”
echo select vdisk file=”D:\game\wow_temp.vhd” >> “D:\game\wow.txt”
echo attach vdisk >> “D:\game\wow.txt”
diskpart /s “D:\game\wow.txt”
del “D:\game\wow.txt”
