Flash actionscript3.0游戏开发
发布时间:2010年05月05日 10时27分18秒
属性:程序Web开发 > Adobe
访问次数:94593
Flash actionscript3.0游戏 开发
Flash 二维游戏思路,文章介绍flash实现二维座标角度,让鼠标点击指向目标点移动,让角色随着鼠标点击目标点,然后向目标点移动,并且显示鼠标点击目标点(焦点),舞台右上角为鼠标坐标显示.
所需要知识点:事件MouseEvent.MOUSE_MOVE、Event.ENTER_FRAME;坐标角度算法Math.atan2、
Math.round,下面是效果(鼠标放入场景中进行移动点击操作)。
1.显示是鼠标移动坐标;创建TextField用来显示鼠标的x、y的坐标,function moused建立鼠标事件,MouseEvent.MOUSE_MOVE让moused接收,下面是第一步的代码。
//(C)Copyright weisim3.com 05.04.2010
var Xlab:TextField=new TextField();
var Ylab:TextField=new TextField();
function moused(e:MouseEvent):void {
//trace("X:"+ mouseX+ "Y:"+ mouseY);
Xlab.text="X:"+mouseX;
Ylab.text="Y:"+mouseY;
Xlab.x=2;
Xlab.y=2;
Ylab.x=50;
Ylab.y=2;
addChild(Xlab);
addChild(Ylab);
}
stage.addEventListener(MouseEvent.MOUSE_MOVE,moused);
第一步的代码执行结果 将addChild(Xlab)和addChild(Ylab)是将两个
TextField加载在舞台显示出来(红色标头为游戏角色,在此是直接从库中拖放置舞台)。
2.鼠标点击事件,建立鼠标点击点function createPoint事件,在事件中addChild(myPoint)加载myPoint:point显示鼠标点击点,MouseEvent.CLICK点击让createPoint接收(只有点击才能接收), myPoint.x=stage.mouseX; myPoint.y=stage.mouseY;让鼠标的坐标x,y值赋给myPoint:point。第二步代码如下。
//(C)Copyright weisim3.com 05.04.2010
var Xlab:TextField=new TextField();
var Ylab:TextField=new TextField();
function moused(e:MouseEvent):void {
//trace("X:"+ mouseX+ "Y:"+ mouseY);
Xlab.text="X:"+mouseX;
Ylab.text="Y:"+mouseY;
Xlab.x=2;
Xlab.y=2;
Ylab.x=50;
Ylab.y=2;
addChild(Xlab);
addChild(Ylab);
}
stage.addEventListener(MouseEvent.MOUSE_MOVE,moused);
//第二步加入鼠标点击点,鼠标点击将显示myPoint:point,每点击一次将获取新的坐标点
var myPoint:point=new point();
function createPoint(e:MouseEvent):void {
myPoint.x=stage.mouseX;
myPoint.y=stage.mouseY;
addChild(myPoint);//建立目标点
}
stage.addEventListener(MouseEvent.CLICK,createPoint);
3.算法坐标角度算法,建立function run_Follow事件,在事件中进行角度算法用到Math.atan2(myPoint.y-myCharacher_mc.y,myPoint.x-myCharacher_mc.x)得出弧度,Math.round((myRadians*180/Math.PI)),算出角度使角色调转方向,myCharacher_mc.addEventListener(Event.ENTER_FRAME, run_Follow);接收run_Follow事件,而myCharacher_mc.addEventListener(Event.ENTER_FRAME, run_Follow);是放在function createPoint事件中执行,也就是鼠标点击后执行,myCharacher_mc即是角色红标头的舞台实例命名。
//(C)Copyright weisim3.com 05.04.2010
var Xlab:TextField=new TextField();
var Ylab:TextField=new TextField();
function moused(e:MouseEvent):void {
//trace("X:"+ mouseX+ "Y:"+ mouseY);
Xlab.text="X:"+mouseX;
Ylab.text="Y:"+mouseY;
Xlab.x=2;
Xlab.y=2;
Ylab.x=50;
Ylab.y=2;
addChild(Xlab);
addChild(Ylab);
}
stage.addEventListener(MouseEvent.MOUSE_MOVE,moused);
//trace(myCharacher_mc.y,myCharacher_mc.x,myCharacher_mc.rotation);
//第二步加入鼠标点击点
var myPoint:point=new point();
function createPoint(e:MouseEvent):void {
myPoint.x=stage.mouseX;
myPoint.y=stage.mouseY;
addChild(myPoint);//建立目标点
//第三步
myCharacher_mc.addEventListener(Event.ENTER_FRAME, run_Follow);
trace(myCharacher_mc.y,myCharacher_mc.x,myCharacher_mc.rotation);
}
stage.addEventListener(MouseEvent.CLICK,createPoint);
//第三步
//鼠标点击为物体的目标点(焦点中心),物体移向点击后的目标点
//Math.atan2使用
//Math.round使用
function run_Follow(event:Event):void {
// 目标中心点鼠标点击之后.
// 向目标点旋转(焦点)Math.atan2(y,x)
//角度制与弧度制的相互转换:
//弧度 = 角度 * Math.PI / 180
//角度 = 弧度 * 180 / Math.PI
var cRadians:Number=Math.atan2(myPoint.y-myCharacher_mc.y,myPoint.x-myCharacher_mc.x);//弧度
var cDegrees:Number = Math.round((cRadians*180/Math.PI));
// 向目标移动(焦点)
var yChange:Number=Math.round(myPoint.y-myCharacher_mc.y);
var xChange:Number=Math.round(myPoint.x-myCharacher_mc.x);
var yMove:Number=Math.round(yChange/20);//移动速度 负数将往相反方向移动
var xMove:Number=Math.round(xChange/20);//移动速度 负数将往相反方向移动
//调整方向向目标点移动
myCharacher_mc.rotation=cDegrees+90;
myCharacher_mc.y+=yMove;
myCharacher_mc.x+=xMove;
}
文章版权归属weisim3.com所有,未经书面版权许可同意,不得私自转载(或做修改转载),源文件示例仅供学习使用,更不要出于商业用途或印刷出版发行!否则将追究其相关法律责任,版权联系:729260499。